先日、「コンボボックスのリスト外入力について」で質問させて頂き、
まだ解決していないのに再度質問して申し訳ありません。
こちらの処理の方を先に解決しておかなければ
先日の質問が無意味になってしまうもので・・・
VB2005にて現在作成しているのですが、
SQLserverのデータベースに接続しています。
フォームは単票形式で作成していて、レコード毎に表示させています。
新規追加の場合はテーブルに反映されるのですが、
既存のレコードを修正してテーブルに反映させようとすると、
「同時実行違反:updatecommandによって、処理予定の1レコードのうち0件が処理されました。」と出てしまいます。
フォームには、テキストボックスがいくつかあり主キーも設定されています。
その内、主キー以外のテキストボックスをどれか1つでも内容変更すると
その1レコードが更新されるようにしたいのです。
先日の質問が解決していないのに申し訳ありませんが、
どなたかご指導下さい。
過去ログ検索『同時実行違反』で引っ掛かる内容を確認してください。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200503/05030080.txt
特攻隊長まるるう様
ありがとうございます。
実は、過去ログでご提示頂いた場所は確認していました。
一度初めからやり直そうと思い、
ADO.NET基礎講座の最終回に記載されていた方法で
行おうと思ったのですが、
ツールボックスのデータタブの中に「sqldataadapter」コントロールが
出てきませんでした。
serverとの接続は確認済みです。
基礎講座に記載されている内容が前に進まなくなってしまいました。
私はVB2005を使用しているのですが、
このデータアダプタ構成ウィザードは使えないのでしょうか?
> 私はVB2005を使用しているのですが、
> このデータアダプタ構成ウィザードは使えないのでしょうか?
ヘルプに載ってるようです。
[方法 : ウィザードを使用してデータ アダプタを作成する]
http://msdn2.microsoft.com/ja-jp/library/zc6tc8ew.aspx
TableAdapter なるものもあるようなので、過去ログに無いような
新しい手法については、まだ情報も少ないでしょうから、自分で
勉強する必要があると思います。
ありがとうございます。
早速、ご提示頂いたヘルプを確認したのですが、
私のVBにはツールを右クリックしても「アイテムの選択」が
出てきませんでした。
dataadapterはtableadapterと類似する内容と思いますので、
一度tableadapterからの方法であたってみます。
TableAdapter 構成ウィザードにて作成しているのであれば、
SQL 指定時の[詳細オプション]で、「オプティスティック同時実行制御」を
Off にしてみてください。
サーバエクスプローラ等からドラッグ & ドロップすることによって
TableAdapter を作成しているのであれば、TableAdapter のプロパティを開き、
DeleteCommand および UpdateCommand プロパティ内の SQL を見直して、
検索条件が主キー項目だけになるようにしてみてください。
あるいは、フィールドの型名指定が違っていたことよって、同一行を
判定できずに、1 件のデータを Update したはずが、「0件更新」として
処理されてしまっているパターンもあります。
それでも現象が変わらないようであれば、第三者でも試せるように、
SQL Server の Northwind サンプルDB の項目を使って説明するか、
あるいは、単純化した DB 側のテーブル構造と、TableAdapter に作成された
Select/Insert/Delete/UpdateComand の内容を教えてもらえないでしょうか。
特攻隊長まるるう様、魔界の仮面弁士様
ありがとうございます。
魔界の仮面弁士様のご指導を読んで
再度、一番初めから作成し直しましたら、
TableAdapterをドラッグ&ドロップにて作成したのに、
DeleteCommandとUpDateCommandが生成されていない事に気づき
SQLのテーブルを確認しました。
そうしましたら、そのテーブル内に主キーが設定されていませんでした。
デバックしました所、希望通りの更新ができる様になりました。
ご指導のおかげで非常に良い知識を得ました。
また、不明点がでてきましたら宜しくお願いします。
ありがとうございました。
ツイート | ![]() |