※ ChatGPTを利用し、要約された質問です(原文:VB.NET、mdbに新しいデータを追加したい)
VB.NETでmdbに新しいデータを追加したい
このQ&Aのポイント
VB.NETのプログラムでオペレータの新規登録と既存データの更新を行いたい
オペレータ名が一致する場合にはデータを更新し、一致するデータがない場合には新規登録を行いたい
VB.NET初心者でマイクロソフトの文献も難しく、どのようにプログラムを書けば良いかわからない
超初心者で申し訳ありません。下のプログラムにおいてオペレータ名が一致する場合には
更新(UPDATE)する。一致するデータが無い場合には新規登録を行いたいのですが
どのように書いたらいいのかさっぱりでNETを相当探したのですが回答が見つかりません。
お手数ですがどなたか助けていただけませんでしょうか。なお、一致する場合には
更新(UPDATE)は動作するようになりました。
VBを始めて2ケ月になります。Microsoftの文献を見ても難しくてまだ理解できるレベルに達していません。どなたか、よろしくお願い致します。
「データ構造」
ID integer
オペレータ名 string
ランク integer
パスワード string
補足 string
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'■■■■■■■■■■■■■■■■■■■■■■■■
'■■■ オペレータの新規/更新登録 ■■■
'■■■■■■■■■■■■■■■■■■■■■■■■
'-----------------------------------------------------------
'コネクションを作成
Dim CurrentDir As String = System.IO.Directory.GetCurrentDirectory()
Dim cn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & CurrentDir & "\operator.mdb"
'**************** コマンドを作成 ****************
Dim OPE As String
Dim PWORD As String
Dim HOSOKU As String
Dim RANK As Integer
OPE = オペレータ名.Text
RANK = ランク.Text
HOSOKU = 補足.Text
PWORD = パスワード.Text
Dim cmd As New OleDbCommand(
"UPDATE table1 " &
"SET ランク = ? " & "," &
"パスワード = ? " & "," &
"補足 = ? " &
" WHERE オペレータ名 = ? ", cn)
'************** パラメータを作成 ****************
cmd.Parameters.Add("ランク", OleDbType.Integer).Value = RANK
cmd.Parameters.Add("パスワード", OleDbType.Char).Value = PWORD
cmd.Parameters.Add("補足", OleDbType.Char).Value = HOSOKU
cmd.Parameters.Add("オペレータ名", OleDbType.Char).Value = OPE
'実行
cn.Open()
cmd.ExecuteNonQuery()
'--------------------------
Dim COUNTC As Integer
COUNTC = cmd.ExecuteNonQuery()
'************************************ elseの中に簡単に記載すのって難???***
If COUNTC > 0 Then
MessageBox.Show("更新 完了")
Else
'INSERTの手順
’★ ここにmdbの中に 項目値 OPE、RANK、HOSOKU、PWORDを挿入(追加)
する命令を入れたい。
'実行
cmd.ExecuteNonQuery()
End If
’**********************************
'--------------------------
cn.Close()
End Sub
お礼
お世話になりました。2回目の質問をさせてもらいましたが解決しました。まことに感謝感激です。 ERORの内容は変数cmdが重複して使用されているということがmicrosoftのサイドで確認できました。 そこでcmd→cmd1にして書き替えるとばっちり動作しました。 cmd.Parameters.Add等の単語の意味がピンとくるように自己研鑽したいと思います。 すばらしい回答を頂きまことにありがとうございました。解決です。
補足
早速の回答ありがとうございます。 プログラムを記入してみたのですが 下記IF(else)文中のDim cmdのcmdにてERRORが出ます。 内容:”変数'cmd'はそれを囲むブロック内の変数を非表示にします” else文の中に記載してはだめなのでしょうか?。 If COUNTC > 0 Then MessageBox.Show("更新 完了") Else 'INSERTの手順 '*** パラメータを作成 **************** '**** パラメータを作成 **************** Dim cmd As New OleDbCommand( "INSERT INTO table1 (オペレータ名, ランク, 補足, パスワード) VALUES " & "(?, ?, ?, ?)", cn) cmd.Parameters.Add("ランク", OleDbType.Integer).Value = RANK cmd.Parameters.Add("パスワード", OleDbType.Char).Value = PWORD cmd.Parameters.Add("補足", OleDbType.Char).Value = HOSOKU cmd.Parameters.Add("オペレータ名", OleDbType.Char).Value = OPE cmd.ExecuteNonQuery() End If '-------------------------- cn.Close()