• ベストアンサー

アクセス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% (295/459)
回答No.1

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

tamaboston
質問者

補足

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

関連するQ&A

  • アクセス(Access)で、3つのクエリ処理結果を1つのレポートに出力させたい

    こんにちは。QNo.348201 では大変お世話になり、有難うございました。とっても助かりました。 又、以前よりもほんのちょぴっとですが^^; 理解出来た部分が増えたので感謝しております<(_ _)> 皆様からご指導頂きました通りに作業をしまして無事、完成させたクエリですが、現在はそれを レポートに出力する所で行き詰まっております。やりたい作業は下記の通りです。 <クエリ> 1.“A 4月分” →フィールド名=合計金額/一般管理費 2.“B 4月分” →フィールド名=合計金額/消費税相当額 3.“C 4月分” →フィールド名=費目/種別/WBS番号・・・など合計16フィールド レポートに出力したいフィールドは “C 4月分”全部と、その行間に“A 4月分”の【一般管理費】、 “B 4月分”の【消費税相当額】を挟むような形で出力したいのですが、下記のようなエラーが出て しまいます。 『選択したフィールドのレコードソースにアクセスできません。テーブルと、そのテーブルを基にした クエリのフィールドを選択した可能性があります。もしそうであれば、テーブルかクエリのどちらかの フィールドだけを選択して下さい』 レポートの新規作成 から入り、「複数のテーブルまたはクエリからフィールドを選択出来ます」と 説明されていた レポートウィザード を選びました。 作業が滞っているのは、クエリで作成した、これら3つが起因しているのでしょうか。 このような複数クエリを1枚のレポートに出力する場合は、クエリでの作業は、一旦、テーブルとして 吐き出して、テーブルに入ったこれら3つを、レポートで処理する…という形になるのでしょうか。 前回同様、明日中に処理しなくてはならない背景があり、ご多忙中の所、誠に恐縮ではございますが 何卒、ご指導の程、宜しくお願い申し上げます。

  • アクセス クエリのフィールド名が勝手に変わる

    access 2010を使用しています クエリのフィールド名が[元となるクエリ名].[フィールド名]に勝手に変わってました。 このクエリはリンクテーブル(リンクする側)ひとつから作ったクエリをさらに条件で絞り込んだものです。 今はまだデータベースの開発段階で、大元となるリンク先のテーブルのデータを書き換えることも多々あります。 このフィールド名で不都合が生じるのは、このクエリをもとに作ったフォームのラベル名です。 今は手動でこの[元となるクエリ名].を消しているのですが、この原因はなんなのでしょうか? それからリンクテーブルというのはこういう問題がよくおこるのでしょうか? プロパティなどを見ても全く何がおかしいのかわからないので、どなたかご教示お願いいたします。

  • Access2003 更新クエリについてご教授下さい。

    初めまして。 今回、初めてご質問させていただきます。 Access2003の更新クエリについてご教授お願いします。 AテーブルとBテーブルがあります。 ■Aテーブル(ALLテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型) ■Bテーブル(更新させたいテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型)  (※Aテーブルと同じです。) Bテーブルの内容をAテーブルへ更新させたいのですが 名前/完了のフィールドは、更新クエリで完成出来ましたが 備考欄の更新が出来ません。 (※備考欄には、コメントがそれぞれ入っています。) どのような形でクエリを作成すれば Aテーブルへ更新が可能になるのでしょうか? 以上、ご教授お願い致します。

  • accessのクエリについて

    テーブル1のフィールド ・品番 ・期間 ・生産数 テーブル2のフィールド ・品番 ・期間 ・使用数 上記のようなテーブルをもとに、品番と期間が一致した場合に生産数 - 使用数 を表示出来るようなクエリは作成できますでしょうか? 出来るなら,どのようにすればよいでしょうか? おわかりになられる方がいらっしゃいましたらご教授お願い致します。

  • ACCESSのクエリで表示されるデータについて

    クエリで表示されるデータの範囲について教えてください。 <状況例> 例えばなのですが、取引先会社の管理データベースとして「テーブルA」と「テーブルB」があったとします。 「テーブルA]のフィールドは「会社ID」、「会社名」、「住所」とします。 「テーブルB]のフィールドは「連絡先ID」、「会社ID」、「担当者名」とします。 そして、「会社ID」をリレーションシップで繋いで、クエリで「テーブルA」「テーブルB」の全てのフィールドを表示したとします。 この時、「テーブルA」にデータが5つあり、「テーブルB」にはデータが2つしかなく、結果リレーションシップを通じて対をなすデータが2つしかない場合には、クエリでは2つしかデータが表示されないと思います。 <質問> クエリではリレーションシップで対をなさないデータは無効となるようですが、対をなさないデータも全てクエリで表示する方法はないのでしょうか。 上記例でいうと、「テーブルA」のデータ5件全てについて表示させたいのですが。もちろん、「テーブルA」のデータ中対をなしていないものについては、「テーブルB」のフィールド内容については「空白」での表示となりますが。

  • Accessの不一致クエリについて

    Accessの初心者です。二つのテーブルの異なるフィールどを比較する方法について、教えてください。 例えば、"6523610"という数字が両方のテーブルにあるかどうか調べたいとします。 テーブルA 523(フィールド名:契約コード)+610(ID) テーブルB 6523(フィールド名:取引コード)+61(フィールド名:地域コード) と、それぞれ構成が違います。頭につく"6"と最後の"0"は共通の数字です。クエリで新たなフィールドを作って、"6523610"にするまではわかるのですが、どのフィールドを関連づけていいかわかりません。このような場合は、不一致クエリではできないのでしょうか? 仕事で、明日中にデータを調べなければいけないので困っています。 よろしくお願いします。

  • クロス集計クエリの最後のデータについて

    初めて質問いたします。 デザインビューの程度ですが、よろしくお願いいたします。 クエリで以下のようにデータが並んでいます。フィールド1のデータごとに年月昇順ソート フィールド1 フィールド2 フィールド3 フィールド4 111    1200   あああ    年月 111    1500   あああ    年月 111    1000   いいい    年月 これをクロス集計クエリでフィールド1でグループ化してフィールド2の合計をしています。 フィールド3のデータは、最後の「いいい」を持って来たいので、最後と指定しています。 ところが、どうも「いいい」を持ってくることができず、「あああ」を持ってきているようなのです。 クエリの並びが集計クエリにすると変わるのでしょうか? 集計クエリの最後というのは、どのように考えれば良いのでしょうか? よろしくお願いいたします。m(._.*)mペコッ

  • Accessのクエリで2

    お伺い致します。 テーブル名:テーブルA  フィールド:月日,販売先,品番 テーブル名:テーブル期間  フィールド:分類、始月日、終月日 テーブル名:材料テーブル  フィールド:品番,材料1,材料2, 分類 の3テーブルが有り ”テーブルA”の月日の違いで”テーブル期間”の分類を表示させた後 現在品番と分類で材料1、材料2の使用量をクエリで以下のように表示 クエリ名:Q_テーブルA 月日,販売先,品番, 材料1, 材料2 0501,東京販売,18-18, 270, 180...材料の使用量は月日と品番で決まる、 1105,仙台販売,18-21, 290, 190 0801,大阪販売,21-21, 300, 190 0907,東京販売,27-18, 350, 175  ここでお伺いしたい事は 材料テーブルの事ですが実際は品番が30種類、材料が10種類の300データに及び それに期間による材料テーブル1と2の2種類あります 各々の表はエクセルで計算させインポートさせた後ユニオンクエリで一緒にし テーブル作成クエリで”材料テーブル”を作成するという事をしていますが。 そのまま、テーブル1とテーブル2を月日の違いによる分類1,2でスイッチさせて クエリ”Q_テーブルA”を作成する方法が有りませんでしょうか 簡単に出来ると思いつつも良い方法が浮かばず回り道しています。 よろしくお願い致します。

  • アクセスのクエリで

    アクセスのクエリで、テーブルAのフィールド1が"a"又は、"b"の場合は、"ABC"と表示し、それ以外の場合は、テーブルAのフィールド2に対応している、テーブルBのフィールド1の値を表示させる事はできますか? 誰か教えて下さい。よろしくお願いします。

  • Accessクエリについて

    お世話になります。 以下のようなテーブルがあります。 ID 年月    商品数 利用者数 1 2013年9月  10      5 2 2013年10月 15      3 3 2013年11月 20      10 4 2013年12月 13      5  ・  ・  ・ 12 2014年9月 10     3 このテーブルをクエリで以下のように表示したいところです。        10月 11月 12月・ ・ ・ 9月 ←2014年の9月 商品数    15   20  13      10 利用者数   3   10   5      3 ※右端を先月とし過去1年分を表示したい。 クエリで上記のように表現することは可能でしょうか。 ご教授の程、宜しくお願い致します。

専門家に質問してみよう