ここから本文です

VB2008とSQLServer2008

cge********さん

2011/2/1204:19:34

VB2008とSQLServer2008 VB上で更新のボタンを押すと、データベースを更新できるように
なっているのですが、それを前提で質問させてください。

データベース上にはcodeとnameのカラムがあり
FORM1上で、codeとnameを入力した後ボタンを押すことで
更新されるようになっています。
それは今現在できています。
(キーはcodeです!!!)

しかし、更新ということはすでにデータベース上に
存在するデータでないといけません。
データベースには
codeが01から03の3つしかない場合に

form1上で
code 04
name ABC

と入力した場合はなにも変化のないまま終了するのですが、
データベースにcode04は存在しませんとエラーメッセージを
出させたいです。
(データは登録もできるので、データベース上は必ずしも01~03だけではない)

どのような方法がありますでしょうか。

サンプルと合わせて説明してくださると嬉しいです。
よろしくお願いします。

補足該当codeのところが04から1000まであったとしたらこの書き方だと現実的ではないですよね。04を入力するのは一例であって、あらゆる場合に対応したいのですが

閲覧数:
293
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

tnk********さん

編集あり2011/2/1215:35:35

更新前に該当行があるか確認すればいいのでは。

ADODB Recordset を使った場合。
-----------------------------
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "接続文字列"
strSQL="select code from table1 where code=該当code"
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText
result = rs.RecordCount
if result < 1 then
msgbox "該当データがありません"
else
更新するコード
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

補則
where 句部分は変数をバインドすればいいのでは、、、、、、

Mycode=textbox1.text
strSQL="select code from table where code=" & Mycode

ごめん。if条件逆だったから訂正

ベストアンサー以外の回答

1〜1件/1件中

sno********さん

2011/2/1215:08:37

tnkats16000さんが回答した例が最適だと思うのですが・・・。

補足の「該当codeのところが04から1000まであったとしたらこの書き方だと現実的ではないですよね」っていうのは、
FORM上には、無数に、codeとnameが入力できるような、データグリッド形式のものがあるということでしょうか?
一度に更新できるcodeとnameの想定数を提示してくれませんか?

入力項目数が、codeとname、それぞれ1つずつなら、前述の例がベストだと思います。

もし、データグリッド形式のように、無数に入力できるなら、DataSetなどを用いる方法でないと
厳しそうですね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる