繁体   English   中英

EXCEL VBA-SQL字符串未从Access返回数据

[英]EXCEL VBA - SQL String not returning data from Access

我正在使用Excel根据存储在Access中的数据生成报告。 我对一个特定的查询执行ping操作,以根据单元格的值返回完整的数据集。 我有3个其他相同类型的模块,它们可以从另一个查询中获取数据,这些查询可以完美地工作。 以下内容使我头痛,因为它没有返回任何记录。 当我进入Access并使用相同的SQL字符串创建虚拟查询时,Access会按预期返回记录。 有人可以帮忙吗? 谢谢,

    Sub fc_GetPLP()
    Dim Z_Connection As Object
    Dim Z_Recordset As Object
    Dim Z_OnlineOD As String
    Z_OnlineOD = Sheet2.Range("F6").Value

    Dim Z_Access_Path As String
    Dim Z_Access_File As String
    Z_Access_Path = Sheet2.Range("C2").Value
    Z_Access_File = Sheet2.Range("C3").Value

    Set Z_Connection = CreateObject("ADODB.Connection")
    Z_Connection.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Z_Access_Path & Z_Access_File

    Set Z_Recordset = CreateObject("ADODB.RECORDSET")
    Z_Recordset.activeconnection = Z_Connection

    Z_SQL = "SELECT Q_SPA_Pricing.* FROM Q_SPA_Pricing WHERE (Q_SPA_Pricing.Qf_FAR_OD='" & Z_OnlineOD & "')"
Debug.Print Z_SQL

    Z_Recordset.Open Z_SQL

Debug.Print Z_Recordset.EOF

    Sheet4.Columns("B:H").Clear
    Sheet4.Range("B2").CopyFromRecordset Z_Recordset

    Z_Recordset.Close
    Z_Connection.Close
    Set Z_Connection = Nothing
End Sub

例如,我刚刚返回的SQL是:

SELECT Q_SPA_Pricing.* FROM Q_SPA_Pricing WHERE (Q_SPA_Pricing.Qf_FAR_OD='PAR-SIN')

符合预期,但仅在Access中。 Excel返回一个空的记录集。

谢谢,

弗雷德

尝试下面的代码

Sub fc_GetPLP()
    Dim Z_Connection As Object
    Dim Z_Recordset As Object
    Dim Z_OnlineOD As String
    Z_OnlineOD = Sheet2.Range("F6").Value

    Dim Z_Access_Path As String
    Dim Z_Access_File As String
    Z_Access_Path = Sheet2.Range("C2").Value
    Z_Access_File = Sheet2.Range("C3").Value

    Set Z_Connection = CreateObject("ADODB.Connection")
    Z_Connection.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Z_Access_Path & Z_Access_File

    Set Z_Recordset = CreateObject("ADODB.RECORDSET")
    Z_Recordset.activeconnection = Z_Connection

    Z_SQL = "SELECT Q_SPA_Pricing.* FROM Q_SPA_Pricing WHERE (Q_SPA_Pricing.Qf_FAR_OD='" & Z_OnlineOD & "')"
Debug.Print Z_SQL

    Z_Recordset.Open Z_SQL

'Debug.Print Z_Recordset.EOF
    If Z_Recordset.EOF = False Then
        Sheet4.Columns("B:H").Clear
        Sheet4.Range("B2").CopyFromRecordset Z_Recordset
    End If    

    Z_Recordset.Close
    Z_Connection.Close
    Set Z_Connection = Nothing
End Sub

暂无
暂无

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

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