Newsgroup: it.comp.lang.visual-basic
Titolo: eseguire query da vba

Salve a tutti,
ho un problema, fino ad ora, tramite vba, ho importato da un database
access i dati tramite codice SQL delle varie query. Tutto questo
tramite una connessione al database e vari recordset come
nell'esempio.
Dim Connection_String As String
        Connection_String = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
                        "Data Source= C:\DB_Access\DB_Access.mdb;" + _
                        "Persist Security Info=False"
    Set DB_Conn_prova = New ADODB.Connection
        DB_Conn_prova.ConnectionString = Connection_String
        DB_Conn_prova.CommandTimeout = 0
    DB_Conn_prova.Open
Dim Select_query_1 As String
Select_query_1 = "SELECT ..."
Set elenco_viaggi = New ADODB.Recordset
      elenco_viaggi.CursorType = adOpenKeyset
      elenco_viaggi.CursorLocation = adUseClientDim Connection_String
As String
      elenco_viaggi.LockType = adLockOptimistic
elenco_viaggi.Open Select_query_1, DB_Conn_prova
ora però da vba mi serve il risultato di una query basata su un'altra
query ed entrambe sono parametriche. come faccio? ripetendo la
procedura utilizzata in precedenza (query basate su tabelle) in questo
caso mi da errore: nessun valore specificato per i parametri
necessari.
grazie

 necessari.
Puoi fare una query mappata sul DB e fare una query su quella.
Ma probabilmente con una JOIN ad hoc si riesce a farlo, posta la struttura
delle tabelle e quello che ti serve tirar fuori.

On 22 Set, 16:28, "Andrea [Work]"

cerco di spiegare il database e quello che fa la query di query:
nel database ho la tabella origine, destinazione, trasportatori,
compatibilità tra o\d, capacità origine, capacità destinazione,
capacità trasportatori...il tutto per diversi giorni della settimana.
la prima query di selezione seleziona la coppie o\d compatibili
relativi al giorno della settimana da me immesso,
a questo punto ho fatto una query di selezione sul risultato di
quest'ultima query per ottenere una tripla composta da
origine1,origine2, destinazione. Questa query utilizza la prima query
e una sua alias ed è stato impostato che origine1 diverso da origine2,
origine1 e origine2 compatibili con la destinazione.
se nella prima query invece di scrivere [indica data] nel campo
criteri metto una data, la eseguo, la salvo e la chiudo e avvio VBA in
cui c'è il codice SQL relativo alla seconda query tutto funziona; se
cambio data in VBA mi genera errore;
se invece lascio [indica data] in access, quando avvio VBA e immetto
una qualsiasi data mi genera errore.
allora avevo pensato di far eseguire la prima query da VBA tramite
Docmd.RunSQL ma RunSQL funziona solo con query di comando e non di
selezione; allora ho provato con Docmd.OpenQuery ma ottengo il
messaggio di avviso: attendere l'altra applicazione deve completare
l'azione OLE
Dim Select_query_1 As String
       Select_query_1 = "SELECT ...
    Set elenco_viaggi = New ADODB.Recordset
        elenco_viaggi.CursorType = adOpenKeyset
        elenco_viaggi.CursorLocation = adUseClient
        elenco_viaggi.LockType = adLockOptimistic
    elenco_viaggi.Open Select_query_1, DB_Conn_prova
    'Dim appAccess As New Access.Application
    'appAccess.OpenCurrentDatabase ("C:\DB_Access\DB_Access.mdb")
    'appAccess.Docmd.RunSQL
SQL                                                        'funziona
solo con query di comando
    'appAccess.Docmd.OpenQuery "query 1"
'attendere l'altra applicazione deve completare la'zione OLE