Michele
2023-12-05 10:40:56 UTC
Buongiorno a tutti,
come ho detto un po' di tempo fa ho alcune query molto lente.
Ho provato a riscriverle in modalità pass-through, però alcune volte mi hanno dato errore ed essendo importante che queste query non generino errori, ho lasciato tutto così.
Adesso ci sto riprovando quindi vi descrivo la situazione attuale.
Ho una select query1s che ha come parametro forms!form1!comm che coinvolge sia tabelle collegate tramite odbc che una tabella locale.
io eseguo la query1i che è del tipo
insert into tblLocale ( ) ... select .... from query1s
al momento quindi il codice è
forms!form1!comm = mycomm
docmd.openquery "query1i"
e questo è diventato
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
set dbs = currentdb
Set qdf = dbs.QueryDefs("query1i")
qdf.Parameters("[ncomm]") = mycomm
qdf.Execute dbFailOnError
e questo funziona!
adesso ho una seconda query query2s che utilizza la prima query, query1s, collegata ad altre tabelle (tutte collegate tramite odbc) e io eseguo la query query2i che prende i valori di query2s e li mette nella stessa tabella locale di query1s.
la query2i mi dà errore 3146 "ODBC - Connessione al server fallita"
se invece di Execute provo a lanciare
set rst = qdf.OpenRecordset("query2s")
ottengo un errore 3001 "Argomento non valido"
Ovviamente invece con RunSql oppure OpenQuery le stesse query non danno problemi inserendo come "parametro" forms!form1!comm.
Cosa posso fare per capirci qualcosa in più secondo voi?
come ho detto un po' di tempo fa ho alcune query molto lente.
Ho provato a riscriverle in modalità pass-through, però alcune volte mi hanno dato errore ed essendo importante che queste query non generino errori, ho lasciato tutto così.
Adesso ci sto riprovando quindi vi descrivo la situazione attuale.
Ho una select query1s che ha come parametro forms!form1!comm che coinvolge sia tabelle collegate tramite odbc che una tabella locale.
io eseguo la query1i che è del tipo
insert into tblLocale ( ) ... select .... from query1s
al momento quindi il codice è
forms!form1!comm = mycomm
docmd.openquery "query1i"
e questo è diventato
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
set dbs = currentdb
Set qdf = dbs.QueryDefs("query1i")
qdf.Parameters("[ncomm]") = mycomm
qdf.Execute dbFailOnError
e questo funziona!
adesso ho una seconda query query2s che utilizza la prima query, query1s, collegata ad altre tabelle (tutte collegate tramite odbc) e io eseguo la query query2i che prende i valori di query2s e li mette nella stessa tabella locale di query1s.
la query2i mi dà errore 3146 "ODBC - Connessione al server fallita"
se invece di Execute provo a lanciare
set rst = qdf.OpenRecordset("query2s")
ottengo un errore 3001 "Argomento non valido"
Ovviamente invece con RunSql oppure OpenQuery le stesse query non danno problemi inserendo come "parametro" forms!form1!comm.
Cosa posso fare per capirci qualcosa in più secondo voi?