• 締切済み

Access 予めクエリを作っておきたい

お世話になります。 毎月、2つのExcelをインポートし、シリアル番号で紐付けて エクスポートしております。 ファイルA  ID 1月 2月 3月 4月 メーカー 型番 シリアル番号 価格・・・ ファイルB  ID メーカー 型番 シリアル番号 価格・・・ ファイルAとBをインポートし、シリアル番号で紐付けて  ID 2月 3月 4月 5月 メーカー 型番 シリアル番号 価格・・・ とし、エクスポートしてます。 ※ファイルB全件に対して、ファイルAを付加するイメージです。  また5月のフィールドを追加し(Null)、4ヵ月分のみ載せるので1月は不要。 なお、エクスポートしたファイルは翌月のファイルAになります。 <質問> 上記のように、毎月ファイルAの見出しが変わる為、毎回クエリを 作成しておりますが、手間がかかります。 このようなケースでは予めクエリを作成しておくことは出来ない のでしょうか。 例えば6月のファイルAは、  ID 2月 3月 4月 5月 メーカー 型番 シリアル番号 価格・・・ で、  ID 3月 4月 5月 6月 メーカー 型番 シリアル番号 価格・・・ としてエクスポートしなければならないので、クエリとしては  ID 今月-3ヵ月 今月-2ヵ月 今月-1ヵ月 今月:Null メーカー・・・ みたいにすればよいのでしょうか。 だとしたら、「今月-xヵ月」の部分はどのような記述になるので しょうか。 ご教示の程、宜しくお願い致します。

みんなの回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

>例えば6月のファイルAは、 > ID 2月 3月 4月 5月 メーカー 型番 シリアル番号 価格・・・ これらはExcelでの列の並びですよね。それで、これらの フィールドはAccessでは、テーブルでのデータはどのように 存在していますか。 Excelへの書き込みはどのような方法でファイルのヘッダ などを書き込んでいるのでしょうか。 とくに三つの「月」のフィールドについてですが。 それと、 >クエリのデザイン画面のフィールドの箇所で、 >Format・・・と記述すると、その文字列がフィールド名になって >しまいます。。 >また、式1:format(dateadd("m",-3,date),"m") & "月" >とすると、クエリ結果が全て「3月」という文字列になってしまいます。 ですが、クエリの様子がわからないので、少し説明をいただけたらと。

naoto0216
質問者

補足

度々ありがとうございます。 仰る通り、 > ID 2月 3月 4月 5月 メーカー 型番 シリアル番号 価格・・・ はExcelの見出しで、インポート後はそのままフィールド名となります。 >Excelへの書き込みはどのような方法でファイルのヘッダ >などを書き込んでいるのでしょうか。 >とくに三つの「月」のフィールドについてですが。 ちょっと、意味を理解できないのですが、エクスポートのことでしょうか? 作成したクエリを右クリック⇒エクスポート です。 >ですが、クエリの様子がわからないので、少し説明をいただけたらと。 文章だと説明が難しいので、こちらはいったん締めて、別途投稿させて 頂きます。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

何月と"月"を添えるならば、 format(dateadd("m",-3,date),"m") & "月" でもいけます。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

3ヶ月前  format(dateadd("m",-3,date),"m") 2ヶ月前  format(dateadd("m",-2,date),"m") 1ヶ月前  format(dateadd("m",-1,date),"m") 今月    format(date,"m") みたいなことですか?

naoto0216
質問者

お礼

piroin654様 いつもご回答ありがとうございます。 やり方が悪いのかもしれませんが、クエリのデザイン画面のフィールドの 箇所で、Format・・・と記述すると、その文字列がフィールド名になって しまいます。。 また、式1:format(dateadd("m",-3,date),"m") & "月" とすると、クエリ結果が全て「3月」という文字列になってしまいます。 やはりSQLでフィールド名を可変にするしかないのでしょうか。

