人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

一つ前の質問のつづきです。
私が完成形としてイメージしているのは、指定された場所に格納されてるエクセルのデータを、アクセスでコマンドをクリックするとその格納されてる複数のデータ(ファイル)が前の質問のクエリのような形式でファイルが作られる、というイメージをしているのですが、こういうのは可能でしょうか?また他にアイディアがありましたら教えて下さい。質問もあると思いますので聞いて下さい。

●質問者: hac20380
●カテゴリ:コンピュータ
✍キーワード:アイディア アクセス イメージ エクセル クエリ
○ 状態 :終了
└ 回答数 : 9/9件

▽最新の回答へ

1 ● kn1967
●16ポイント

http://q.hatena.ne.jp/1164015310

前回は長々とかかってしまってすみませんでした。

本題ですが、

(1)Excelのシート上にAccessのテーブルと同じような形式(1行目にフィールド名、2行目以下にデータ)でデータが整っているのであれば、Access上にてリンクテーブルを作成するだけで前回使ったクエリのテーブル1やテーブル2などと同じように使うことが出来ますので、下記を参考に設定してみてください。

Access 開発者向け VB プログラミング Tips - リンク テーブル

Excelが相手なので関連する機能は最初からインストールされていると思いますが、Office(Access)のCD-ROMから追加インストールが必要になる場合があります。

(2)Excelのシート上でAccessのテーブルのような形式になっていない場合は、まずExcel上で新しいシートを作って、その新しいシート上にきれいに並べておく必要があります。

(3)現時点では敷居は高すぎると思いますので、詳細は書きませんが、VBAでプログラムを作ればExcelのシート上から直接データを拾い上げたり、書き換えたりすることも可能ではあります。

◎質問者からの返答

貼っていただいたURLをみてもよくわからなかったので(笑)リンクはデータベース・ウィンドウ内を右クリックして『テーブルのリンク』を選択し、はってみました。ちなみにエクセルのデータはAccessのテーブルのような形式になっています。しかし、3つのテーブルをクエリに追加した時にテーブル2と3のフィールドがF1、F2とかになってしまいました。そのまま実行するとパラメータの入力を聞かれます。またエクセルのデータのフィールドは30ぐらいありますが、その中から3つを抽出する形になっています。


2 ● kn1967
●16ポイント

難しいページを書いてしまってすみませんでした。

>フィールドがF1、F2とかになってしまいました。

F1やF2のままでも、そのままで使えます。

商品名に該当するものがF1でJANがF2ならば、前回作成したクエリの商品名の部分をF1にJANをF2に書き換えます。

ただ、F1やF2のままでは使いづらいので、リンクテーブルを一旦削除して、リンクしなおしてください。その際にはリンクウィザードの途中で『先頭行をフィールド名として使う』という項目にチェックをいれるのを忘れないようにしてください。そうしておけば、Excelデータの1行目をフィールド名にしてくれます。

◎質問者からの返答

クエリを実行したのですが、なぜかデータが8万件近く!?でてきてしまいました。ちなみにテーブル1のレコードは7000件ぐらいです。テーブルには同じ商品は1つしかないのですが、クエリを実行した結果だと同じ商品が多いので100件近く出てきています。


3 ● kn1967
●16ポイント

同じ商品が複数あると、互いに何度も結びつく格好になってしまって今回のようにレコード数が驚くほど増えてしまいますから、あらかじめ商品名毎に集計しておく必要があります。

まずは、

(クエリ1)

SELECT 商品名,First(JAN),SUM(在庫数) FROM テーブル1 GROUP BY 商品名;

(クエリ2)

SELECT 商品名,First(JAN),SUM(在庫数) FROM テーブル2 GROUP BY 商品名;

(クエリ3)

SELECT 商品名,First(JAN),SUM(在庫数) FROM テーブル3 GROUP BY 商品名;

というような3つのクエリを作ってそれぞれ実行してみてください。

そうすれば、各月の商品毎に集計された結果が得られるはずです。

前回までに作ったクエリではテーブル1/テーブル2/テーブル3を使いましたが、クエリ1/クエリ2/クエリ3に置き換えたものを新しく作りなおして実行してみてください。

◎質問者からの返答

3つのクエリはできたのですが、フィールド名がExpr1001とかになってしまいました。ネットで調べると'フィールド名が指定されていないためにAccessが自動的に設定した名前'となっていますが、この場合はどうすればよいのでしょうか?


4 ● kn1967
●16ポイント

>フィールド名がExpr1001

SELECT句の部分に適宜、

AS ○○

を追加してください。

(前回http://q.hatena.ne.jp/1164015310の2回目の回答も参照してください)

前回(1)?(7)というステップをつけたのは問題解決の方法であると共に、機能を追加していく過程でそれぞれの単語の意味を覚えていただこうという意図も含んでおりますので、今一度前回の回答に一通り目を通して(1)から(7)までのステップで、どこを変化させたら、結果がどう変わったかをご確認いただけますでしょうか。

◎質問者からの返答

まず前回の私の質問の訂正なのですが、フィールド名がExpr1001とかになると回答しましたが、例えばクエリ1を3の回答していただいたとおり実行し、それをデザインビューで開きその時にSQLビューを開くと SELECT テーブル1.商品名, First(テーブル1.JAN) AS JANの先頭, Sum(テーブル1.在庫数) AS 在庫数の合計

FROM テーブル1

GROUP BY テーブル1.商品名;

このように記入されていました。この後実行すると AS の後のフィールド名が式どおり表示されています。また、この3つのクエリを元に最後、前回の回答4の(7)の式の’テーブル’を’クエリ’に置き換え実行すればよいのでしょうか?


5 ● kn1967
●16ポイント

>’テーブル’を’クエリ’に置き換え

そのとおりです。それと合わせてフィールド名もクエリの実行結果のフィールド名と合わせてください。

いきなり(7)でも結構ですが、できれば再度(1)から(7)まで順次拡張しながらがよろしいかと思います。

ところで、、、、今更ではありますが、、、、

前回回答の(7)はテーブル1を基準としているため、テーブル2あるいはテーブル3には存在するがテーブル1には存在しないという商品名があった場合に、その商品は結果に現れてこないのですが、それでよろしいでしょうか?

それは駄目ということであればUNIONとPIVOTという難しい技を使うクエリにしますが、、、、

◎質問者からの返答

>前回回答の(7)はテーブル1を基準としているため、テーブル2あるいはテーブル3には存在するがテーブル1には存在しないという商品名があった場合に、その商品は結果に現れてこないのですが、それでよろしいでしょうか?

はい、大丈夫です。一応クエリ実行後の体裁はイメージ通りにできた状態です。この後なんですが、以前質問しましたが、完成イメージは別のツールからダウンロードしたエクセルファイルを指定場所に格納し、そのファイルを、アクセスのコマンドボタンを押すと自動で今の体裁になるようなマクロ?をつくりたいのですが、まずこのようなことは可能なのでしょうか?


1-5件表示/9件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