Registriert seit: 17. Jan 2006
368 Beiträge
Delphi 2009 Professional
|
AW: Advantage Database - Null-Werte
20. Okt 2011, 12:04
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:
AdsTAble1.Insert;
adsTable1.FieldByName('test1').asstring := 'value';
AdsTAble1.Post;
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:
Code:
adsTable1.FieldByName('test3').isNull; // False -> Korrekt
adsTable1.FieldByName('test3').isNull; // True -> Nicht korrekt
|