und was macht dashier?
if (UniMainModule.d6.FieldByName('archiv').asstring <> '') OR (not UniMainModule.d6.FieldByName('archiv').IsNull) then begin ...
Bei der von Dir geposteten Variante für FAIL passt die Klammersetzung nicht? Copy&Paste-Fehler?
Und müsste es dann nicht eher heißen:
Delphi-Quellcode:
if (UniMainModule.d6.FieldByName('archiv').asstring <> '')
and (UniMainModule.d6.FieldByName('archiv').IsNull = false) then begin
Wobei der Vergleich
UniMainModule.d6.FieldByName('archiv').IsNull = false
eher als
not UniMainModule.d6.FieldByName('archiv').IsNull
formuliert werden sollte.
Bei Deiner ersten Variante führt .AsString <> '' dazu, dass alle Sätze, die irgendwas, außer einem Leerstring, enthalten, gefunden werden, .IsNull = false führt zum Finden aller Sätze, die irgendwas enthalten, also auch die mit einem Leerstring. Das Or sorgt dafür, dass beides gefunden wird.
Die zweite Variante liefert alle Sätze, die entweder einen Leersting enthalten oder Null sind.
1. Variante -> nicht Leer oder nicht Null
2. Variante -> Leer oder Null
Irgendwie sind das zwei absolut unterschiedliche Ergebnismengen. Welche davon hättest Du denn gerne?