VBAを使用して のブック内のデータからテーブルにレコードを挿入したいのですが、挿入に問題はありませんが、問題は重複しています。VBAを使用してExcelからDB2データベースにレコードを挿入する方法
レコードがデータベース内に存在しない場合にのみ、Excelのレコードを挿入するにはどうすればよいですか?
これは私の現在のものです。
さらに、更新されたレコードや別のモジュールが必要なレコードを持つことができますか?
Sub Button1_Click()
Dim conn As New ADODB.Connection
Dim iRowNo As Integer
Dim sequipid, stype, sname As String
With Sheets("Sheet1")
'Open a connection to SQL Server
conn.Open "Driver={IBM DB2 ODBC DRIVER};Database=XXXX;Hostname=192.168.XXX.XX;Port=50000;Protocol=TCPIP;Uid=" & "XXXX" & ";Pwd=" & "XXXXXX" & ";CurrentSchema=LYNX;"
'Skip the header row
iRowNo = 2
'Loop until empty cell in CustomerId
Do Until .Cells(iRowNo, 1) = ""
sequipid = .Cells(iRowNo, 1)
stype = .Cells(iRowNo, 2)
sname = .Cells(iRowNo, 3)
'Generate and execute sql statement to import the excel rows to SQL Server table
conn.Execute "INSERT INTO OH_TEST_TABLE (EQUIPID, TYPE, NAME) VALUES ('" & sequipid & "','" & stype & "','" & sname & "')"
iRowNo = iRowNo + 1
Loop
MsgBox "RECORD UPDATED"
conn.Close
Set conn = Nothing
End With
End Sub
最も簡単な(そして最も堅牢な)方法は、データベースに適切な一意制約を追加することです。バックエンドでデータの整合性を維持するためにクライアントコードが責任を負うべきではありません。 – Comintern
最初にデータベースに現在の 'EQUIPID'を問い合わせます。存在すれば更新を実行し、そうでなければ挿入を実行します。 –
@TimWilliamsので、基本的にconn.executeの後に ""&equipid& "'が存在する(oh_test_tableから1を選択するとequipid ='"&equipid& "')、次にoh_test_tableなどを更新してください – OVO