Newsgroup: it.comp.appl.access
Titolo: passaggio parametri a query da vb (ho già guardato nel sito comune...)

Saluti a tutti.
Nnon avrei voluto intasare il ng con una richiesta che alla fine risulterà
una cazzata dovuta alla mia ignoranza...ma se non lo chiedo a voi, a chi lo
chiedo?.
Il problema, pur con le sue peculiarità, è lo stesso che ho trovato nelle
FAQ:
ho una maschera con 4 pulsanti.
se schiaccio il primo vorrei partisse laquery (QueryProva1) che ricevesse il
parametro [TipoOperaz:] pari a 1
se schiaccio il secondo vorrei partisse la query (QueryProva1) che ricevesse
il parametro [TipoOperaz:] pari a 2
e così via.
Ho seguito il codice (con l'evento click) proposto (inserendo pure la
libreria DAO; sono su access xp)
Dim dbs As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim rst As DAO.Recordset
   Set dbs = CurrentDb
   Set qdf = dbs.QueryDefs("QueryProva1")
   qdf.Parameters![TipoOperaz:] = "1"
   Set rst = qdf.OpenRecordset
   rst.Close
   qdf.Close
   Set dbs = Nothing
Tutto funziona...nel senso che non mi dà errore...ma a schermo non compare
niente.
Mi spiego: se uso un pulsante "apriquery" e imposto il parametro manualmente
a 1, tutto funziona, mi appare la query (in foglio dati) con i risultati che
mi aspetto.
Perchè qui no?
Che posso fare per "fissare" il risultato?
Mi seccherebbe dover fare tante query quanti sono i pulsanti e impostare il
valore del parametro su ogni query.
Vi ringrazio per la consueta disponibilità.
Guido
--
in moto:
sfortunà tanti
fortunà pochi
bravi gnanca uno

   qdf.Parameters![TipoOperaz:] = "1"
Posso immaginare che sia
   qdf.Parameters![TipoOperaz:] = 1
perchè appare corretta
MAssimiliano


si
ho postato (dannazione) la versione di prova con "1" (le ho provate tutte),
ma anche con 1 non funziona...
Domanda: se funzionasse, cosa dovrebbe apparire? il foglio dati del
risultato della query?
Grazie


 --
Se è una query di comando non deve restituire nulla; e comunque nel tuo 
codice ottieni un recordset quindi dovresti verificare la presenza di 
record:
es.
...
   qdf.Parameters![TipoOperaz:] = "1"
   Set rst = qdf.OpenRecordset
    if rst.eof then
        msgbox "Il recordset è vuoto"
    end if
   rst.Close
...
Ciao.
-- 
Sergio MAZZA 

 presenza di record:
intanto grazie per l'interessamento.
il recordset è sicuramente non vuoto (la query lanciata con lusuale "run" mi
fornisce i record che voglio, in forma di foglio dati).
Ho appiccicato il tuo suggerimento, formando così:
Dim dbs As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim rst As DAO.Recordset
   Set dbs = CurrentDb
   Set qdf = dbs.QueryDefs("QueryProva1")
   qdf.Parameters![TipoOperaz:] = 1
   Set rst = qdf.OpenRecordset
    If rst.EOF Then
        MsgBox "Il recordset è vuoto"
    End If
   rst.Close
ma, al momento del lancio (ovviamente click su quel pulsante cui è associato
l'evento on click)....non succede nulla di nulla.
(con il debug, vedo che effettivamente controlla l'IF).
Il mio dubbio è: bisogna "fissare" il risultato da qualche parte?
cioè: magari mi aspetto un risultato (il foglio dati con i record di
interesse) che non ci può essere finchè...eco, finchè cosa? che ulteriori
istruzioni devo mettere?
come "fisso" i dati del recordset?
Grazie ancora


 ha scritto nel messaggio 
news:IwHQd.902931$35.34...@news4.tin.it...

Ma se devi vedere i record non fai prima ad aprire una form basata sulla 
"QueryProva1"?
Alla form gli passi la condizione where e ottieni lo stesso risultato:
es.
DoCmd.OpenForm "nomeForm",,,"![TipoOperaz] = 1"
Ciao.
P.S. Ma non saranno i ":" di [TipoOperaz:] a dargli fastidio?
-- 
Sergio MAZZA 

 sulla "QueryProva1"?
si è persa la domanda iniziale:
se schiaccio il pulsante 1 deve partire la query XYZ che nel campo
TipoOperaz deve avere 1
se schiaccio il pulsante 2 deve partire LA STESSA query XYX che nel campo
TipoOperaz deve avere 2
se schiaccio il pulsante 3 deve partire LA STESSA query XYX che nel campo
TipoOperaz deve avere 3...
Il codice funziona perfettamente (nessun intoppo), ma che fa?
quale risultato dovrei ottenere? (almeno posso confrontarlo.)
Mi spiego: se lancio la quey come faccio sempre, passandogli manualmente il
parametro 1 (per esempio) ottengo un foglio dati con i record querizzati.
Ma con il codice...che risultato ottengo? (sempre restando che non succede
nulla di nulla).
Grazie!


 bravi gnanca uno
Se tu associ alla maschera la query1 senza nessuna condizione, quando premi 
il pulsante1 nel suo evento "su clic" avrai il codice:
es.
DoCmd.OpenForm "nomeForm",,,"TipoOperaz=1"
cosě ottieni la visualizzazione e filtro dei record...
Ciao.
-- 
Sergio MAZZA