【问题标题】:Excel VBA - Oracle DB Connection - Execution of Update Query not workingExcel VBA - Oracle DB 连接 - 执行更新查询不起作用
【发布时间】:2020-06-05 02:00:15
【问题描述】:

我正在使用 Excel VBA 连接 Oracle 数据库并运行一些查询。我已经运行了一些复杂的选择查询,它工作正常。但它无法运行简单的更新查询。当我运行查询时,应用程序挂起并且查询没有执行(我检查了数据库并且没有看到任何更新)。当我使用 SQL 开发人员执行更新查询时,它运行良好。请帮忙。以下是代码 -

Sub checkupd()

strDriver = "Microsoft ODBC for Oracle"
strHost = ThisWorkbook.Sheets("Querygen").Cells(3, 17).Value
strPort = ThisWorkbook.Sheets("Querygen").Cells(4, 17).Value
strUser = ThisWorkbook.Sheets("Querygen").Cells(5, 17).Value
strPassword = ThisWorkbook.Sheets("Querygen").Cells(6, 17).Value
strSID = ThisWorkbook.Sheets("Querygen").Cells(7, 17).Value

'Connection String
strCon = strCon & "CONNECTSTRING=(DESCRIPTION="
strCon = strCon & "(ADDRESS=(PROTOCOL=TCP)"
strCon = strCon & "(HOST=" & strHost & ")(PORT=" & strPort & "))"
strCon = strCon & "(CONNECT_DATA=(SID=" & strSID & "))); "
strCon = strCon & "uid=" & strUser & ";pwd=" & strPassword & ";"

strQueryup = "UPDATE DM_RESERVE SET COL1 = 'new3'"
strQueryup = strQueryup & " WHERE PROD IN ('123','456')"


Set conn = CreateObject("ADODB.Connection")
conn.Open strCon

conn.Execute strQueryup 


MsgBox ("Update Query executed")


conn.Close


Set conn = Nothing
End Sub

【问题讨论】:

  • 仅供参考,我使用的是 excel 2013。我尝试过使用断点进行调试。执行语句存在一些问题。该代码在该语句之前运行顺利,当代码到达“conn.execute”语句时,excel会挂起。有人可能认为执行查询需要时间。我让它挂了 10 分钟,但数据库中仍然没有更新。

标签: excel oracle vba


【解决方案1】:

您是否遇到任何语法问题,我可以看到空格问题。你可以试试这个

strQueryup = "UPDATE DM_RESERVE SET COL1 = 'new3'"
strQueryup = strQueryup & " WHERE PROD IN ('123','456')"

【讨论】:

  • 谢谢拉胡尔。没有遇到任何语法问题。我尝试运行您提供的内容。但遇到同样的问题(Excel 挂起)。我什至尝试将正确的查询放在一行中。但同样的问题。
【解决方案2】:

驱动程序“Microsoft ODBC for Oracle”是 deprecated 的年龄。安装ODBC driver from Oracle,然后再试一次。

【讨论】:

    【解决方案3】:

    感谢大家的帮助。 我能够通过在更新查询之前和之后使用“提交”来解决此问题。

    ...
    conn.Execute "COMMIT"
    conn.Execute strQueryup 
    conn.Execute "COMMIT"
    ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多