C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 129 を表示中)
■76404 / )  伝票更新登録
□投稿者/ IceT (1回)-(2015/07/07(Tue) 13:42:33)

分類:[C#] 

皆様は伝票の更新時(登録済みの伝票を呼び出して、修正後再登録)の処理はどのようになさってるのでしょうか?
例えば、各行に修正フラグを設定し、修正した行のみをUpdate文で処理する。
もしくは、呼び出した伝票番号を先ず全削除し、新たに修正後の伝票をInsert文で全て処理する。

私は後者のほうが単純だと思い以下のように処理してみました。
using( var _conn = new FbConnection(sConnStr) )
{
  _conn.Open();
  using( FbTransaction _tran = _conn.BeginTransaction() )
  {
    using( FbCommand _cmd = _conn.CreateCommand() )
    {
      _cmd.Transaction = _tran;

      // 削除(Delete文の実行)
      _cmd.CommandText = sDelSQL;
      _cmd.ExecuteNonQuery();

      // 登録(リストに登録した各行のInsert文を実行)
      foreach( var sSQL in lstSQL)
      {
        _cmd.CommandText = sSQL;
        _cmd.ExecuteNonQuery();
      }
    }
    _tran.Commit();
  }
_conn.Close();

こんな感じで実行すると
violation of PRIMARY or UNIQUE KEY constraint "INTEG_365" on table "T_TABEL"
エラーになります。
トランザクション内でのDelete文とInsert文はだめなのでしょうか?
他によい手段があるのでしょうか?
どうぞよろしくおねがいします。
(visualstudio2012,win8pro,.NetFramework4.5)

返信 編集キー/


管理者用

- Child Tree -