![]() |
Datenbank: ads • Version: 10 • Zugriff über: TDatasetDescendant
Advantage Database - Null-Werte
Hallo,
ich habe eine Tabelle in der ein Char-Feld mit NOT NULL und Default-Wert '' definiert ist. Nun habe ich folgendes Problem: Wenn ich in einer Delphi-Anwendung dies Tabelle öffne und das Feld auf Null prüfe (adsTable1.FieldByName('Feld').IsNull), bekomme ich ein "True" zurück. Wenn ich aber im DataArchitect die Abfrag "Select * FROM Table WHERE Feld IS NULL" ausführe, bekomme ich 0 Datensätze geliefert. Hat jemand eine Erklärung wie das sein kann? Danke! |
AW: Advantage Database - Null-Werte
da haben wohl die ADS-Kompos nen kleinen Bug.
Poste das doch mal in deren Forum. |
AW: Advantage Database - Null-Werte
Dann hat u definiert, dass '' delphiseitig als Null zu betrachten ist.
|
AW: Advantage Database - Null-Werte
Hi und danke für eure Antworten.
Hm also irgendwas passt da nicht so ganz. Ich habe gerade nochmal ein Test gemacht und eune neue Tabelle angelegt. Bei der hat mir dann "isNull" das korrekte Ergebis geliefert. Einziger Unterschied war, das das Feld in der Test-Tabelle vom Typ "character" statt "nvarchar" ist. Also nochmal eine Tabelle erstellt mit Feld 1 als Char NOT NULL und Default '' und Feld 2 als NVarChar NOT NULL und Default ''. Dann über delphi einen Datensatz angelegt und beide Felder nicht befüllt. Und tatsächlich: adsTable1.FieldByName('test1').IsNull = False (korrekt) adsTable1.FieldByName('test1').IsNull = True (Falsch) hm :/ |
AW: Advantage Database - Null-Werte
nvarchar (Unicode) kann ADS noch nicht lange. Wird vermutlich hier ein "bugchen" mit Length(AnsiChar) <> Length(WideChar) sich eingeschlichen haben.
Wie gesagt: Melde es im Forum dort oder warte bis Joachim Dürr vorbeit schaut und es mit nimmt. |
AW: Advantage Database - Null-Werte
Jo werde ich machem, danke für die Hilfe!
|
AW: Advantage Database - Null-Werte
Zitat:
|
AW: Advantage Database - Null-Werte
Hi Joachim,
danke für deine Antwort! Inwiefern meinst du das ich die Felder falsch befüllt habe? Ich habe die Felder ja garnicht befüllt, sonder den ADS den Default-Wert eintragen lassen. Ich poste hier mal das Create-Script der Test-Tabelle und den Delphi-Code mit dem ich getestet habe.
Code:
CREATE TABLE test (
test1 Char( 50 ), test2 Char( 50 ), test3 NVarChar( 50 )) IN DATABASE; EXECUTE PROCEDURE sp_ModifyTableProperty( 'test', 'Table_Auto_Create', 'False', 'APPEND_FAIL', 'testfail'); EXECUTE PROCEDURE sp_ModifyTableProperty( 'test', 'Table_Permission_Level', '2', 'APPEND_FAIL', 'testfail'); EXECUTE PROCEDURE sp_ModifyTableProperty( 'test', 'Table_Memo_Block_Size', '8', 'APPEND_FAIL', 'testfail'); EXECUTE PROCEDURE sp_ModifyTableProperty( 'test', 'Triggers_Disabled', 'False', 'APPEND_FAIL', 'testfail'); EXECUTE PROCEDURE sp_ModifyTableProperty( 'test', 'Table_Trans_Free', 'False', 'APPEND_FAIL', 'testfail'); EXECUTE PROCEDURE sp_ModifyFieldProperty ( 'test', 'test2', 'Field_Can_Be_Null', 'False', 'APPEND_FAIL', 'testfail' ); EXECUTE PROCEDURE sp_ModifyFieldProperty ( 'test', 'test2', 'Field_Default_Value', '''''', 'APPEND_FAIL', 'testfail' ); EXECUTE PROCEDURE sp_ModifyFieldProperty ( 'test', 'test3', 'Field_Can_Be_Null', 'False', 'APPEND_FAIL', 'testfail' ); EXECUTE PROCEDURE sp_ModifyFieldProperty ( 'test', 'test3', 'Field_Default_Value', '''''', 'APPEND_FAIL', 'testfail' ); Anschließend wird per Delphi ein Datensatz erzeugt in dem nur das Feld "test1" gefüllt wird:
Code:
Und nun prüfe ich die Felder "test2" und "test3" auf NULL ab - was in beiden Fällen FALSE ergeben sollte da beide Felder als NOT NULL definiert sind:
AdsTAble1.Insert;
adsTable1.FieldByName('test1').asstring := 'value'; AdsTAble1.Post;
Code:
adsTable1.FieldByName('test3').isNull; // False -> Korrekt
adsTable1.FieldByName('test3').isNull; // True -> Nicht korrekt |
AW: Advantage Database - Null-Werte
Zitat:
|
AW: Advantage Database - Null-Werte
Zitat:
Also wäre dann hier ein Fehler im DBMS vorhanden. Und wenn das Eintragen erfolgreich wäre müsste es sich doch auch in der Data Architect-Abfrage zeigen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 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