Newsgroup: it.comp.appl.access
Titolo: Querydef Passaggio paramteri

Ciao a tutti,
nella mia querydef vado posso avere un paramtro nullo o "s"
Ora con s è tutto a posto
Con nullo ho usato il barbatrucco di nz("miocampo","zzzz")
ma se voglio passare tutti e due "S" or "zzzz" ho problemi.
non posso passare * perchè potrebbero esserci altri valori che non mi
interessano.
Come posso superare la cosa?
Grazie Massimiliano

 ha scritto nel messaggio 
news:KhKmd.33695$B06....@news.edisontel.com...

Perchè non usare un bel OR:
SELECT Left([DESCRI],1) AS Comune
FROM COMUNI
WHERE (((Left([DESCRI],1))=[1parametro] Or 
(Left([DESCRI],1))=[2Parametro]));
Ovviamente va adeguata al tuo codice e dopo aver impostato o passato i due 
parametri che possono essere anche vuoti. Se vuoti non avrai nessun record.
Ciao, Carlo

 ha scritto nel
messaggio news:7RXmd.353555$35.15...@news4.tin.it...

Mi rendo conto di non essere stato chiarissimo
Io devo poter aver la scelta tra avere la restituzione di tutti i record che
hanno nel
campo motivazione solo la "s" o solo il campo nullo
o tutti e due.
MAssimiliano

 ha scritto nel messaggio 
news:VlZmd.33862$B06....@news.edisontel.com...

E allora qual'è il problema.
Al limite puoi costruire la stringa in base alle tue esigenze: tipicamente 
tre stringhe:
Una la conosci (quella dell'esempio).
la seconda è uguale alla prima ma senza il secondo parametro,
la terza sarà:
SELECT Left([DESCRI],1) AS Comune, COMUNI.DESCRI
FROM COMUNI
WHERE (((Left([DESCRI],1))=[1p] Or (Left([DESCRI],1)) Is Null));
Ciao, Carlo


Quindi mi dici di usare due query...
così ho agirato il problema, ma non l'ho risolto.
MAssimiliano

 ha scritto nel messaggio 
news:BxZmd.33867$B06....@news.edisontel.com...

Ciao MA
per comodità ti ho postato tre esempi di query con parametri.
Nel codice (il tuo) dovrai semplicemente adattare la sintassi e passargli di 
volta in volta il o i parametri voluti.
Credo che nel codice "Is Null" vada sostituito con "IsNull".
Non sò se sono stato chiaro.
Comunque anche la soluzione delle tre query potrebbe andare bene.
Nella prima risposta ho scritto:
"Perchè non usare un bel OR?" ... e poi..."Ovviamente va adeguata al tuo 
codice e dopo aver impostato o passato i due
parametri che possono essere anche vuoti"
Avevo perfettamente capito che lavoravi da codice.
Ciao, Carlo

       IIF([Opzione: ]=3 AND [motivazione]='s',1,0)))
ed ho risolto.
Grazie MAssimiliano


Ciao MA, son contento che hai fatto una scelta e risolto il problema.
Or non è un parametro!!!!!!!
Chi ti ha detto questo?????????
Mai sentito parlare di operatori?
Ciao, Carlo

in un parametro non puoi passare un'espressione logica  "zzzz" Or "s"
Cercando di spiegarmi meglio ......
----------
Il parametro di una query può contenere una costante, se al suo interno
inserisco un'espressione logica  ( "zzzz" Or "s" ) resta sempre una costante
in questo caso di tipo testo.
----------
scusa se mi sono intromesso :-)
Ciao Giorgio

 ha scritto nel 
messaggio news:cnj320$ind$1...@lacerta.tiscalinet.it...

Si Giorgio ora ho capito perchè MA ha scritto in quel modo.
Infatti nella query con parametri l'operatore "OR" è usabilissimo, anzi nel 
suo caso era perfetto come dimostra questo spezzone di codice:
Public Function SettaParametri()
    Dim dbs As Database, qdf As QueryDef, rst As Recordset
    Dim prm As Parameter, prm2 As Parameter, strSQL As String
    Set dbs = CurrentDb
    strSQL = "PARAMETERS 1P Text; SELECT Left([DESCRI],1) AS Comune, 
COMUNI.DESCRI FROM COMUNI WHERE " _
    & "(((Left([DESCRI],1))=[1P] Or (Left([DESCRI],1)) Is Null));"
    Set qdf = dbs.CreateQueryDef("QueryConParametri", strSQL)
    qdf.Parameters![1P] = "B"
    Set rst = qdf.OpenRecordset
    rst.MoveLast
    MsgBox "Query restituita " & rst.RecordCount & " records."
    rst.Close
    Set dbs = Nothing
End Function
La funzione apre un recordset con tutti i comuni che hanno la lettera "B" 
come iniziale nel nome oppure restituisce quelle descrizioni nulle.
Comunque MA ha già risolto. Questo ulteriore esempio potrà utilizzarlo in 
altre occasioni...magari per la festa di compleanno quando dovrà decidere se 
invitare tutte le amiche "OR" anche gli amici...
Ciao, Carlo 

 ha scritto nel
messaggio news:gd7nd.187691$b5.93...@news3.tin.it...

Ciao Carlo,
volevo dire
"perchè or non può essere passato IN UN  parametro".
ciao
MAssimiliano


Certamente, infatti questo è stato il mio primo suggerimento (riporto solo
la Where)
-----------
WHERE vendita.rif=[Ricevuta: ] AND
1= IIF([Opzione: ]=1 AND  ([motivazione]=[Parametro: ] OR [motivazione] IS
NULL),1,
     IIF([Opzione: ]=2 AND [motivazione] IS NULL,1,
     IIF([Opzione: ]=3 AND [motivazione]=[Parametro: ],1,0)))
-----------
Vengono utilizzati due parametri, il primo decide che logica applicare
[Opzione: ], il seconto è il parametro di confronto [Parametro: ]
Come vedi l'opzione 1 corrisponde al tuo esempio.
Poi visto che il campo motivazione poteva contenere solo "si" o NULL il
tutto è stato semplificato.
Ciao Giorgio