Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Criterio IIF

65 views
Skip to first unread message

Flavia

unread,
Jan 2, 2024, 3:49:45 PM1/2/24
to
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

unread,
Jan 2, 2024, 7:01:26 PM1/2/24
to
Flavia laid this down on his screen :
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

unread,
Jan 3, 2024, 6:38:43 AM1/3/24
to
Salve,

Flavia:
WHERE Nz(Documento,"zzz")=Nz([Forms]![Componenti]![link],"zzz")

--
Ciao
Karl
*********
Access Info: https://AccessForever.org
Access News: https://youtu.be/aKqZX4eE5NA
Access DevCon: https://www.donkarl.com/devcon
Access FAQ: https://www.donkarl.com/it

Karl Donaubauer

unread,
Jan 3, 2024, 6:48:46 AM1/3/24
to
Qualcuno ha scritto:
> 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 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
>
> 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

unread,
Jan 3, 2024, 10:45:48 AM1/3/24
to
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

unread,
Jan 3, 2024, 11:00:35 AM1/3/24
to
Salve,

Flavia:
> Karl Donaubauer ha scritto:
>>> 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.

> 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.

Flavia

unread,
Jan 5, 2024, 11:15:38 AM1/5/24
to

> >>> ...
> >> 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.
>
> > 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: https://youtu.be/aKqZX4eE5NA
> Access DevCon: https://www.donkarl.com/devcon
> Access FAQ: https://www.donkarl.com/it
Grazie Mille
0 new messages