webdevqa.jp.net

動的な日付範囲を使用してExcel2007でSQLクエリを作成するにはどうすればよいですか?

特定の期間のレポートを印刷できるレポートスプレッドシートを作成しようとしています。以下のクエリは機能しますが、日付の代わりに?パラメータを使用しようとすると、日付を含むセルを選択した後にエラーが発生します。一重引用符を使用すると('?')文字列から日付/時刻への変換に失敗し、(?)を使用しないと、@p1の近くに構文エラーが発生します。

最終的には、開始日と終了日、または月を追加する数式、または開始日時にシフトしてデータを重要な情報に絞り込む必要があります。クエリはMicrosoftQueryに組み込まれています。

SELECT FloatTable.DateAndTime,
       TagTable.TagName
FROM   master.dbo.FloatTable FloatTable,
       master.dbo.TagTable TagTable
WHERE  FloatTable.TagIndex = TagTable.TagIndex
       AND (( FloatTable.DateAndTime >= {ts '2012-06-01 00:00:00'} )) 

どんな援助も大歓迎です。

2
Jordan

クエリをテキストではなく数式として入力し、選択したセルから日付を作成して、有効なSQLステートメントを作成する必要があります。

セルA1に日付があるとすると、セルB1に次の数式を入力します。

="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable _ 
FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = _
TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" _
& MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"

各行の終わりにある下線は継続を示していることに注意してください。数式を機能させるには、それらを削除する必要があり、キャリッジリターンが表示されます。数式全体は、下の1行に設定されています。 (このサイトでは読みにくいですが、Excelはそれが好きです!)

="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" & MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"
3
Jon Crowell