gpt4 book ai didi

sql - 使用 ADODB 数据库连接的 VBA 中的“如果存在”SQL 查询

转载 作者:行者123 更新时间:2023-12-03 02:51:07 29 4
gpt4 key购买 nike

我需要将Excel中的数据上传到数据库中,但每次上传时我都需要先检查表中是否有数据,以便更新或插入数据。

为了区分更新或插入,我使用了 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中是否不能使用“IF EXIST”?有解决办法吗?

谢谢

最佳答案

ADODB.Connection.Execute 将传递查询发送到您的数据库。该字符串中的 SQL 语句是什么并不重要;如果你的数据库可以理解它,它将被执行。因此,请再次检查您的 SQL 查询。

试试这个:

RCconn.Execute strSQL 行上放置一个断点。当调试器在此处中断时,检查 strSQL 的值。复制它并直接在SQL Server Management Studio中执行。如果这不起作用,请更正构建该字符串的代码。如果有效,则说明您的 ConnectionString 有问题。在这种情况下,请检查您在 ConnectionString 中用于连接的用户 ID 和密码是否具有足够的权限。

关于sql - 使用 ADODB 数据库连接的 VBA 中的“如果存在”SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19975882/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com