1

ブラックフィッシュデータベースでdbx4の自動インクリメンタルフィールドを使用しようとしています。単純なテーブル構造があります。

    CREATE TABLE tblTABname (
    ID int AUTOINCREMENT Primary Key,
    Description varchar(100) NOT NULL );

開く前に私はやっています:

qryTAB.FieldByName( ‘ID’).AutoGenerateValue := arAutoInc;
cdsTAB.FieldByName( ‘ID’).AutoGenerateValue := arAutoInc;

開封後:

qryTab.FieldByName('ID').ProviderFlags := [pfInWhere, pfInKey];
cdsTab.FieldByName('ID').ProviderFlags := [pfInWhere, pfInKey];

私が行った場合:

cdsTAB.Edit;
cdsTAB.FieldByName(‘Description’).value := ‘Test’;
cdsTAB.Post;

または、これをDBGRIDで使用すると、次のエラーで失敗します。

「フィールド'ID'には値が必要です」</p>

魔女が生成されているはずです。

INSERTクエリを実行すると、「AutoGenerateValue:= arAutoInc」行の有無にかかわらず、正常に機能します。

どうすればこの問題を克服できますか?

4

1 に答える 1

0

CDSTab.EDIT を呼び出す代わりに、CDSTab.INSERT を呼び出して新しい行を追加し、カーソルが既にレコード上にあるときにのみ CDSTab.EDIT を呼び出し、そのレコードの値を編集します。

于 2009-04-21T16:06:13.413 に答える