Newsgroup: it.comp.appl.access
Titolo: query con parametri

In una maschera premendo un pulsante mi deve eseguire una query dove Anno =
combo1 e restituire un valore numerico.
Dim query As String
Dim db As Database
Dim rst As Recordset
query = "ControlloXmisuraTutti"
Set db = CurrentDb
Set rst = db.OpenRecordset(query)
rst.MoveLast
Me.Numero = rst.RecordCount
Set db = Nothing
Primo messaggio di errore: Query con parametri! Mi sembra di aver capito che
anno=combo1 glielo devo dare da codice con Parameters
Ho provato allora a inserire la riga Parameters [Me.Combo1]
ma il messaggio ora è:
Sub o Function non definita!
Aiuuuutoooo!
--------------------------------
Inviato via 
http://usenet.libero.it


Resettati:
Dim qdf as querydef
set qdf=currentdb().querydefs(<nometuaquery>)
qdf.parameters(<nomeparametro>)=<ilvalore>
<idem x ogni parametro>
qdf.execute
Bye.

 Aiuuuutoooo!
Vai sul Sito Comune (link qui sotto) e nella Sezione Queries leggi la FAQ di
Federico Luciani intitolata "Aprire una query parametrica da codice VBA".
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:bakths$vbo$1...@newsreader.mailgate.org...

... o qdf.open a seconda che sia una query di selezione o di comando.

Salve,
ho una query con parametri con possiblità di non scegliere uno o più
dei parametri a disposizione. Tutto funziona. I problemi nascono se
nei campi dove si trovano i parametri uno o piu record è vuoto. 
In questo caso la query funziona solo se lascio tutti i parametri
vuoti (e mi restituisce tutti i record). Se invece scelgo uno dei
parametri non ottengo nessun record.
Probabilmente è una stupidaggine, ma non ci cavo i piedi.
Grazie
Andrea

Tornando alla query con paramentri da lanciare tramite VBA:
Ho letto sul sito comune
Dim dbs As Database
Dim rst As Recordset
Dim qdf As QueryDef
 Set dbs = CurrentDb
 Set qdf = dbs.QueryDefs("miaquery")
qdf.Parameters![miocampo] = Me.combo
Set rst = qdf.OpenRecordset
    If rst.BOF = False Then
        rst.MoveLast
        Me.Irregolari = rst.RecordCount
    End If
rst.Close
qdf.Close
Set dbs = Nothing
End Sub
ma mi viene segnalato "Elemento non trovato in questo insieme". Eppure
miocampo nella query esiste elanciando manualmente la query funziona
perfettamente.


 ha scritto nel messaggio
news:3ed120a2...@news.tiscali.it...

Prova a postare il codice SQL della tua query parametrica.



Significa che tra i parametri non ce ne è nessuno che si chiama [miocampo].
Ho l'impressione che tu non abbia chiaro come si usa l'insieme Parameters,
prova a dare uno sguardo all'help.
In [miocampo] non devi indicare il nome del campo ma il nome del parametro.
Se ad esempio nei criteri della query ci hai scritto:
[Forms]![NomeMaschera]![Anno]
allora devi scrivere:
qdf.Parameters![forms!Maschera1!Anno] = Me!Combo
se invece nei parametri hai scritto:
[Digita anno:]
allora devi scrivere:
qdf.Parameters![Digita anno:] = Me!Combo
Spero di essermi spiegato.




PARAMETERS [Inserire regione] Text ( 255 ), [Inserire provincia] Text
( 255 );
SELECT Noclientisifaxsipromofax.IDCliente,
Noclientisifaxsipromofax.NomeSocietà,
Noclientisifaxsipromofax.NumeroFax
FROM Noclientisifaxsipromofax
WHERE (((Noclientisifaxsipromofax.Regione) Like "*" & [Inserire
regione] & "*") AND ((Noclientisifaxsipromofax.Provincia) Like "*" &
[Inserire provincia] & "*")) OR ((([Inserire regione]) Is Null) AND
(([Inserire provincia]) Is Null));
Questo è un esempio semplificato con due soli parametri.
Adesso la situazione è questa:
la query se imposto uno dei due parametri mi restituisce solo i record
che contengono valori non vuoti nel parametro non scelto.
Esempio se scelgo la regione Emilia e non indico la provincia mi
aspetto che mi sputi fuori i dati anche per quei clienti dell'Emilia
di cui non so la provincia, mentre la query se la provincia è vuota mi
scarta il cliente anche se è in Emilia.
Se invece non scelgo nessuno dei due parmetri la query funziona perchè
mi da anche i clienti che non hanno indicate Regione e Provincia o ne
hanno indicate solo una delle due.
GRAZIE


Secondo me, dovresti giocherellare con la funzione Nz().
Ciao


 GRAZIE
Prova cosě:
PARAMETERS [Inserire regione] Text ( 255 ), [Inserire provincia] Text (
255 );
SELECT Noclientisifaxsipromofax.IDCliente,
Noclientisifaxsipromofax.NomeSocietŕ, Noclientisifaxsipromofax.NumeroFax
FROM Noclientisifaxsipromofax
WHERE (((Noclientisifaxsipromofax.Regione) Like "*" & [Inserire regione] &
"*" OR (Noclientisifaxsipromofax.Regione) Is Null) AND
((Noclientisifaxsipromofax.Provincia) Like "*" & [Inserire provincia] & "*"
OR (Noclientisifaxsipromofax.Provincia) Is Null));



E' un tentativo che avevo fatto anche io, ma non funziona.
Se scelgo solo il parametro Regione e digito Emilia ottengo i clienti
tutti i clkienti Emilia e anche tutti quelli che non hanno indicata la
Regione
Se scelgo entrambi i parametri (Regione Emilia e Provincia Bologna)
ottengo oltre ai clienti ricercati anche quelli di aziende senza la
Regione, senza la Provincia o senza entrambi
Grazie



Scusa la mia grandissima ignoranza, ma non so di cosa parli, mi
potresti dare qualche spunto in più?
Grazie


(Do per scontato che lavori in Access)
La funzione Nz (la trovi nell'help, e anche nel Generatore di espressioni)
converte in uno zero il valore Null di un campo vuoto. Le query danno spesso
problemi con i campi vuoti, e vedo di frequente problemi come il tuo. Io
spesso ho utilizzato la funzione Nz per gestire i campi con valori Null.
Scusami ma non posso dirti di piů ora, perchč qui non ho Access. Cerca
nell'help.
Ciao, e spero di esserti stato utile. :-)


 ha scritto nel messaggio
news:3ed23053...@news.tiscali.it...

Ed allora prova così:
PARAMETERS [Inserire regione] Text (255), [Inserire provincia] Text (255);
SELECT Noclientisifaxsipromofax.IDCliente,
Noclientisifaxsipromofax.NomeSocietà, Noclientisifaxsipromofax.NumeroFax
FROM Noclientisifaxsipromofax
WHERE (((Nz([Regione],"ZZZZZZZ")) Like "*" & [Inserire regione] & "*") AND
((Nz([Provincia],"ZZZZZZ")) Like "*" & [Inserire provincia] & "*"));


 wrote:

Grazie mille, adesso funziona.
Andrea