PDA

View Full Version : Query con parametri


CIUFFO
03-02-2003, 19:16
Vorrei fare una query (access 2000) che mi estrae i dati da una tabella utilizzando come parametri le caselle di testo di una maschera.
Però non voglio essere costretto ad inserire tutti i parametri.
Per esempio:
tabella con due campi: "nome" e "cognome"
maschera con due caselle di testo: "nome" e "cognome"
La mia query dovrebbe essere in grado di filtrare la tabella in base al nome AND cognome, ma anche in base al nome OR cognome.
Se uso l'operatore AND tra i due criteri sono costretto a fornirli tutti e due,
se uso l'operatore OR sono costretto a fornirli separatamente.
Come si può fare per usare l'operatore AND solo se inserisco i due parametri insieme e l'operatore OR se ne inserisco solo uno?
Ciao a tutti

cionci
04-02-2003, 10:11
Non è più semplicvein fase di costruzione della query controlalre quali dei due parametri sia stato inserito e quale no ? Nel caso ne manchi uno basta non scrivere l'altra condizione...

CIUFFO
04-02-2003, 16:45
potresti farmi un esempio?

cionci
04-02-2003, 17:06
Io di VBA non so niente...ma te lo scrivo in VB tanto sono simili...

Dim query As String

query = "SELECT * FROM TABELLA"

If Len(Parametro1) > 0 And Len(Parametro2) > 0 Then
query = query + " Parametro1 = " + Prametro1 + " AND Parametro2 = " + Prametro2
ElseIf Len(Parametro1) > 0 And Len(Parametro2) = 0 Then
query = query + " Parametro1 = " + Prametro2
ElseIf Len(Parametro1) = 0 And Len(Parametro2) > 0 Then
query = query + "Parametro2 = " + Prametro2
End If

query = query + ";"

CIUFFO
08-02-2003, 19:19
I tuoi consigli sono sempre preziosi, grazie.

Dim Query, A, B As String

A = "[Forms]![ricerche]![Nome]"
B = "[Forms]![ricerche]![Cognome]"

Query = "SELECT [NOME ], [COGNOME ], FROM Tabella WHERE "

If IsNull(Me!Nome) = False And IsNull(Me!Cognome) = True Then
Query = Query + "[Tabella].[NOME]=" + A
ElseIf IsNull(Me!Nome) = False And IsNull(Me!Cognome) = False Then
Query = Query + "[Tabella].[NOME]=" + A + " AND " + "[Tabella].[COGNOME]=" + B
ElseIf IsNull(Me!Nome) = True And IsNull(Me!Cognome) = False Then
Query = Query + "[Tabella].[COGNOME]=" + B

End If

Query = Query + ";"

Me!Risultato.RowSource = Query 'risultato è una casella di riepilogo'
Me!Risultato.Requery

cionci
09-02-2003, 09:31
Originally posted by "CIUFFO"

grazie.
Di niente ;)