Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#19

AW: Fehlermeldung beim Zugriff auf die Datenbank

  Alt 3. Feb 2022, 18:41
Persönlich würd' ich diesen Teil umbauen:
Delphi-Quellcode:
if not (FieldByName(aFeld).IsNull) and
not (FieldByName(aFeld).asString.IsEmpty) and
(Recordcount > 0) and
((FindField('GELOESCHT') = nil) or (Locate('GELOESCHT', 0, []))) then
  Result := FieldByName(aFeld).AsString;
In etwa so (das with lassen wir jetzt mal wie es ist, auch wenn ich es überhauptnicht mag ):
Delphi-Quellcode:
if (Recordcount > 0) and
not (FieldByName(aFeld).IsNull) and
not (FieldByName(aFeld).asString.IsEmpty) and
((FindField('GELOESCHT') = nil) or (Locate('GELOESCHT', 0, []))) then
  Result := FieldByName(aFeld).AsString;
Ist RecordCount = 0, muss nicht geprüft werden, ob es die Felder überhaupt gibt, spart die Suche der Felder und wenn die mal nil sein sollten, kracht es nicht, weil die erste Bedingung nicht erfüllt ist und damit die restlichen Prüfungen obsolet werden.
Das ändert sich erst dann, wenn man in den Kompileroptionen das "Boolsche Asudrücke vollständig auswerten" aktiviert hat.

Alternativ könntest Du vor not (FieldByName(aFeld).IsNull) auch noch prüfen, ob and not (FindField(aFeld) = nil) , derweil: Das könnte (theoretisch) auch noch schief gehen.
  Mit Zitat antworten Zitat