2017-08-10 19 views
0

年齢範囲のデータを収集する日付参照としてGETDATE()を使用してうまく動作するクエリがあります。 しかし、現在の日時ではなく、指定された(dd/mm/yyyy)日付から浮動DATE参照ポイントを使用したいと考えています。VBA - GETDATE()の代わりにSQLクエリで日付変数を使用

後でクエリでGETDATE私の年齢の範囲を取得するために、今年のように可変日付を扱うためのWHERE節

注:データはSQLクエリを使用すると、文字列を連結するとき、あなたがいないことを

Dim sAge As Integer 
    sAge = ThisWorkbook.Sheets("INPUT").Range("B5") 'AGE FROM 
Dim eAge As Integer 
    eAge = ThisWorkbook.Sheets("INPUT").Range("C5") 'AGE TO 
Dim aDate As String 
    aDate = ThisWorkbook.Sheets("INPUT").Range("D5") 'CALC AGE USING THIS DATE 
    aYear = Format(aDate, "dd/mm/yyyy") 

Dim abc As String 
abc = "SELECT c.id, p.dob, [AGE NOW] = dbo.AGE(p.dob, GETDATE()) " _ 
    & "FROM table c INNER JOIN person p ON c.id=p.id " _ 
    & "WHERE (dbo.AGE(p.dob, GETDATE()) >= " & [sAge] & " AND dbo.AGE(p.dob, GETDATE()) <= " & [eAge] & ") " _ 

Set rs = conn.Execute(abc) 
With ActiveSheet.QueryTables.Add(Connection:=rs, Destination:=Range("A1")) 
    .Refresh 
End With 

rs.Close 

答えて

0

変更dbo.AGE(p.dob, GETDATE())

dbo.AGE(p.dob, '" & aYear & "')への注意を使用してExcel 2010にPostgresの設定データから抽出されています引用符も含めて、二重引用符を囲むように一重引用符を囲む必要があります。

日付を文字列として渡すことになるため、連結した日付がPostgresが「好きではない」形式でないと問題が発生する可能性があります。あなたが出力をテストするときに覚えておいてください。

+0

"&aYear&"を使用しました。それは私が不足していた単一引用符だった。 – BradleyS

関連する問題