Newsgroup: it.comp.appl.access
Titolo: Il solito problema di requery...

Ho una maschera basata su una query di cui devo cambiare arbitrariamente i
criteri prelevandoli da alcune caselle combinate. La query l'ho definita in
struttura senza criteri, infatti all'apertura della maschera mi acchiappa
tutti i record possibili e mi fa vedere i relativi campi nella maschera. Ora
assegno le caselle dei criteri e clicco su un pulsante che mi compone i
criteri in SQL e li ficca in query.SQL e poi faccio me.requery, ma il
malvagio non fa una piega e nella maschera continuo a vedere il mazzo
iniziale di record. Se però riassegno i criteri e riclicco sul pulsante, la
maschera mi mostra la selezione precedente (quella che non riuscivo a
ottenere) e non quella attuale. Insomma sono indietro di una esecuzione di
query.
(In realtà la query manualmente funziona, e' la maschera che resta
indietro). Ho anche provato a mettere DoEvents dopo la requery ma nix
help da barbi

criteri in SQL e li ficca in query.SQL e poi faccio me.requery
non è che non  chiudi l' oggetto querydef dopo aver assegnato la proprietà ?
Dovresti chiuderlo prima di fare il requery.

Stefano Radice <ste...@NOSPAMstefano.com> wrote in message
86fg0h$1ho$1...@news.flashnet.it...

infatti non lo chiudo, ma non l'ho neanche aperto, mi sono limitato a fare:
set qdf=currentdb.querydefs("nomequery") perche' la query l'ho creata in
visualizzazione struttura e quindi penso che sia stata eseguita (aperta?)
all'apertura della maschera. In realtà non ho le idee molto chiare. In
pratica devo eseguire ogni volta una query diversa, che mi deve riempire i
controlli della maschera. Forse non va bene usare una query definita
"staticamente" ma bisogna usare un'istruzione SQL non memorizzata come
query? tra l'altro mi pare che su queste cose Access non e' molto "user
friendly", sono giorni che vago qua e là nell'help on line
barbi

all'apertura della maschera. In realtà non ho le idee molto chiare. In
Quando setti un oggetto è come se lo "aprissi".
Poi ci pensa il sistema a chiuderlo se non lo fai tu esplicitamente, al
termine del codice, ma evidentemente se non glielo dici tu esplicitamente il
salvataggio lo fa dopo la requery.
Prova a mettere alla fine un qdf.close
Comunque io preferisco crearmi la stringa SQL e assegnarla alla rowsource
del controllo
Antonio


http://www.penguinpowered.com/~ecesena
Il lavoro mi piace, mi affascina.  Potrei starmene seduto per ore a guardarlo.
		-- Jerome K. Jerome


purtroppo non cambia niente. Dettaglio la routine del pulsante:
Private Sub cmdCercaFile_Click()
   Call creaSql         'aggiungo criteri alla query
    qdf.SQL = ssqlx$     'modifico querydef
    qdf.Close
    Me.Requery        'eseguo requery
end sub
                     mi fermo in debug dopo qdf.Close, verifico che nella
struttura query della qdf sono comparsi i valori dei criteri, rilancio ma
nisba. Anche mettendo DoEvents dopo qdf.Close non cambia niente. Ho anche
provato a mettere qdf.Close PRIMA di assegnare qdf.SQL, supponendo cosi' di
chiudere la query iniziale che penso lui abbia aperto automaticamente
all'apertura della maschera, ma neanche cosi' va.
Per quanto riguarda l'uso della stringa SQL come dici tu, io però vorrei
ottenere un recordset su cui eseguire modifiche, aggiunte, cancellazioni,
per cui ho messo: origine record della maschera=nome della query qdf,
naturalmente non ho associato i controlli di ricerca ai relativi campi, per
cui non mi e' chiaro il discorso di assegnare la rowsource
barbi

cui non mi e' chiaro il discorso di assegnare la rowsource
Scusa eh?
Intanto la rowsource si riferisce ad un controllo mentre la maschera ha la
recordsource.
La recordsource stabilisce in che modo ti vengono restituiti i record su cui
si basa la maschera. E' una proprietà della maschera stessa e può essere una
tabella, una query salvata o una stringa SQL corrispondente ad una query di
selezione.
Pertanto all'inizio metterai per esempio una query salvata base, quella che
ti da tutti i record; poi da codice potrai preparare 'sta cazza di stringa
SQL sulla base dei parametri che hai sulla maschera, tipo filtri e così via
e quindi farai:
Me.recordsource = tuaSQL
quindi fai la me.requery
Questa procedura va bene anche se vuoi fare lo stesso giochino con un
controllo, basta che la assegni alla rowsource e poi fai la requery del
controllo...
Antonio

 quindi fai la me.requery
e' proprio cosi', io mi riferivo alla sorgente record della maschera, che e'
una query senza criteri, ecc.ecc. come hai detto tu, quindi ho lasciato
perdere la query.SQL e cosi' funziona (rimarrebbe da spiegare perche' non
funziona facendo qdf.close). Tra l'altro funziona
anche senza fare la requery perche', in un vagabondaggio piu' fortunato in
mezzo all'help, ho scoperto che il semplice fatto di modificare la sorgente
record fa automaticamente aggiornare i controlli della maschera.
barbi