2009-08-06 12 views
2

Ich bin die Einrichtung eine ADO-basierte Client-Datenmenge, und wenn ich versuche, einen Nullwert in eine TIntegerField einzufügen, auf Pfosten zu erhalten ich Project raised exception class EDatabaseError with message 'Non-nullable column cannot be updated to Null'.Wie kann ich ein TField als Nullwert deklarieren?

Ich weiß, ich habe einen Weg gesehen eine TField als nullable gesetzt vorher, aber ich kann mich nicht erinnern wo oder wie. Kann jemand das beheben?

EDIT: Das Feld ist zur Entwurfszeit auf Required = false gesetzt, und ich habe überprüft, dass es zur Laufzeit immer noch falsch ist, aber ich bekomme immer noch den Fehler.

Antwort

4

Haben Sie verifiziert, ob das Feld db, das dieses Feld darstellt, ein nicht nu ll Einschränkung?

+0

* seufz * Natürlich. Das war das Problem ... –

+0

hehehehe ... Das ist mir so oft passiert ... Es ist eines der ersten Dinge, die ich verifiziere ... ;-) –

1
MyField.Required := False; 
0

Von Hilfe zu Delphi 5:

property Required: Boolean; 

aber sich bewusst sein:

property CustomConstraint: String; 

Auch einige Implementierung von Klassen von TDataSet geerbten kann eine gewisse Logik auf ihren eigenen hinzufügen ...

+0

Ja, anscheinend ist das hier der Fall. –

0

ich weiß nicht, ob dies helfen wird, aber es kommt mir bekannt vor. Überprüfen Sie die Eigenschaften in den Feldern des Ado-Datasets, das die Cds einspeist. Ich weiß in d7 die cds nimmt intern die Eigenschaft readonly des Datensatzes des Providers unabhängig von seiner eigenen schreibgeschützten Einstellung. Das gleiche Problem kann für die erforderliche Eigenschaft gelten.