DBに接続して、ExcelにDBの情報をExcelに全件表示させて、Excelから一部書き換えて書き換えた所のみ、DBに書き込みしたいのですが、いちよプログラムは動くのですが、ループ(繰り返し)処理が更新するたび動くようにコードを書いてしまって、一回で書くことができません。色々考えたのですが進めないのでご質問させて頂きました。お手数をおかけしますが、アドバイスよろしくお願い致します。
VBA
1'接続文字列 2Const CONNECTION = "DRIVER={Microsoft ODBC for Oracle};CONNECTSTRING=XE;UID=system;PWD=systemsss;" 3 4'指定した場所のみ更新 5Sub Button3_Click() 6 7 Dim oraCon As New ADODB.CONNECTION 8 Dim oraCmd As New ADODB.Command 9 Dim strSQL As String 10 Dim i As Integer 11 Dim j As Integer 12 Dim oraRs As New ADODB.Recordset 13 Dim n As Integer 14 15 oraCon.ConnectionString = CONNECTION 16 oraCon.Open 17 18 'SQLを作成 19 strSQL = "SELECT * FROM 社員テーブル1 ORDER BY 社員NO ASC" 20 21 'レコードセットにSQL実行し結果をセット 22 oraRs.CursorLocation = adUseClient 23 oraRs.CursorType = adOpenDynamic 24 oraRs.Open strSQL, oraCon 25 26 ReDim arrRcd(oraRs.Fields.Count, oraRs.RecordCount) 27 arrRcd = oraRs.GetRows 28 29 30 31 '最終行までの処理 32 n = Cells(Rows.Count, "A").End(xlUp).row 33 34 35For j = 1 To n 36 For i = 1 To 3 37 38 If Cells(j, i + 1).Value <> arrRcd(i, j - 1) Then 39 40 strSQL = "update 社員テーブル1 set " _ 41 + " 名前 ='" + Cells(j, 2).Value + "'" _ 42 + ",住所 ='" + Cells(j, 3).Value + "'" _ 43 + ",電話 ='" + Cells(j, 4).Value + "'" _ 44 + " where 社員NO = '" + CStr(j) + "'" 45 46 With oraCmd 47 .ActiveConnection = oraCon 48 .CommandText = strSQL 49 .Execute 50 End With 51 52 End If 53 54 Next i 55 Next j 56 57 Set oraCmd = Nothing 58 oraCon.Close 59 Set oraCon = Nothing 60 61End Sub
コードはマークダウン書式のコードブロック内に記述してください。そうするとコードが読みやすくなり回答が付きやすいです。
下記のような記述になります。
```vba
ここにコードを記述
```
あるいは、コード部分を選択して、ツールバーの<code>ボタンをクリックしてもOKです。
ご丁寧にありがとうございます。解答がついたら幸いです。
編集していただいたようですが、まだ、マークダウン書式が適用されてません。
他の質問スレッドのコード部分をみてください。読みやすく色付けされています。
そうなるようにプレビューを見ながらトライしてみてください。
うまくできたようですね。ありがとうございました。
ありがとうございます。
回答1件
あなたの回答
tips
プレビュー