2

我正在尝试使用日期参数将数据从 SQL 数据库中提取到 Excel 中。以下 VB 查询有效。我不想手动更改 VB 查询的 TS 中的日期值,而是让查询使用电子表格中的单元格值。单元格 A1 的日期为 >= TS,单元格 A2 的日期为 < TS

Sub vba_query_01()

    Dim oCon As ADODB.Connection
    Dim oRS As ADODB.Recordset
    Set oCon = New ADODB.Connection
    oCon.ConnectionString = "DRIVER=SQL Server;SERVER=GSEYBERTHNB7
         \SQLEXPRESS;UID=gseyberth;Trusted_Connection=Yes;APP=2007 Microsoft Office 
         system;WSID=GSEYBERTHNB7;DATABASE=DATA_LOGGER"
    oCon.Open
    Set oRS = New ADODB.Recordset
    oRS.ActiveConnection = oCon
    oRS.Source = "Select * FROM DATA_LOGGER.dbo.LYLE LYLE WHERE (( [Date] >= {TS '2013-04-24 
        07:00:00'} )) AND (( [Date] < {TS '2013-04-24 15:00:00'} ))"
    oRS.Open
    Range("A10").CopyFromRecordset oRS
    oRS.Close
    oCon.Close
    If Not oRS Is Nothing Then Set oRS = Nothing
    If Not oCon Is Nothing Then Set oCon = Nothing

End Sub
4

2 回答 2

2

谢谢您的帮助。让它与以下内容一起工作:

在 Excel 中,使用公式

=TEXT(B1,"YYYY-MM-DD hh:mm:ss")

将excel日期转换为文本。开始日期在单元格 B3 中,完成日期在单元格 B4 中

将VB更改为以下内容:

oRS.Source = "Select * FROM DATA_LOGGER.dbo.LYLE_CH2 LYLE_CH2 WHERE (( [Date] >= {TS '" & Range("B3") & "'} )) AND (( [Date] < {TS '" & Range("B4") & "'} )) ORDER BY [Date]"

必须添加ORDER BY以保持查询中的数据以正确的时间顺序进行电子表格计算。

于 2013-05-17T05:33:35.423 回答
1

试试这个(假设工作表中的数据是日期序列号,并且在活动工作表中)

oR.SSource = "Select * FROM DATA_LOGGER.dbo.LYLE LYLE WHERE (( [Date] >= {TS '" & _
Format(Range("A1"), "yyyy-mm-dd hh:nn:ss") & _
"'} )) AND (( [Date] < {TS '" & _
Format(Range("A2"), "yyyy-mm-dd hh:nn:ss") & "'} ))"
于 2013-05-11T06:03:44.697 回答