
超初心者で申し訳ありません。下のプログラムにおいてオペレータ名が一致する場合には
更新(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
No.1ベストアンサー
- 回答日時:
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()
ところでcn.Open()の後にcmd.ExecuteNonQuery()が2回もありますが、1回で十分です。
この回答への補足
早速の回答ありがとうございます。
プログラムを記入してみたのですが
下記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()
お世話になりました。2回目の質問をさせてもらいましたが解決しました。まことに感謝感激です。
ERORの内容は変数cmdが重複して使用されているということがmicrosoftのサイドで確認できました。
そこでcmd→cmd1にして書き替えるとばっちり動作しました。
cmd.Parameters.Add等の単語の意味がピンとくるように自己研鑽したいと思います。
すばらしい回答を頂きまことにありがとうございました。解決です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのセルにユーザー名...
-
CSVファイルを添付するときにパ...
-
知恵袋の永久利用停止
-
メールを返信したら、英語のメ...
-
インスタの乗っ取り解除につい...
-
メールアドレスで上付きのハイフン
-
サンダーバードでメールが受信...
-
Steamのアカウントにログインで...
-
Excelを開くと、上画面に「サイ...
-
YouTubeが毎回ログインしないと...
-
pixivで新規登録しようと思い、...
-
runas実行した時にきかれるパス...
-
Access ファイルの権限を設定...
-
インスタで他人のアカウントに...
-
インスタの捨て垢で友達のスト...
-
「@」(アットマーク)の無いメ...
-
カカオで退会せずに、アプリだ...
-
Outlookで、メールを他...
-
ユニクロやGUのシフト管理アプ...
-
sageがついてるメールアドレス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルにユーザー名...
-
Steamのアカウントにログインで...
-
CSVファイルを添付するときにパ...
-
メールを返信したら、英語のメ...
-
ユニクロやGUのシフト管理アプ...
-
runas実行した時にきかれるパス...
-
YouTubeが毎回ログインしないと...
-
インスタの乗っ取り解除につい...
-
「そのメールアドレスはすでに...
-
携帯電話を解約してもSMSの受信...
-
カカオで退会せずに、アプリだ...
-
「@」(アットマーク)の無いメ...
-
ワードに入力したメールアドレ...
-
不正ログインされました。対応...
-
カカオトークを退会せずにアン...
-
インスタのアイコンについてるN...
-
pixivで新規登録しようと思い、...
-
存在しないアドレスにメールを...
-
メールアドレスを人に教えるの...
-
Access ファイルの権限を設定...
おすすめ情報