Discussione:
Criterio IIF
(troppo vecchio per rispondere)
Flavia
2024-01-02 20:49:44 UTC
Permalink
Ho una casella combinata il cui valore imposta un criterio nella query e vorrei visualizzare i record nulli o i non nulli ma non tutti e due insieme faccio un esempio:

SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE (((Documenti.Id_Componente)=[Forms]![Componenti]![ID_Componente]) AND ((Documenti.Documento)=IIf([forms]![Componenti]![link] Is Null,"",[forms]![Componenti]![link])));


Se il link nella maschera non è nullo vedo Id_componente e il valore del campo documento mentre se è nullo la query non mi restituisce nessun record mentre dovrei vedere Id_componente e il campo documento vuoto.In pratica dovrei passare Is Null al posto delle doppie virgolette ""
E' possibile
Grazie
Bruno Campanini
2024-01-03 00:01:21 UTC
Permalink
Post by Flavia
Ho una casella combinata il cui valore imposta un criterio nella query e
vorrei visualizzare i record nulli o i non nulli ma non tutti e due insieme
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE (((Documenti.Id_Componente)=[Forms]![Componenti]![ID_Componente]) AND
((Documenti.Documento)=IIf([forms]![Componenti]![link] Is
Null,"",[forms]![Componenti]![link])));
Se il link nella maschera non è nullo vedo Id_componente e il valore del
campo documento mentre se è nullo la query non mi restituisce nessun record
mentre dovrei vedere Id_componente e il campo documento vuoto.In pratica
dovrei passare Is Null al posto delle doppie virgolette "" E' possibile
Grazie
Può darsi che non abbia capito bene, ma credo proprio
che quello che vuoi fare non si possa fare.

Comunque se una query che porta un criterium dà un
risultato nullo (il criterium non è valido ovvero non
è dato) e si vuole ottenere qualcosa tipo un messaggio
come "No Current Record" si può fare così:

=======================================
Private Sub Command0_Click()
Dim RS As Recordset, SQL As String, S As String

S = "" ' ovvero un parametro non valido,
' che quindi non produce alcun record

SQL = "SELECT ID_Ditta, DenDitta "
SQL = SQL & "FROM t_Ditta "
SQL = SQL & "WHERE ID_Ditta='" & S & "';"

Set RS = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
If RS.RecordCount = 0 Then MsgBox "No Current Record"

End Sub
======================================

Da attivarsi da quella procedura che invia
il codice S che può essere nullo o non valido.

