繁体   English   中英

如何修复SQL查询上的运行时错误91?

[英]How to fix runtime error 91 on SQL Query?

此代码从用户请求两个输入变量,然后在查询中使用这些变量从公司内部软件返回数据。 我从公司其他人毫无疑问使用的宏中改编了这段代码。

我的宏:

  • 编译没有问题
  • 遇到运行时错误“ 91”:对象变量或未设置块变量
    • 发生在With.Selection.ListObject.QueryTable

注意:一些详细信息,例如公司名称,服务器,登录名等已删除!

Option Explicit

Public EN As String
Public REV As String
Dim SearchString As String
Dim SearchString1 As String
Dim SearchString2 As String


Public Sub QueryImport()

EN = Import_Details.EN.Value
REV = Import_Details.REV.Value

Application.ScreenUpdating = False

Unload Import_Details

SearchString = EN
SearchString = EN & Chr(37)
SearchString = EN & Chr(47) & REV & Chr(37)

Sheets("Import").Range("A2").Select

With Selection.ListObject.QueryTable
     .Connection = _
    "ODBC;DRIVER=SQL Server;SERVER=XXXXXX-       XX;UID=XX;PWD=XXXXXX;APP=Microsoft Office 2013;WSID=XXXX;DATABASE=XXX-Live"
    .CommandText = _
    "SELECT Enquirys_list_with_Parts.""Item No"", Enquirys_list_with_Parts.Description, Enquirys_list_with_Parts.""Part No"", Enquirys_list_with_Parts.Qty, Enquirys_list_with_Parts.Price, Enquirys_list_with_Parts.Total" & Chr(13) & "" & Chr(10) & _
    "FROM ""Emax-Live"".dbo.ENQUIRY_LINES_LIST ENQUIRY_LINES_LIST, ""Emax-Live"".dbo.Enquirys_list_with_Parts Enquirys_list_with_Parts, ""Emax-Live"".dbo.Quote_Line_Qty_Drop_list Quote_Line_Qty_Drop_list" & Chr(13) & "" & Chr(10) & _
    "WHERE Enquirys_list_with_Parts.""Enquiry No"" = ENQUIRY_LINES_LIST.""Enquiry No"" AND Enquirys_list_with_Parts.""Part No"" = Quote_Line_Qty_Drop_list.Part_No AND ENQUIRY_LINES_LIST.Enquiry_Line_id = Enquirys_list_with_Parts.Enquiry_Line_id AND ((Enquirys_list_with_Parts.""Enquiry No"" Like '" & SearchString1 & "' And Enquirys_list_with_Parts.""Enquiry No"" Like '" & SearchString & "') AND (Quote_Line_Qty_Drop_list.""Quote No"" Like '" & SearchString2 & "'))" & Chr(13) & "" & Chr(10) & _
    "ORDER BY Enquirys_list_with_Parts.""Item No""" _

    .Refresh BackgroundQuery:=False
End With

Application.ScreenUpdating = True

End Sub

您正在尝试引用一个从未设置的对象。

Dim MyQueryTbl as QueryTable

Set MyQueryTbl = Sheet1.QueryTables(1)

然后,您可以操纵MyQueryTbl对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM