
Set rs = conn.Execute("SELECT ... FROM ...") (eventualmente anche con una serie di schifezze JOIN annidate), lo puoi scorrere con While not rs.eof e assegni alle celle Excel il risultato di ogni rs.MoveNext.
'Ho 6 function di questo tipo che mi creano le 6 connessioni Function ExecQuery1(strsql) As ADODB.Recordset Const adOpenStatic = 3 Const adUseClient = 3 Const adLockBatchOptimistic = 4 Dim oRS As ADODB.Recordset Dim conn1 As ADODB.Connection Set conn1 = New ADODB.Connection conn1.Open DSN, UID, PWD .. 'Creo la tabella Set oRS = New ADODB.Recordset oRS.CursorLocation = adUseClient 'Popolo la tabella oRS.Open strsql, conn1, adOpenStatic, adLockBatchOptimistic 'Disconnetto il recordset Set oRS.ActiveConnection = Nothing 'Ritorno al Recordset Set ExecQuery1 = oRS conn1.Close Set conn1 = Nothing End Function Sub prova Dim DB1, DB2, DB3, DB4, DB5, DB6 As ADODB.Recordset Dim sql As String sql = "......." Set DB1 = ExecQuery1(sql) sql = "......." Set DB2 = ExecQuery2(sql) sql = "......." Set DB3 = ExecQuery3(sql) sql = "......." Set DB4 = ExecQuery4(sql) sql = "......." Set DB5 = ExecQuery5(sql) sql = "......." Set DB6 = ExecQuery6(sql) 'A questo punto ho creato i 6 recordset. Come posso creare ora un recordset che mi metta in join i recordset? |
Sub prova Dim DB1 As ADODB.Recordset Dim DB2 As ADODB.Recordset Dim DB3 As ADODB.Recordset Dim DB4 As ADODB.Recordset Dim DB5 As ADODB.Recordset Dim DB6 As ADODB.Recordset Dim sql As String sql = "SELECT NOME, GRUPPO, VALORE FROM TABELLA1 " Set DB1 = ExecQuery1(sql) --> Eseguo il codice 'sql' sulla conn1 sql = "SELECT NOME, GRUPPO, VALORE FROM TABELLA2 " Set DB2 = ExecQuery2(sql) --> Eseguo il codice 'sql' sulla conn2 sql = "SELECT NOME, GRUPPO, VALORE FROM TABELLA3 " Set DB3 = ExecQuery3(sql) --> Eseguo il codice 'sql' sulla conn3 sql = "SELECT NOME, GRUPPO, VALORE FROM TABELLA4 " Set DB4 = ExecQuery4(sql) --> Eseguo il codice 'sql' sulla conn4 sql = "SELECT NOME, GRUPPO, VALORE FROM TABELLA5 " Set DB1 = ExecQuery5(sql) --> Eseguo il codice 'sql' sulla conn5 sql = "SELECT NOME, GRUPPO, VALORE FROM TABELLA6 " Set DB1 = ExecQuery6(sql) --> Eseguo il codice 'sql' sulla conn6 |
Sub prova
Dim rs As ADODB.Recordset
Dim sql As String
sql = "SELECT mytable.NOME, mytable.GRUPPO, Sum(mytable.VALORE) AS SOMMA_VALORE
FROM [SELECT NOME, GRUPPO, VALORE FROM DB1
UNION SELECT NOME, GRUPPO, VALORE FROM DB2
UNION SELECT NOME, GRUPPO, VALORE FROM DB3
UNION SELECT NOME, GRUPPO, VALORE FROM DB4
UNION SELECT NOME, GRUPPO, VALORE FROM DB5
UNION SELECT NOME, GRUPPO, VALORE FROM DB6]. AS mytable
GROUP BY mytable.NOME, mytable.GRUPPO; "
Set rs = ExecQuery1(sql)
rs.movefirst
'ora scorri il recordset!
while not rs.eof
msgbox rs("nome")
rs.movenext
wend
End Sub |
