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・・・)
記述に足りないこともあるかと思いますが、宜しくお願いします。
主キーで検索して、
レコードが取得できたら Update 文
取得できなかったら Insert 文
を実行すれば良いのでは?
特攻隊長まるるうさん、ありがとうございます。
「取得できたらupdate文/取得できなかったらinsert文」
という、一致したら/不一致だったらという文がわからなくて。
いままでACCESSを使っていたので、意味はわかるのですが、
vb.netの場合の文法がわからなくて。
初級編の本も何冊か買って見ているのですが、insert/updateそれぞれは
載っていて、両方というのが見つけられなくて。
すみません。宜しくお願いします。
>両方というのが見つけられなくて。
一度に両方を実行するという意味なら、無いんじゃない?
…少なくともボクは知らない。
VBからデータベースの操作の基本ってのは、VB側
でどうにかするものでは無くて、まずデータベース側の
仕組みがあって、それに合わせてVB側からデータ
ベースにお願いするだけです。
# SQL文なんてVB側ではタダの文字列ですよね?
もし、SQL文だけでどうにかしようと思っているなら
VBの掲示板では板違いです。データベース系の
サイトで情報収集してください。
# ストアドプロシージャとかの話になるのでは?
で、初心者レベルのVBでの掲示板での回答と
しては、
1. データベースに Select 文を投げてレコードの検索を実行する。
2. VB側で、検索結果として得られた DataTable のレコード数を見る。
3. VB側で、レコード数に応じて実行する処理を分岐する。
といった手順を踏みます。
>初級編の本も何冊か買って見ているのですが、
>insert/updateそれぞれは載っていて、
その組み合わせで十分に実現できると思います。
>いままでACCESSを使っていたので、意味はわかるのですが
どんな方法を使っていたのか知らないけど、同じような
方法で実現できるのでは?
あとはトランザクション処理とか。。。更新の前後で
ロックする?ってくらいだと思います。
特別な処理はありませんので、ヘルプに載ってるサンプルを
組合わせて実現してみてください。
特攻隊長まるるうさん、ありがとうございました。
select文をつければいいんですね。あとは本と
ヘルプをみて文をつなげれば出来るかな。
やってみます。
ありがとうございました。
ツイート | ![]() |