ADO DataSetを使用して"IDENTITY"列に任意の値を設定するには?


mayuna  2008-06-22 01:16:56  No: 31045

お世話になります。
WindowsXPとDelphi2007とMSDE 2000 Release Aを使用しています。

以下の方法で、"IDENTITY"列に任意の値を設定しようとしていますが、
値は設定しているのですが、何故か"Post"時に
「'IDENTITY_INSERT'がONに設定されているときは、
  テーブル'TABLE1'のID列には明示的に値を指定してください。」とエラーが表示されます。

データベース名:Test_01
テーブル名:TABLE1
フィールド:'ID','a1'
・'ID'列は"int"型の"IDENTITY"を"はい"で設定しています。
・"a1"列は"char"型で今回の問題にはあまり関係の無い列です。
=============================
    cmpAdoDs.CommandText:= 'SET IDENTITY_INSERT Test_Kaji01.dbo.TABLE1 ON;' +
                           'select * from Test_01.dbo.TABLE1;';

    cmpAdoDs.Open;

    // 新規行作成
    cmpAdoDs.Append;

    cmpAdoDs.FieldByName('ID').ReadOnly:= false;
    cmpAdoDs.FieldByName('ID').AsInteger:= 20;        // ←任意値設定
    cmpAdoDs.FieldByName('ID').ReadOnly:= true;

    cmpAdoDs.FieldByName('a1').AsString:= 'あ';

    // 新規行確定
    cmpAdoDs.Post;
=============================
"SET IDENTITY_INSERT"を外すとエラーはでなくなりますが、
指定した値は設定されず、自動の値となってしまいます。

もしかして、DataSetでは無理なのでしょうか・・・。

ご教授の方、よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加