- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数条件でoracleデータ更新)
複数条件でoracleデータ更新
このQ&Aのポイント
- excelのA1にTEST、C1にSERIAL01、F1にKOTEI1のデータが入っていて、oracleのテーブルデータをexcelマクロで更新させようとしています。
- マクロを実行すると、oracleのTABLE1のデータはSERIAL01に関してKOMOKU1の列がTESTに更新されます。
- KOMOKU3がSERIAL01、KOMOKU6がKOTEI1のAND条件だった場合に、KOMOKU1を更新させたいのですが、対象のKOMOKU1がデータ更新されません。何が悪いのか修正いただきたく。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ぱっと見間違いは無さそうに思えます。 私だったら次のように書き、 投げている生のSQL文を確認します。 Option Explicit ぱっと見間違いは無さそうに思えます。 私だったら次のように書き、 投げている生のSQL文を確認します。 Option Explicit Sub aaa() Dim SQL As String With ThisWorkbook.ActiveSheet SQL = "" SQL = SQL & "UPDATE TABLE1" & vbCrLf SQL = SQL & "set KOMOKU1 = '" & .Cells(1, 1).Value & "'" & vbCrLf SQL = SQL & "WHERE" & vbCrLf SQL = SQL & "((KOMOKU3 = '" & .Cells(1, 3).Value & "')" & vbCrLf SQL = SQL & "AND" & vbCrLf SQL = SQL & " (KOMOKU6 = '" & .Cells(1, 6).Value & "'))" & vbCrLf End With Debug.Print SQL '又は 'MsgBox (SQL) With cmd .CommandText = SQL 'Debug.Print .CommandText End With End Sub
お礼
参考になりました。ありがとうございます
補足
上記aaaを参考にさせていただきやってみましたが、結果は同じで更新されませんでした。 しかしながら、提示いただいた内容はWHEREのあとに(がついています。 これを対応すると更新できました。 With cmd .CommandText = "UPDATE TABLE1 set KOMOKU1 = '" & ActiveSheet.Cells(1, 1) & "' WHERE (KOMOKU3 = '" & ActiveSheet.Cells(1, 3) & "' AND KOMOKU6 = '" & ActiveSheet.Cells(1, 6) & "')" End With