0
我目前有拉从表A说做B表中不存在的所有记录的工作表,然后我有一个插入这些值到表B.更新数据库连接
宏但是我意识到,如果在插入宏之前查询没有刷新,它会产生重复项。
使用当前的宏,我如何在插入之前和之后包含刷新?
Sub Insert_New_Bills()
Dim conn As New ADODB.Connection
Dim iRowNo As Integer
Dim sBILL_NUM, sROCKTENN_DOC, sACTION, sNOTE1, sNOTE2 As String
With Sheets("NEW BILLS")
'Open a connection to SQL Server
conn.Open "Driver={IBM DB2 ODBC DRIVER};Database=BROWN;Hostname=192.168.100.44;Port=50000;Protocol=TCPIP;Uid=" & "User" & ";Pwd=" & "Maddox2009" & ";CurrentSchema=LYNX;"
'Skip the header row
iRowNo = 2
'Loop until empty cell in COLUMN1
Do Until .Cells(iRowNo, 2) = ""
sBILL_NUM = .Cells(iRowNo, 2)
sROCKTENN_DOC = .Cells(iRowNo, 3)
sACTION = .Cells(iRowNo, 4)
sNOTE1 = .Cells(iRowNo, 5)
sNOTE2 = .Cells(iRowNo, 6)
'Generate and execute sql statement to import the excel rows to SQL Server table
conn.Execute "INSERT INTO OH_CU_WR_TEMPLATE (BILL_NUMBER, ROCKTENN_DOC, ACTION, NOTE1, NOTE2) values ('" & sBILL_NUM & "','" & sROCKTENN_DOC & "', '" & sACTION & "', '" & sNOTE1 & "', '" & sNOTE2 & "')"
iRowNo = iRowNo + 1
Loop
MsgBox "RECORD UPDATED"
conn.Close
Set conn = Nothing
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End With
End Sub
我不知道关于'db2'的语法。但我宁愿使用与此类似的解决方案:http://stackoverflow.com/questions/9911659/can-i-use-if-not-exists-to-insert-a-row-if-the-row -s-not-already-in-in-s尤其是如果您允许同一个Excel文件的多个实例,则无法再控制哪些记录已经插入到数据库中,哪些记录仍处于待处理状态。除此之外,我会实施一个工作表事件来跟踪哪些已上传,哪些尚未上传。但是这个解决方案不会像我提出的第一个那样简洁。 – Ralph