Bruno
Karl Donaubauer
2024-01-03 11:38:40 UTC
Permalink
Salve,
Post by Flavia
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE (((Documenti.Id_Componente)=[Forms]![Componenti]![ID_Componente]) AND ((Documenti.Documento)=IIf([forms]![Componenti]![link] Is Null,"",[forms]![Componenti]![link])));
Se il link nella maschera non è nullo vedo Id_componente e il valore del campo documento mentre se è nullo la query non mi restituisce nessun record mentre dovrei vedere Id_componente e il campo documento vuoto.In pratica dovrei passare Is Null al posto delle doppie virgolette ""
E' possibile
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE Nz(Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")
--
Ciao
Karl
*********
Access Info: https://AccessForever.org
Access News:

Access DevCon: https://www.donkarl.com/devcon
Access FAQ: https://www.donkarl.com/it
Karl Donaubauer
2024-01-03 11:48:43 UTC
Permalink
Post by Flavia
Post by Flavia
Ho una casella combinata il cui valore imposta un criterio nella query
e vorrei visualizzare i record nulli o i non nulli  ma non tutti e due
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE
(((Documenti.Id_Componente)=[Forms]![Componenti]![ID_Componente]) AND
((Documenti.Documento)=IIf([forms]![Componenti]![link] Is
Null,"",[forms]![Componenti]![link])));
Se il link nella maschera non è nullo vedo Id_componente e il valore
del campo documento mentre se è nullo la query non mi restituisce
nessun record mentre dovrei vedere Id_componente e il campo documento
vuoto.In pratica dovrei passare Is Null al posto delle doppie
virgolette ""
E' possibile
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE Nz(Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")
Ho trascurato che ci sono 2 campi nel WHERE. Dovrebbe essere:

SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE Documenti.Id_Componente=[Forms]![Componenti]![ID_Componente] AND
Nz(Documenti.Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")
Flavia
2024-01-03 15:45:46 UTC
Permalink
Post by Flavia
Post by Flavia
Post by Flavia
Ho una casella combinata il cui valore imposta un criterio nella query
e vorrei visualizzare i record nulli o i non nulli ma non tutti e due
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE
(((Documenti.Id_Componente)=[Forms]![Componenti]![ID_Componente]) AND
((Documenti.Documento)=IIf([forms]![Componenti]![link] Is
Null,"",[forms]![Componenti]![link])));
Se il link nella maschera non è nullo vedo Id_componente e il valore
del campo documento mentre se è nullo la query non mi restituisce
nessun record mentre dovrei vedere Id_componente e il campo documento
vuoto.In pratica dovrei passare Is Null al posto delle doppie
virgolette ""
E' possibile
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE Nz(Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE Documenti.Id_Componente=[Forms]![Componenti]![ID_Componente] AND
Nz(Documenti.Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")
Salve Karl
Grazie funziona perfettamente però ho due domande:
1)perchè usare la funzione NZ che tutti e due i campi sono di testo
2)Perchè usare "zzz"
Grazie per una tua risposta, Sei il migliore
Karl Donaubauer
2024-01-03 16:00:32 UTC
Permalink
Salve,
Post by Flavia
Post by Flavia
Post by Flavia
...
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE
(((Documenti.Id_Componente)=[Forms]![Componenti]![ID_Componente]) AND
((Documenti.Documento)=IIf([forms]![Componenti]![link] Is
Null,"",[forms]![Componenti]![link])));
Se il link nella maschera non è nullo vedo Id_componente e il valore
del campo documento mentre se è nullo la query non mi restituisce
nessun record mentre dovrei vedere Id_componente e il campo documento
vuoto.
...
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE Documenti.Id_Componente=[Forms]![Componenti]![ID_Componente] AND
Nz(Documenti.Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")
...
1)perchè usare la funzione NZ che tutti e due i campi sono di testo
Nz() fa un controllo per Null e poi prende il valore specificato. Il
tipo di dati non importa molto qui.
Post by Flavia
2)Perchè usare "zzz"
Puoi anche usare "Karl" o "Pippo" invece di "zzz". Si tratta solo di
utilizzare qualcosa che sicuramente non è presente nei dati del campo,
ma che è un segno/codice per questa situazione di Null.
--
Ciao
Karl
*********
Access Info: https://AccessForever.org
Access News: http://youtu.be/aKqZX4eE5NA
Access DevCon: https://www.donkarl.com/devcon
Access FAQ: https://www.donkarl.com/it
Flavia
2024-01-05 16:15:36 UTC
Permalink
Post by Karl Donaubauer
Post by Flavia
Post by Flavia
...
SELECT Documenti.Id_Componente, Documenti.Documento
FROM Documenti
WHERE Documenti.Id_Componente=[Forms]![Componenti]![ID_Componente] AND
Nz(Documenti.Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")
...
1)perchè usare la funzione NZ che tutti e due i campi sono di testo
Nz() fa un controllo per Null e poi prende il valore specificato. Il
tipo di dati non importa molto qui.
Post by Flavia
2)Perchè usare "zzz"
Puoi anche usare "Karl" o "Pippo" invece di "zzz". Si tratta solo di
utilizzare qualcosa che sicuramente non è presente nei dati del campo,
ma che è un segno/codice per questa situazione di Null.
--
Ciao
Karl
*********
Access Info: https://AccessForever.org
Access News: http://youtu.be/aKqZX4eE5NA
Access DevCon: https://www.donkarl.com/devcon
Access FAQ: https://www.donkarl.com/it
Grazie Mille

Continua a leggere su narkive:
Loading...