![]() |
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
Eventuell:
Delphi-Quellcode:
Beim Lesen von so einer Spalte mit .AsString bekommt man immer einen leeren String.
t := trim(_Source.FieldByName(MeinText).AsString);
if t = '' then begin _Target.FieldByName(MeinText).AsVariant := EmptyParam; // <-- Das ist die "Variantversion von Null". (Bei Delphi 7 in Variants definiert.) end else begin _Target.FieldByName(MeinText).AsString := t; end; |
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
Typecastfehler :/
Ansonsten aber gute Idee... |
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
Als Krücke für die spätere Abfrge geht in MSSQL dann:
WHERE ISNULL(BLA,'')='' |
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
Einen noch:
Delphi-Quellcode:
t := trim(_Source.FieldByName(MeinText).AsString);
if t = '' then begin _Target.FieldByName(MeinText).Value := EmptyParam; // <-- Das ist die "Variantversion von Null". (Bei Delphi 7 in Variants definiert.) end else begin _Target.FieldByName(MeinText).AsString := t; end; |
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
> _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:
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.
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; 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:
und die Gegenabfrage
SELECT * FROM Layout WHERE MeinText=''
Code:
werden nun zumindest scheinbar alle Datensätze zurück gegeben - entweder in der einen, oder anderen Abfrage. In sofern KÖNNTE es stimmen...?
SELECT * FROM Layout WHERE MeinText<>''
|
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
Hallo,
nimm Queries und PramByName().Clear |
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
Vielleicht möchtest du auch den Unterschied zwischen VARCHAR und NVARCHAR nachlesen:
![]() ![]() |
AW: Leeren Text "" in MS-SQL Feld NOT NULL Problem
Zitat:
Wenn die Connection-Komponente im TDataSet/TField das Required auf True setzt, wenn NOT NULL erkannt wurde, dann lässt sich kein Dataset.Post mehr absetzen, so lange das Feld leer ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz