Pentru a demonstra rezultatele limbajului SQL, exemplele următoare propun două proceduri echivalente, una folosind limbajul SQL, cealaltă nu.
Pentru a realiza aceste exemple, se crează un tabel Clienţi având câmpurile Cli_Societate, Cli_Ţară şi Cli_Oraş şi se tastează câteva înregistrări în acest tabel.
ACTUALIZAREA ÎNREGISTRĂRILOR
Codul din exemplul următor permite modificarea conţinutului unui câmp dintr-un tabel pentru înregistrările ce corespund criteriilor.
Codul VBA ce utilizează o interogare SQL de tip UPDATE | |
Private Sub Maj_Plati() Dim cncDeviz As ADODB.Connection Dim strSQL As Sring `Actualizarea codului ţării din tabelul Clienţi Set CncDeviz = CurrentProject.Connection strSQL = „UPDATE Clients SET Clients.Cli_Plati = `RO` _ & „WHERE Clienti.Cli_Oras = „Timisoara” cncDeviz.Execute strSQL END SUB |
Codul VBA echivalent fără interogarea SQL
Private Sub Maj_Plati() Dim cncDeviz As ADODB.Connection Dim rstClient As ADODB.RecordSet |
` Deschidere pentru înregistrare Set CncDeviz = CurrentProject.Connection Set rstClient = New ADODB.RecordSet rstClient.Open „Clienti”, cncDeviz, adOpenForwardOnly,_ adLockOptimistic |
`Parcurgerea secvenţială a tabelului Clienţi Do While Not rstClient.EOF If rstClienti(„Cli_Oras”)= „Timisoara” Then rstClient(„Cli_Plata”)= „RO” rstClient.Update EndIf rstClient.MoveNext Loop End Sub |
ÎNCĂRCAREA UNEI LISTE DERULANTE
Codul exemplului de mai jos permite afişarea într-o listă derulantă (controlul zonă de listă) a numelui clienţilor a căror nume de Societate începe cu o listă dată (litera este scrisă într-o zonă de text).
Pentru a testa acest exemplu:
- se crează un formular numit Clienţi
- se adaugă controalele următoare în acest formular:
- o zonă de text (txtNameSoc),
- o zonă de listă (IstSoc),
- un buton de comandă (cmdLista1).
Codul VBA ce utilizează interogarea SQL de tipul SELECT. Conţinutul listei este rezultatul interogării SQL.
Private Sub cmdListe1_Click() Dim strSQL As Sring `Controlul numelui scris If txt numeSoc = „ „ Then MSGBOX(„Trebuie să tastaţi cel puţin o literă”, _ txtNumeSoc.SetFocus Exit Sub End If `Proprietăţi ale listei derulante `Lista conţine o interogare Me.lstSoc.RowSourceType = „Table/Interogare” strSQL = „SELECT Clienti.Cli_Societate Like `”& _ Me.txtNumeSoc & „*` Me.lstSoc.RowSource = strSQL `Reactualizarea datelor listei Me.lstSoc.Interogare End Sub |
Codul VBA echivalent fără interogarea SQL.
Private Sub cmdListe1_Click() Dim cncDeviz As ADODB.Connection Dim rstClient As ADODB.RecordSet Dim strNumeSoc as String `Controlarea numelui scris If txtNumeSoc = „ „ Or IsNull(txtNumeSoc) Then MSGBOX(„Numele acesta a mai fost introdus”, vbExclamation) txtNumeSoc.SetFocus Exit Sub End If `Iniţializarea listei derulante `Lista conţine o suită de valori Me.lstSoc.RowSourceType = „Lista de valori” Me.lstSoc.RowSource = „ „ Me.lstSoc.Requery `Deschiderea unui set de înregistrări Set cncDeviz = CurrentProject.Connection Set rstClient = New ADODB.Recordset rstClient.Open „Clienti”, cncDeviz, adOpenForwardOnly, _ adLockOptimistic ` Parcurgere secvenţială a tabelului şi adăugarea elementelor în listă Do While Not rstClienti.EOF If Left(rst(Client(„Cli_Societate”),1) = _ Left(MetxtNumeSoc, Len(Me.txtNumeSoc)) Then strNumeSoc = rstClient(„Cli_Societate”) Me.LstSoc.AddItem strNumeSoc End If rstClient.close End Sub |
Observaţie:
- Exemplele precedente constată faptul că codul ce utilizează SQL este mai scurt şi execuţia sa este mai rapidă în special dacă tabelul client conţine un număr important de înregistrări.
Niciun comentariu:
Trimiteți un comentariu