• ベストアンサー

アクセス97のクエリーで、年月データの置換処理を行いたいのですが、やり方が分かりません。

マイクロソフトAccess97を使って、テーブル上の「年月」のデータのうち、ある条件に該当するものについてクエリーで「1ヶ月前」あるいは「2ヶ月前」の年月にまとめて置換えようとしています。(例:200705→「200704」あるいは「200703」へ置換え) クエリのフィールド欄に、 実年月:[○○テーブル名]![年月]-1 あるいは 実年月:[○○テーブル名]![年月]-2 と入力すると、月によっては求めたい結果が出ます。 ただ、年をまたがるような場合にはうまくいきません。 どんなケースでも(例えば、もとの年月が2007年1月の場合に、1ヶ月前→「200612」、2ヶ月前→「200611」と変換される)きちんと処理がされるようにするためには、どうしたらよいか教えて頂けないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>200705 これはAccessにとってはただの数字または文字列で年月とは見てくれませんん これを日付と分かる形に変形してやらないと日付関連の関数は使えません 実年月: DateAdd("m",-1,DateValue(Format([数字],"0000\/00""/1""")))

tamaboston
質問者

お礼

CHRONOS_0様 早速に、どうもありがとうございます。 教えていただいた式を入れたら、200701のようなケースでも1ヶ月前or2ヶ月前が「2006/12/01」といった形で表示されるようになりました。 さらに贅沢な質問をさせていただいても良いでしょうか。 「2006/12/01」など「年/月/日」での表示ではなく、結果を「年/月」で表示させる場合は、式をどう変えればよいでしょうか? また追加の質問になってしまうのですが、もともとの年月データはテキスト型でしたので、そのデータと今回変換した年月(日付時刻型)を後々紐付けするのは無理なんですよね? 今回の作業の後、次は別のテーブルにある200701のテキスト型データと今回変換した200701の日付時刻型データでリレーションシップを設定するといったことが必要になってくるため、お伺いしています。 リレーションシップをかけるのが無理な場合、今回日付時刻型に変換して年月を置き換えたデータを、年月はそのままでまたテキスト型に変更するようなことはできますか?(200701(テキスト型)→2006/12に変更(日付時刻型、1ヶ月前)→200612(テキスト型に変更)) それができないなら、もともとの年月の方を日付時刻型に変えるしかないですよね?

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

回答はNo3さんが出しておられますが 根本的な改良法は >もともとの年月の方を日付時刻型に変えるしかないですよね? これでしょうね

tamaboston
質問者

お礼

どうもありがとうございます。 確かに、根本的にはそうした方がよいのでしょうね。 もう少しいろいろ考えてみたいと思います。

  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.3

Format(DateAdd("m",-1,DateValue(Format([数字],"0000\/00""/1"""))),"YYYYMM") でテキスト型でご希望の結果になるかと思います。

tamaboston
質問者

お礼

どうもありがとうございます。 やってみたら、求める結果がでました! 本当に助かりました。

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.1

[年月]フィールドのデータ型は?

tamaboston
質問者

補足

遅くなりましてすみません。[年月]フィールドはテキスト型です。

関連するQ&A

専門家に質問してみよう