関連するQ&A

  • Accessクエリ IIFについて

    お世話になります。 2つのテーブルをIDで紐付けて、それぞれの項目を比較し、○×を付けたいと思います。 【テーブルA】  ID メーカー 型番 品名 【テーブルB】  ID メーカー 型番 品名 【クエリC】  テーブルAとテーブルBをIDで紐付けて、各フィールド名を   テーブルAの方は前回_メーカー、前回_型番、前回_品名 とし、   テーブルBの方は今回_メーカー、今回_型番、今回_品名 とする。 【クエリD】  クエリCを元に、   前回_メーカー、前回_型番、前回_品名、今回_メーカー、今回_型番、今回_品名   を並べて表示し、それぞれを以下のように評価する。   メーカー評価:IIf([前回_メーカー]=[今回_メーカー],"○","×")   型番評価:IIf([前回_型番]=[今回_型番],"○","×")   品名評価:IIf([前回_品名]=[今回_品名],"○","×")   上記3つの評価でいずれかが×となっているレコードを抽出。 しかし、前回と今回でいずれも型番が空白(Null)だった場合、上記評価を すると"×"となってしまいました。 そこで質問ですが、   ・そもそもNull同士の評価は"×"になってしまうのでしょうか?(比較できない?)   ・テーブルAはSQL Server上にあり、テーブルBはExcelをインポートしたもの   (Accessのローカルテーブル)です。この違いによるものでしょうか。 ご教授の程、宜しくお願い致します。

  • Accessクエリにて

    お世話になります。 下記テーブルがあります。 ■型番テーブル ID 型番 数量 1  A   1 2  B   1 3  C   1 4  D   1 5  E   1 ■発売日テーブル ID 型番 発売日    削除 1  A   2010/01/01 False 2  B   2010/05/01 False 3  C   2011/03/01 False 4  D   2011/05/01 True 5  E   2011/06/01 False ■上記テーブルを用いたクエリ ・型番テーブルの「型番」と発売日テーブルの「型番」を  紐付ける ・表示したいフィールドは「型番」「発売日」。 ・表示したいのは型番テーブル全件(5レコード)。 ・発売日テーブルの削除がTrueの場合、発売日を空白とする。 *************** ここで質問です。 型番テーブルの全件を表示したいところですが、条件として発売日テーブルの 削除がFalseである為、型番Dが表示されません。 発売日テーブルであらかじめ削除がFalseのみでクエリを作成し、そのクエリと 型番テーブルの「型番」で紐付ければ全件表示されることは分かっており ますが、1つのクエリで表示する方法をご教授頂ければと思います。 宜しくお願い致します。

  • Accessのクエリーについて

    以下のようなテーブルAがあります ID  番号 1 100 1 100 2 200 2 200 3 300 3 300 3 300 これをクエリーで、同じIDの場合は、各1行目以外の番号を空欄(非表示)としたいのです。 ID  番号 1 100 1 2 200 2 3 300 3 3 方法はあるでしょうか?

  • Access クエリのグループ化

    お世話になります。 テーブル [契約番号]   [メーカー]   [型番]   [定価] AAA       メーカーA   型番01  \1,000 AAA       メーカーA   型番02  \8,000 AAA       メーカーB   型番03  \5,000 BBB       メーカーA   型番01  \1,000 BBB       メーカーB   型番04  \9,000 だった場合、契約番号単位で[定価]の一番高いレコードだけ抽出させるには どのようにすればよいでしょうか。 <結果> [契約番号]   [メーカー]   [型番]   [定価] AAA       メーカーA   型番02  \8,000 BBB       メーカーB   型番04  \9,000 ご教示の程、宜しくお願い致します。

  • Access クエリが入力できない

    Access 2003を使用しています 以前の担当のかたがつくったデータベースで、 会社で購入している薬剤を管理しているのですが、 これまでできたクエリの入力ができなくなってしまいましたので お力をかしてください。 テーブルA 管理番号 薬剤名 分類番号   ○ メーカー番号 ● 購入日 価格 テーブルB メーカー番号 ● メーカー名 テーブルC 分類番号   ○ 分類名 ○-○、●-●でリレーションシップでつなげています。 ある日、テーブルAのフィールドをいくつか増やしたところ テーブルA、B、Cをもとに作ったクエリの入力ができなくなってしまいました。 入力できるようにするにはどうすればよろしいでしょうか。 主キーは設定していません。 初心者なので、わかりやすく教えていただければうれしいです。

  • Accessクエリでのグループ化

    Accessクエリでのグループ化 以下の2つのテーブルが有ります。 ■社員テーブル ID 名前 1 Aさん 2 Bさん 3 Cさん 4 Dさん 5 Eさん ■受付テーブル ID 受付内容 受付日   社員ID 1  xxxxx 2010/3/1   1 2 xxxxx 2010/3/20   3 3 xxxxx 2010/4/10   2 4 xxxxx   2010/4/11  5 5 xxxxx 2010/4/15  1 6 xxxxx 2010/4/30  2 7 xxxxx 2010/5/3  4 そこで社員毎の受付数をカウントしたいと思っています。 ※受付日が2010/4/1以上5/1未満 名前 受付回数 Aさん 1 Bさん 2 Cさん 0 Dさん 0 Eさん 1 となるイメージです。 しかし、実際にクエリを作ると結果が 名前 受付回数 Aさん 1 Bさん 2 Eさん 1 と、なってしまいます。。 名前:グループ化 受付テーブルのID:カウント 受付日:>=2010/04/01 and <2010/05/01 ※社員テーブルの『ID』と、受付テーブルの『社員ID』を  紐つけており、結合プロパティでは『社員テーブルの  全レコードと受付テーブルの同じ結合フィールドのレコード  だけを含める』としております。 あらかじめ、受付テーブルで受付期間の条件でクエリ を作成しておき、それと社員テーブルを紐つけた場合は イメージ通りの結果になるのですが、1つのクエリで 上記イメージでの結果を表示したいと思ってます。 可能でしょうか? ご教授願います。

  • ACCESS2003を使用しています。

    ACCESS2003を使用しています。 選択クエリからテキスト変換(マクロ)でテキストファイルをエクスポートします。 その選択クエリのフィールド名に、ある都合で"#"の文字列を入れているのですが、 エクスポートされたテキストファイルを見ると"."に変わってしまいます。 (例) #ID → .ID エクスポート定義の文字コードをいろいろ変えてみましたがダメでした。 ちなみに、 ・選択クエリを選択しての右クリックからエクスポートを実施しても同じです。 ・選択クエリを開いて、全選択Ctrl+A→コピーCtrl+C→テキストファイルに貼り付けCtrl+Vをすると、  きちんと"#"で貼り付けされます。 どなたか、対処法or原因を教えてください。

  • ACCESSのクエリに行番号をつける

    Microsoft ACCESS 2003で、簡単な以下の様なクエリを作っています。 (1) 元のテーブル  売上年月日/販売先顧客名/商品名/数量/価格 (2) 売上年月毎価格集計クエリ  売上年月(グルーピング)/商品名(グルーピング)/数量(集計)/価格(集計)  このクエリが、以下の様に出るとします。  例1)  2009/09 商品A 50 25,000  2009/09 商品B 20 12,000  2009/09 商品C 33 45,000  ・  ・  2009/10 商品A 50 25,000  2009/10 商品B 20 12,000  ・  ・  このクエリの先頭に、以下例2の様に、年月毎にブレークする「行番号」をつけたいのですが、どの様にすればいいか見当がつきません。  行番号をつけられる(かつ、特定の条件でブレークして、行番号を"1"から振り直す)様な関数、関数が無ければやり方等、わかる人がおられたらお助け下さい。  よろしくお願いします。  例2)  1,2009/09 商品A 50 25,000  2,2009/09 商品B 20 12,000  3,2009/09 商品C 33 45,000  ・  ・  1,2009/10 商品A 50 25,000  2,2009/10 商品B 20 12,000  ・  ・

  • Accessのクエリーで、*が入っているデータを抜出す方法って?

    助けてください! Accessのクエリーで、*が入っているデータを抜き出すのってどうやるんですか? クエリーの元になるテーブルは1つ、非常に単純なテーブルです。  ●フィールド1=「*」もしくはNullもしくは「英数字」  ●フィールド2=製品番号  ●フィールド3=メーカ番号 テーブルには上記3つのフィールドしかありません。 このテーブルの、「フィールド1に『*』が入っているデータを抜出したいのです。(抜出すのはフィールド1~3全て) 単純に選択クエリーで「抽出条件」に「“*“」と入れると、「フィールド1に英数字が入っている」行まで選択しちゃうんです。そりゃそうだよなーとは思うのですが、じゃあ、どうやったら英数字の入っている行は無視して、純粋に「*」だけの行を抜出せるのかわかりません。 誰かー!助けて―!

  • ACCESS2003

    ACCESS2003 OS:winXPです。 アクセスのテーブルのデータが以下のようになっています。 ID  |名称|番号1|番号2|番号3|・・・・・|番号30| 100|太郎|0001|1231|4323|・・・・ 101|次郎|2333|3213|4225|・・・・ ・・・ 番号1~番号30にはIDに紐づくランダムな値が入っています。 IDによって紐づく番号が存在するだけ、30まで列に入っています。 番号30まであるものもあれば、番号1しかないものもあります。 これを以下のように変えたいと思っています。 ID  |名称|番号 | 100|太郎|0001| 100|太郎|1231| 100|太郎|4323|  ・  ・ 101|次郎|2333| 101|次郎|3213| なにかクエリ、VBAなどでいい方法はないでしょうか?

専門家に質問してみよう