現在、ExcelにDBのデータ表示して、指定した箇所を書き替えて更新すると、指定箇所によってループが回ってしまう書き方になっていまして、
1回の処理でできるようにしたいのですが、どのようにしたらいいのかわかりません。
下記を参考に訂正したいのですが、思うように訂正することができません。
何か、アドバイス頂ければと思います。
For 行のループ
Dim 判定用 As Boolean
判定用=false
For 列のループ
If 値が変更されたか判定
判定用=True
** EXIt for**
End if
Next
If 判定用=true
更新処理
END if
Next 行
VBA
1'更新 変更されたデータのみをDBに書きだす 2Sub Button3_Click() 3 4'指定した場所のみ更新 5 6 Dim oraCon As New ADODB.CONNECTION 7 Dim oraCmd As New ADODB.Command 8 Dim strSQL As String 9 Dim i As Integer 10 Dim j As Integer 11 Dim oraRs As New ADODB.Recordset 12 Dim n As Integer 13 14 'DBの接続文字列を設定 15 oraCon.ConnectionString = CONNECTION 16 '接続を開く 17 oraCon.Open 18 19 'SQLを作成 20 strSQL = "SELECT * FROM 社員テーブル1 ORDER BY 社員NO ASC" 21 22 'レコードセットにSQL実行し結果をセット 23 oraRs.CursorLocation = adUseClient 24 oraRs.CursorType = adOpenDynamic 25 oraRs.Open strSQL, oraCon 26 27 ReDim arrRcd(oraRs.Fields.Count, oraRs.RecordCount) 28 arrRcd = oraRs.GetRows 29 30 31 32 '最終行までの処理 33 n = Cells(Rows.Count, "A").End(xlUp).row 34 35 For i = 1 To n 36 For j = 1 To 3 37 '行' '列' '列' '行' 38 If Cells(i, j + 1).Value <> arrRcd(j, i - 1) Then 39 40 strSQL = "update 社員テーブル1 set " _ 41 + " 名前 ='" + Cells(i, 2).Value + "'" _ 42 + ",住所 ='" + Cells(i, 3).Value + "'" _ 43 + ",電話 ='" + Cells(i, 4).Value + "'" _ 44 + " where 社員NO = '" + CStr(i) + "'" 45 46 With oraCmd 47 .ActiveConnection = oraCon 48 .CommandText = strSQL 49 .Execute 50 End With 51 52 End If 53 54 Next j 55 Next i 56 57 Set oraCmd = Nothing 58 oraCon.Close 59 Set oraCon = Nothing 60 61End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。