質問

asp.NET の型付きデータセットを使用して、SQL Server 2000 データベースから最後に挿入された ID を取得できません

テーブルアダプターを作成し、「データテーブルを更新」と「挿入、更新、および削除ステートメントを生成」にチェックを入れました。これにより、Fill メソッドと GetData メソッド、および Insert、Update、Select、および Delete ステートメントが自動生成されます。

このスレッドで考えられるすべての解決策を試しました

http://forums.asp.net/t/990365.aspx

しかし、私はまだ成功していません。常に 1 (= 影響を受ける行の数) を返します。自動生成された insertCommand が私のニーズに完全に適合しているため、個別の挿入メソッドを作成したくありません。

上記のスレッドで提案されているように、InsertCommand SQL 構文を更新して SELECT SCOPY_IDENTITY() または同様のものを追加しようとしました。ReturnValue 型のパラメーターを追加しようとしましたが、取得されるのは影響を受ける行の数だけです。

これについて別の見解を持っている人はいますか?前もって感謝します!ステイン

役に立ちましたか?

解決

私は正常に私のテーブルアダプタを使用して挿入した後、増分IDを取得する方法を発見します。

私のアプローチは少し異なっている、私は挿入を行うためにストアプロシージャを使用していますので、私のinsertコマンドはすべての値が、IDを持って、私はspはちょうど呼び出しIDを返す作っ:  SETする@ ID = SCOPE_IDENTITY() その後  TRANをCOMMIT そして最後の行は次のようになります  RETURN @ID

それから私は、idフィールドに、戻り値を入れて自動的に実行されますのでとき、InsertCommandはのための私のテーブルアダプタのパラメータを検索し、テーブルの増分IDの列に@RETURNVALUEを設定します。

このヘルプを願っています。

他のヒント

私はこの上の任意のより多くの時間を無駄にする余裕がない、あきらめることにしました。 私は、インサートのIDをhgetするために、私は選択MAX(ID)クエリを実行された後、Insert文を使用します。

誰もが解決策を持っている必要がある場合は、私はここでそれを読むことを喜んでいるよ。

のおかげで Stijn

更新/挿入操作後にデータテーブルを更新するようにテーブルのテーブルアダプターに伝える必要があります。これがその方法です。

  1. のプロパティを開きます TableAdapter -> デフォルトの選択クエリ -> 高度なオプション. 。のオプションにチェックを入れます データテーブルを更新する. 。今すぐアダプターを保存します。ここで、table-adapter で update を呼び出すと、 データテーブルは更新/挿入操作後に更新[リフレッシュ]されます データベース テーブルの最新の値が反映されます。 主キーまたは列が自動インクリメントに設定されている場合、データテーブルには最近の更新後の最新の値が含まれます。

  2. これで、更新を TableAdapterObj.Update(ds.dataTable) として呼び出すことができます。

  3. DataTable(ds.dataTable) 列から最新の値を読み取り、更新/挿入前に子テーブルにそれぞれの値を割り当てます。. 。これは希望どおりに機能します。

代替テキスト http://ruchitsurati.net/files/tds1.png

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top