2
我需要將excel中的數據上傳到數據庫中,但是我需要首先檢查表中是否存在每個上載的數據,以便更新或插入數據。'如果存在'VBA中的SQL查詢與ADODB數據庫連接
爲了區分更新或插入,我正在使用SQL IF EXIST命令,該命令在SQL中可以正常工作。當我在Excel VBA中嘗試此操作時,出現錯誤消息:「命令文本未設置爲命令對象。」下面
Dim strSQL As String
Dim Value As String
Dim Reference As String
Set RCconn = New ADODB.Connection
Set TuneCMD = New ADODB.Command
' Establish Recordset
Set Results = New ADODB.Recordset
'Establish a Connection
With RCconn
.Provider = "SQLOLEDB"
.ConnectionString = ConStr
End With
'Open the connection
RCconn.Open
'i Columns
For i = 5 To 10 '16
'j rows
For j = 6 To 60 '145
Value= Sheets("Value").Cells(j, i)
Reference= "W_F/P_" & Sheets("Reference").Cells(j, i)
stringTest = "IF EXISTS (SELECT * FROM UploadTable WHERE Ref = '" & Reference & "') "
stringTest = stringTest & "UPDATE Val "
stringTest = stringTest & "SET Val = '" & Value & "' "
stringTest = stringTest & "where Ref = '" & Reference & "' "
stringTest = stringTest & "Else "
stringTest = stringTest & "INSERT INTO UploadTable (Val , Ref) "
stringTest = stringTest & "values ('" & Value & "', '" & Reference & "')"
RCconn.Execute strSQL
Next
Next
Set Results = Nothing
RCconn.Close
Set RCconn = Nothing
查看代碼是否是「是否存在」不能在VBA中使用的情況下?有沒有解決辦法?
感謝
謝謝Pradeep。我嘗試在'RCconn.Execute strSQL'之前添加'Sheets(「Test_Page」)。Cells(j,i)= stringTest'。將輸出應用到SQL Server Maagement Studio允許我無誤地運行查詢。 – Selrac
在您的連接字符串中,如果您暫時設置了'User ID = sa'和'Password = <無論您的sa密碼>是否有效? –
謝謝Pradeep。我的問題是'RCconn.Execute strSQL'。我改爲'RCconn.Execute stringTest',所有的工作都很好。感謝您確認使用'if esxist'的可能性,同時也感謝您在正確的軌道上解決此問題。非常感謝 – Selrac