Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#15

AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem

  Alt 30. Jun 2020, 16:22
> _Target.FieldByName(MeinText).Value := EmptyParam
Auch das ergibt einen Laufzeitfehler.

Mein Witz von vorhin scheint sich doch allmählich als realistisch(st)e Lösung hervorzustun.

Delphi-Quellcode:
  t := trim(_Source.FieldByName(MeinText).AsString);
  if trim(t) = 'then begin
    _Target.FieldByName(MeinText).AsString := #0;
  end else begin
    _Target.FieldByName(MeinText).AsString := t;
  end;
Das hätte in meinem Fall den Vorteil, dass das "MeinText" Feld ja nur an wenigen Stellen geschrieben, dafür an vielen Abgefragt wird (evtl. NULL Problematik im SELECT) und ich eben hier nur ein paar wenige "gut auffindbare" Stellen im Quelltext, die angepasst werden müssen.

Meines bescheidenen Wissens nach, sind Strings ja "Nullterminiert", also mit #0 als letztes Byte am Ende. Somit müsste eigentlich für den Fall t='' der Eintrag in der Tabelle stimmen, bzw. Byte-mäßig identisch sein mit den DEFAULT Werten, wenn ich "MeinText" in einem neuen Datensatz gar nicht schreibe(?).

Wenn ich eine Abfrage mache
Code:
SELECT * FROM Layout WHERE MeinText=''
und die Gegenabfrage
Code:
SELECT * FROM Layout WHERE MeinText<>''
werden nun zumindest scheinbar alle Datensätze zurück gegeben - entweder in der einen, oder anderen Abfrage. In sofern KÖNNTE es stimmen...?
Delphi 10.4 32-Bit auf Windows 10 Pro 64-Bit, ehem. Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit

Geändert von berens ( 1. Jul 2020 um 08:05 Uhr)
  Mit Zitat antworten Zitat