sintassi:
occorre aggiungere delle funzioni per la connessione della ConnectionString e la creazione del Recordset
' funzioni di database SQL
Dim cnn As New ADODB.Connection' posizionamento cursore
Dim rs As New ADODB.Recordset
Dim strSQL As String
' apertura ConnectionString con file attivo (in caso indicare nome del file da linkare)If cnn.State = adStateOpen Then cnn.Closecnn.Open
cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _ActiveWorkbook.Path & _
Application.PathSeparator & _
ActiveWorkbook.Name
rs.CursorLocation = adUseClient
strSQL = "Select .... " & _ si inserisce in una stringa una query SQL
"From [NOMESCHEDA$] " & _
"WHERE ....."
If rs.State = adStateOpen Then rs.Close controllare sempre lo ststo del Recordset ed in caso chiuderlo (altrmenti da errore)
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic apertura Recordset
rs.Close
cnn.Close
comandi .NET:
esempio: faccio una query in una scheda di dati per trovare la somma SUM di una colonna in base a una condizione
' Query SQL e apertura Recordset
strSQL = "Select SUM([Colonna importi]) " & _"From [Scheda Dati$] " & _
"WHERE [NetworkName] <>'Network eliminato'"
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
MsgBox ("Oggi abbiamo " & Chr(10) & Format(rs.Fields(0), #,###.00") & Chr(10) & "di somma")
esempio: faccio una query e poi inserisco i record in una ComboBox
' Query SQL e apertura Recordset
strSQL = "Select Distinct [Product] From [data$] Order by [Product]"cmbProducts.Clear cancello tutti i dati della ComboBox
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
Do While Not rs.EOF ciclo fino alla fine dei record EOFEnd IfcmbProducts.AddItem rs.Fields(0) inserisco il record attuale che é sempre quello 0Loop
rs.MoveNext passo al record seguente
esempio: inserisco ad una estrazione anche i nomi dei campi
' Query SQL e apertura Recordset
strSQL = "Select * From [data$] ..."
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
Worksheets("Finale").Cells(1, x + 1).Value = rs.Fields(x).NameNext
esempio: scrivi i dati della query partendo dalla cella attiva
ActiveCell.CopyFromRecordset rs
esempio: metti il risultato della operazione (ex SUM) nella cella L6
Range("L6").CopyFromRecordset rs