画面で入力した内容をテーブルに主キーで検索して新規追加または更新するには?

解決


ケンチョウ  2006-06-19 20:38:10  No: 131921

VB.NETで、SQL SERVERを使用。
画面上に主キーとなるコードとその他内容項目を入力してボタンを押すと
テーブルで主キーの一致不一致で、該当しない場合新規追加。
該当する場合上書き。というのをやりたいのですが、わかりません。
新規追加はinsertを使用して出来たのですが、新規と上書きの両方がしたいです。
上書きの時updateというのはわかるのですが、updateだけだと新規追加は出来ない?んですよね。
現在の新規登録は下記のようになってます。

bumonCMD.CommandText = "insert into MAS_bumon(" & _
                                       "bumon_bmn_COD," & _
                                       "bumon_bmn_NAM)" & _
                                       "values(" & _
                                       "'" & edit_BMN_COD.Text & "'," & _
                                       "'" & edit_BMN_NAM.Text & "')"

・MAS_bumon  =  テーブル名
・bumon_bmn_COD/bumon_bmn_NAM  =  フィールド名
・edit_BMN_COD/edit_BMN_NAM  =  画面上の項目
です。
※単純に説明すると、マスタにコード/名称の2項目あり、コードが主キーとなり画面で入力してボタンを押したら、新規登録や上書き更新がしたいのです。

いろいろな言葉で過去ログ検索しましたが、同じようなものが見つからなかった為、新規質問とさせてもらいました。(insertやupdate、更新、上書き、保存etc・・・)
記述に足りないこともあるかと思いますが、宜しくお願いします。


特攻隊長まるるう  2006-06-20 23:30:10  No: 131922

主キーで検索して、
レコードが取得できたら Update 文
取得できなかったら Insert 文
を実行すれば良いのでは?


ケンチョウ  2006-06-20 23:42:55  No: 131923

特攻隊長まるるうさん、ありがとうございます。

「取得できたらupdate文/取得できなかったらinsert文」
という、一致したら/不一致だったらという文がわからなくて。
いままでACCESSを使っていたので、意味はわかるのですが、
vb.netの場合の文法がわからなくて。
初級編の本も何冊か買って見ているのですが、insert/updateそれぞれは
載っていて、両方というのが見つけられなくて。
すみません。宜しくお願いします。


特攻隊長まるるう  2006-06-22 03:18:00  No: 131924

>両方というのが見つけられなくて。
一度に両方を実行するという意味なら、無いんじゃない?
…少なくともボクは知らない。

  VBからデータベースの操作の基本ってのは、VB側
でどうにかするものでは無くて、まずデータベース側の
仕組みがあって、それに合わせてVB側からデータ
ベースにお願いするだけです。
 # SQL文なんてVB側ではタダの文字列ですよね?

  もし、SQL文だけでどうにかしようと思っているなら
VBの掲示板では板違いです。データベース系の
サイトで情報収集してください。
 # ストアドプロシージャとかの話になるのでは?

  で、初心者レベルのVBでの掲示板での回答と
しては、
  1. データベースに Select 文を投げてレコードの検索を実行する。
  2. VB側で、検索結果として得られた DataTable のレコード数を見る。
  3. VB側で、レコード数に応じて実行する処理を分岐する。
といった手順を踏みます。
>初級編の本も何冊か買って見ているのですが、
>insert/updateそれぞれは載っていて、
その組み合わせで十分に実現できると思います。
>いままでACCESSを使っていたので、意味はわかるのですが
どんな方法を使っていたのか知らないけど、同じような
方法で実現できるのでは?

あとはトランザクション処理とか。。。更新の前後で
ロックする?ってくらいだと思います。
特別な処理はありませんので、ヘルプに載ってるサンプルを
組合わせて実現してみてください。


ケンチョウ  2006-06-23 04:01:06  No: 131925

特攻隊長まるるうさん、ありがとうございました。

select文をつければいいんですね。あとは本と
ヘルプをみて文をつなげれば出来るかな。
やってみます。

ありがとうございました。


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

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






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