Einzelnen Beitrag anzeigen

bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Advantage Database - Null-Werte

  Alt 20. Okt 2011, 11: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
  Mit Zitat antworten Zitat