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 に答える