Newsgroup: it.comp.appl.access
Titolo: Query che chiede parametri SOLO se eseguita da codice... come fare?

Allora...
ho una query che ha 2 parametri (2 controlli non associati di un form)
Con il form in questione aperto ed i controlli in questione setati su
valori validi accade che:
- se apro la query da finestra DB funziona tutto
-se apro la query da codice access genera un errore che dice che la
query ha bisogno di 2 parametri... in pratica access aprendo la query
da codice non riconosce il nome dei controlli della form (che è
aperta)
da codice uso
set rst=dbs.openrecordset("nome query", dbOpenSnapshot)
ed i parametri nella query sono qualcosa tipo 
[forms]![nomemaschera]![nomecontrollo]
perchè non mi riconosce i nomi dei controlli da codice?
tra l'altro non posso nemmeno scrivere il codice SQL direttamente nel
VB... in quanto la query in quesione è basata su un'altra query, che
anche lei necessita del valore di aluni controlli di una maschera....
e quindi da codice non saprei come aprirla, perchè dovrei creare un
codice SQL e mettere nella FROM il nome di un recordset... e non credo
possa funzionare....
grazie
ciao, Max

MarcoMax wrote:

quando esegui la query con  parametri i riferimenti alla form da vb, tali
parametri vengono visti come stringhe di testo e non riconosciuti come
oggetti dell'insieme forms, se tu la scrivessi in vb dovresti infatti
mettere il riferimento ai parametri fuori dalle virgolette.
mi spiego
"SELECT * FROM recordset WHERE Campo = " & FORMS!NOMEFORM.NOMECAMPO
in questo caso funzionerebbe, mentre eseguendola dalla finestra db
gestisce da solo la cosa.
sei sicuro che fatta in vb non possa funzionare..... SQL ha mille
risorse......
se mi spieghi meglio, posso vedere cosa riesco a fare...
saluti Paolo A.

se mi spieghi meglio, posso vedere cosa riesco a fare...
il problema è che ho 2 query nidificate che usano parametri presenti
in una form...
come spiego nel mio altro messaggio "Come aprire da VB una query SQL
basata su un recordset"
ok, la prima query posso aprirla da codice VB, scrivendo direttamente
l'SQL, ed ottengo un recordset con i dati che cerco....
ma questi dati sono l'input di un'altra query (che pure lei ha
bisogogno dei parametri su una form)
e come faccio io da codice VB, scrivendo l'SQL ad utilizzare come
sorgente dati (nel FROM) non una tabella od una queri, ma una
recordset?
non so se sono riuscito a spiegarmi bene....

MarcoMax wrote:

vediamo un pò.....
apri un oggetto querydef sulla prima query
    Dim qdef As QueryDef
    Set qdef = CurrentDb.QueryDefs("query1")
    qdef.SQL = "select * from tabella1 where campo= " &
Forms!nomemaschera!nomecontrollo
    qdef.Close
cosi hai salvato nella stringa SQL il valore del parametro (occhio alla
sintassi se usi stringhe o date)
questa prima query (Query1), sarà quella che deve essere inserita nella
seconda.
    la seconda query potrebbe essere:
    dim RST as recordset
    Set qdef = currentdb.querydef("Query2")
    qdef.SQL = "Select * from QUERY1 where campo = " &
forms!nomemaschera!nomecontrollo
    Set RST = qdef.OpenRecordset
non l'ho testato ma a rigor di logica dovrebbe funzionare. Fammi
sapere....
saluti

sapere....
mmm....
cosi come dici tu in pratice creerei ed eseguirei 2 query ad hoc ogni
volta.... dovrebe funzionare....
perň ho trovato un modo piů semplice :-)
mi sono autorisposto nel thread... :)
grazie comunque
ciao, Max