VBA“;“查询太复杂”;使用rs.UpdateBatch(MS SQL)时出错
在尝试运行下面的代码时出现“Query too complex”VBA错误,但似乎无法找到原因VBA“;“查询太复杂”;使用rs.UpdateBatch(MS SQL)时出错,vba,excel,Vba,Excel,在尝试运行下面的代码时出现“Query too complex”VBA错误,但似乎无法找到原因 Public Sub Update9MonthsDB(ByVal colSelection As Collection) Dim rs As ADODB.Recordset Dim strSQL As String Call Open_Conn(strDb) Set rs = New ADODB.Recordset rs.ActiveConnection = CON rs.CursorType
Public Sub Update9MonthsDB(ByVal colSelection As Collection)
Dim rs As ADODB.Recordset
Dim strSQL As String
Call Open_Conn(strDb)
Set rs = New ADODB.Recordset
rs.ActiveConnection = CON
rs.CursorType = adOpenKeyset
rs.CursorLocation = adUseClient
rs.LockType = adLockBatchOptimistic
rs.Open ("Select * From [PortfolioDB$]")
For Each Item In colSelection
strSQL = "Grid_Ref='" & Item & "'"
rs.Find strSQL
Debug.Print rs!Grid_Ref
rs("MonthCheck9") = "1"
Debug.Print rs!MonthCheck9
Next Item
rs.UpdateBatch
rs.Close
Call Close_Conn
End Sub
我的连接字符串在代码中的其他地方使用,对于正常的update/select etc语句来说工作正常。我的调试打印显示集合不是空的,并通过其他调试值检查返回正确的值。但一旦到达rs.UpdateBatch,它就会崩溃为“查询太复杂”错误
编辑:只是想澄清一下,很抱歉,这是在更新作为数据库的excel电子表格(后端)
编辑:注释中要求的下面的连接字符串
Sub Open_Conn(strDb As String)
On Error GoTo conError
Debug.Print (Time() & " - Connecting to: " & strDb)
Set CON = New ADODB.Connection
CON.Provider = "Microsoft.ACE.OLEDB.12.0"
CON.Open "Data Source=" & strDb & ";" & _
"Extended Properties=""Excel 12.0 XML;HDR=Yes"""
Debug.Print (Time() & " - Connected")
Exit Sub
conError:
logevents ("There was an error processing the connection: " & strSQL & _
vbNewLine & vbTab & vbTab & vbTab & vbTab & Error(Err))
Resume Next
End Sub
哪一行返回错误?你能直接在RDBMS中运行查询吗?它出错的那一行是
rs.UpdateBatch
它更新了我正在用作后端的另一个电子表格。我的雇主不喜欢Access数据库,但需要能够完成类似工作的东西,所以不确定我将如何直接测试它?请尝试调用该方法。在进入下一个项目之前,您需要在循环中处理。使用某些数据源、大量数据和没有主键的数据集。您的雇主不喜欢Access,但可以使用Excel作为数据库?@TimWilliams更正哪一行返回错误?你能直接在RDBMS中运行查询吗?它出错的那一行是rs.UpdateBatch
它更新了我正在用作后端的另一个电子表格。我的雇主不喜欢Access数据库,但需要能够完成类似工作的东西,所以不确定我将如何直接测试它?请尝试调用该方法。在进入下一个项目之前,您需要在循环中处理。使用某些数据源、大量数据和没有主键的数据集。您的雇主不喜欢Access,但可以使用Excel作为数据库?@TimWilliams正确吗