アプリ版:「スタンプのみでお礼する」機能のリリースについて

TableAのフィールド 年月日 は日付型(s)でデータは06/10/30などYy/Mm/Ddフォーマットで入っています。
Access2002 クエリーウイザードで作らせると
年月日 = #06/10/30# となりますがSQLビューは
"Select * From TableA where 年月日=#10/30/2006#;"と、Mm/Dd/Yyフォーマットになってしまいます。
何が原因なのでしょうか。ちなみに以前は問題なく年月日 = #06/10/30# でしたし、Access2003でも問題は出ません。

A 回答 (2件)

>#20" & Me![txt年月日] & "#"でOKでした。

これがAccess2003では"日付構文エラー"
2000以降では日付は4桁で管理しているはずなんですが・・
なので2003で#20" & Me![txt年月日] & "#"
とすると#202006/04/15#で日付構文エラー。
Me![txt年月日] ="06/04/15"でも##でくくられれば日付と判断し2006/04/15と取得しているので#20&で前に20を付けなくても良い。
2002でも2003でも2000でもフォームの抽出条件のコントロールtxt年月日に定型入力で 9999\/99\/99;0;_ か 0000/00/00;0;_ にして西暦を4桁で入力するようにすれば#20" & Me![txt年月日] & "#"などとしなくても
"[年月日] = #" & Me![txt年月日] & "#"
だけで良いのでは。
フォームのtxt年月日の修正だけで済むので。
TableAのフィールド[年月日]は日付型(s)でyyyy/mm/ddで管理と思いますが。フォーム上などの表示だけならyy/mm/ddで良いですが。
>各Accessの環境設定が悪いのでしょうか
環境等詳細は不明ですが各バージョンが混在する環境では共通で使えるような記述にします。
日付は西暦4桁でテーブルから全て管理する。抽出等も全て4桁で行えば1つのSQLで済みます。2000で通るSQLで(各バージョン共通の)作り、上のバージョンに入れチェックすれば良いと思います。ADO等同じバージョンなら問題ないかと。
    • good
    • 0

ウイザードで作成したような場合Jetの影響で#10/30/2006#となると思いますが。


例えばOpenFormでstDocName = "データ入力"としたはずなのにstDocName = ChrW(12487) & ChrW(12540) & ChrW(12479) & ChrW(20837) & ChrW(21147)のように変換されたりするのと一緒だと思いますけど。

>TableAのフィールド年月日は日付型(s)でデータは06/10/30などYy/Mm/Ddフォーマットで入っています。
yy/mm/ddと書式設定されているだけで実際はyyyy/mm/ddとして持っていますので正しくは#2006/10/30#と抽出条件に書くのが普通です。
SQLビューに変換時に#10/30/2006#となるだけです。
SQLビューでwhere 年月日=#10/30/2006#となっていてもデザインビューでは=#2006/10/30#となっていて問題はないと思いますが。

この回答への補足

ご回答感謝します。

Me![txt年月日] ="06/04/15"の時
Access2002で
rs.FindFirst "[年月日] = #20" & Me![txt年月日] & "#"でOKでした。
これがAccess2003では"日付構文エラー"になります。
Access2003では
rs.FindFirst "[年月日] = #" & Me![txt年月日] & "#"
でOKとなります。
このアプリはAccess2000,2002,2003が混在した環境で利用しますので、それぞれのAccess用に別々に作らねばならないのでしょうか。それとも各Accessの環境設定が悪いのでしょうか。

補足日時:2006/04/28 16:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!