Microsoft Access. Mit Abfragen und Nullwerten arbeiten

1280
guidout

Dies mag eine einfache Frage sein, aber ich kann es nicht verstehen. Ich habe eine Tabelle mit einer Reihe von Feldern. 3 davon (SizeA, SizeB, SizeC) sind Zahlen und ich habe ein Formular, das eine Abfrage zum Abfragen der Tabelle verwendet. Größe A ist jetzt immer nicht Null, aber Größe B und C können Null sein. Dies sind die Kriterien, die ich für Größe A, B und C benutze:

Like IIf([forms]![Search Fittings]![SizeA_Text]="0","*",[forms]![Search Fittings]![SizeA_Text]) Like IIf([forms]![Search Fittings]![SizeB_Text]="0","*",[forms]![Search Fittings]![SizeB_Text]) Like IIf([forms]![Search Fittings]![SizeC_Text]="0","*",[forms]![Search Fittings]![SizeC_Text]) 

Wie Sie sehen, prüft das if, ob das Formularfeld Size * _Text gleich 0 ist oder nicht. Das Problem ist, dass die Tabelleneinträge, bei denen SizeB oder SizeC nicht festgelegt ist (also null sind), NICHT in der Suche angezeigt werden. Die Lösung könnte wie folgt aussehen:

Like IIf([forms]![Search Fittings]![SizeC_Text]="0",Like "*" Or Is Null,[forms]![Search Fittings]![SizeC_Text]) 

aber es geht nicht. haben Sie einen Vorschlag, wie ich diese Logik realisieren kann?

Danke, Guido

1

2 Antworten auf die Frage

0
SeanC

umschließen Sie das Feld in der nzFunktion.

NZ weist das zweite Argument zu, wenn das erste NULL ist.

nz("SuperUser","default") = "SuperUser" nz(NULL,"default") = "default" 

Dies würde den Test, den Sie haben, in etwas ändern (Wiederholen Sie dies für alle Tests, die Sie durchführen müssen):

Like IIf(nz([forms]![Search Fittings]![SizeB_Text],"")="0" ,"*" ,nz([forms]![Search Fittings]![SizeB_Text],"") ) 
0
Máté Juhász

Sie müssen etwas komplexere Kriterien verwenden, es ist nicht möglich, dies innerhalb eines Kriteriums zu tun iif()(Sie können Ihren Tabelleneintrag nicht auf einen Nullwert in einer likeAnweisung testen ).

([...sizeC_text]="0" and isnull(<your field>)) or <your field> like iif([...sizeC_text]="0","*",[...sizeC_text])

Beachten Sie auch, dass diese Bedingung richtig ist, wenn Sie sie in VBA verwenden, wenn Sie sie in einen SQL-Ausdruck einfügen und dann die isnull()Funktion ersetzen... Is Null