Date: Tue, 9 Sep 2003 10:57:58 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です、おはようございます
-----Original Message-----
From: m.taniguchi [mailto:who@example.co.jp]
Sent: Friday, September 05, 2003 1:19 PM
To: MSDE FunClub
Subject: [ml-msde-beg:00800] 日付の取得
> strSQL="Select * FROM TEST" & _
> " Where (日付=#" & Cdate(Format([Forms]![フォーム1]![T日
>付],"yyyy/mm/dd")) & "#);"
上記のTESTテーブルが、SQLServer上に存在し、「日付」列がDATETIME型
だとします。
SQL文が、パススルークエリではなく、通常のAccessのSQL文として投入
されるのであれば、AccessのSQL文の表現に従う必要があります。
Accessでは、日付け時刻表現は、文字列ではなく、前後に#記号で囲みます。
"2003/09/08" ではなく、 #2003/09/08# です。
年月日の設定によっては、 #9/8/2003#形式もあります。
但しコントロールに連結したクエリであれば、#は不要で
WHERE 日付=[Forms]![fm]![dt]
で動いてくれます(Access2002で確認)。
ただAccess2002のリンクテーブルを使った場合のSQL文では、テーブル名
の前に、オーナー名_ が付加されています。
WHERE dbo_テーブル名.日付=[Forms]![fm]![dt]
となります。
このdbo_の付加文字列は、SQLServerに渡る時は、dbo.に変換されています。
また逆に、AccessのクエリのSQLビューでこのdbo_の付加文字列を削除すると、
クエリが動かなくなります。
VBプログラムの中で、リンクテーブルに関するSQL文を記述するときは
そのテーブルの所有者名を、owner. ではなく、 owner_ を付けて下さい。
所有者名は省略できません。通常は、dbo_ です。
dbo_の付加文字列が必要かどうかは、AccessのバージョンやODBCの
バージョン等に関連があるでしょう。
SELECT TEST.日付 FROM TEST WHERE (((TEST.日付)=Forms!fm!dt))
は、Access2002では許されず、
SELECT dbo_TEST.日付 FROM dbo_TEST
WHERE (((dbo_TEST.日付)=Forms!fm!dt))
にします。
また、「日付」列がDATETIME型の場合、SQLServerでよく犯す誤りがあります。
DATETIME型は、日付け情報だけではなく、時刻情報も一緒に覚えます。
WHERE 日付 = '2003/09/08'
という検索条件は(この表現は、Transact-SQL上)、2003年9月8日午前0時
を表現します(書籍上巻第1章79ページ参照のこと)。
トリガなどで現在の日付をセットしているような場合は、実際は時刻もその
トリガが動作したときの時刻になっていることがあります。
ですから、WHERE 日付 = '2003/09/08' という検索条件では、午前0時
きっかりのレコードしか取得できません。
WHERE 日付 = '2003/09/08 00:00:00'
の検索条件になります。
時刻を無視して9月8日だけのレコードを取得するときは
WHERE 日付 BETWEEN '2003/9/8 00:00:00' AND '2003/9/8 23:59:59'
のような範囲指定が必要です。
書籍上巻100ページ参照
http://www.horikawa.ne.jp/msde/gihyo/sql02/ex-1/ex-06.html
あるいは、SQLServer側で、時刻を落としてしまう方法もあります。
------------------------------------
(株)日本技術ソフト開発
堀川 明 (Akira Horikawa)
09月09日(火曜日) 10時55分記
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|