• ベストアンサー

ACCESSのテーブル複数行を1行にしてエクスポートは?

テーブルにはほしい値が3行に分割されています。共通のフィールドが存在しないので無条件に3行を1レコードにつなげ合わせるクエリーを作成したいのですが、方法が解りません。 1行目 A 2行目 B 3行目 C 4行目 D 5行目 E 6行目 F   ↓ 1行目 A+B+C 2行目 D+E+F エクスポートは、クエリーで行いたいと思います。 とっても窮地です。どなたかいい方法教えてください!

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

  • ベストアンサー
  • takibo
  • ベストアンサー率57% (116/200)
回答No.3

クロス集計クエリを使ってみました。(結合するフィールドは文字列と仮定しています) 【使用するテーブル→TBL1、結合するフィールド→F1 とします】 (1)TBL1にフィールドを1行追加     フィールド名→No.  データ型→オートナンバー (2)TBL1からクエリを作成 【クエリ1】     TBLより[No.]と[F1]を抽出して計算式のフィールドを2つ作成      ・式1:Int(([TBL1]![No.]-1)/3)   →→→上から3行ずつ0,0,0,1,1,1,2,2,2...      ・式2:IIf([TBL1]![No.] Mod 3)=0,3,[TBL1]![No.] Mod 3)   →→→上から1,2,3,1,2,3,1,2,3... (3)クロス集計クエリを作成 【クエリ1のクロス集計】     クエリの画面から 新規作成(N) → クロス集計クエリウィザード → OK     → 表示「クエリ」、「クエリ1」を選択 → 「式1」を[選択したフィールド]へ移動 → 「式1」をクリック     → 「F1」をクリック、集計方法「先頭」 → 完了 (4)クロス集計クエリをテーブルに変換 【TBL2】     デザインビューでクエリ作成 → 「クエリ1のクロス集計」を追加 → アスタリスク(*)をドラッグ     → クエリ(Q) → テーブル作成 → 「TBL2」と名前をつけて OK → !(実行) (5)変換したテーブルからクエリ作成     デザインビューでクエリ作成 → 「TBL2」を追加 → [1],[2],[3]を抽出 → 式1:[TBL2]![1] & [TBL2]![2] & [TBL2]![3] 基本的には O_cyanさんと同じようなことをしています。 レコードが多くても大丈夫なように番号をふる手間を演算で処理しています。

nannan0000
質問者

お礼

PCが壊れてお礼が遅くなってしまいました。申し訳ありません。HDDクラッシュしたのでこれからやってみます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

DAOかADOのレコードセットを扱うVBAの載った本か書籍で、勉強して丸写し的にVBAを書けば処理できるでしょう。 3レコード分を結合し、3レコード目で書き出せばよいです。 縦方向(行の間の)の演算や処理はSQLなども不得意のようですが、レコード処理のできるものはこの点で強い。

nannan0000
質問者

お礼

ここのところ仕事が忙しくて返事が遅れましてすみません!DAO、ADOって言葉がすでにわかりません!VBAということで総称していいのでしょうか?実はわたくし、IT産業で営業しているものですからそのくらいは解らなければとは思うのですが...難解です。今後のこともあるのでどんな本を購入すればよいのかご教授ください。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>にはほしい値が3行に分割されています。共通のフィールドが存在しないので・・ 難しいとおもいます。 最低で 1行目 A 1 1 2行目 B 2 1 3行目 C 3 1 4行目 D 1 2 5行目 E 2 2 6行目 F 3 2 7行目 G 1 3 8行目 H 2 3 9行目 I 3 3 のように3行の結合できる(最後の数字のような)フィールドがないと レコード数(行数)が少なければテーブルに追加して入力すれば良いと思いますが。 取り合えずレコード数が少ないとして 最初の数字1と2と3をそれぞれ抽出するクエリ1・2・3を別々につくります。次に別のクエリを作りクエリ1とクエリ2とクエリ3をテーブル追加で3つ表示させます。 テーブル追加した3つのクエリの2番目の数字同士を結合(リレーション)させます。 そしてクエリのフィールドにクエリ1とクエリ2とクエリ3の必要なフィールドを&か+で [クエリ1.フィールド名]&[クエリ2.フィールド名]&[クエリ3.フィールド名] のようにするしかないと思いまが。

nannan0000
質問者

お礼

すみません。PCクラッシュですべてこれからやり直しです。がんばってやってみます。ありがとうございました。

noname#20210
noname#20210
回答No.1

誰も答えていないようなので・・・。回答します。 僕も結構試行錯誤で苦労した記憶があります。うろ覚えだったんですけど、今自分でやってみたんでできたんで。 (1)まずABCのフィールドの形式をあわせます。同様に、DEFフィールドの形式もあわせます。整数型なら整数型。文字列なら文字列と。 (2)クエリのデザインビューに入っるとテーブル選択の画面が出るので、結合したいフィールドを含んだテーブルをダブルクリックして使えるようにします。便宜上テーブル名が「tbl_1」だとすると「tbl_1」をダブルクリックして、そのウィンドウを閉じてクエリ画面に入ります。 (3)ここで、下の普段選択クエリではフィールド名をドロップする欄がありますよね。そこの「フィールド:」と書いてあるところの段(たぶん一番上の段です)で、右クリックして、「ビルド」を選びます。「ビルド」がでてこなかたら、何回か試してみてください。 (4)ビルドのウィンドウが出たら、左下のブラウザで、「テーブル」→「tbl_1」をそれぞれ順にダブルクリックします。そうすると真中下にそのテーブルのフィールド名が出ると思います。 (5)そこで、結合したい順に「A」をダブルクリック。その上のボタンで「&」を押して、フィールド「B」ダブルクリック、「&」を押して、フィールド「C」をダブルクリック。ちなみに「&」っていうのは文字列の結合演算子なので、数値を結合する場合なんかは、ただの「+」をかわりにつかいます。「OK」を押してクエリ画面に戻ると、先ほどの「フィールド:」の右が、下のようになってると思います。 [tbl_1]![A] & [tbl_1]![B] & [tbl_1]![C] (6)そこで「!」マークを押す(クエリを実行する)と、結合されたのが一つのフィールドになっているのがわかると思います。戻ると次のようになっていますが、「式1:」というのは気にしないでいいです。 式1: [tbl_1]![A] & [tbl_1]![B] & [tbl_1]![C] (7)デザインビューに戻って、同じように、クエリの下の欄のところで、D,E、Fについて2つ目のフィールドに作ります。同様の手順で「式2:」ができると思います。 (8)で、それをエクスポートすれば終わりだと思います。先ほどの「式1」とかの部分がフィールド名になりますので、これを変更することで作成されるフィールド名をつけることが可能です。 では、上手く行くことを祈ります。行き詰ったらまたコメントください。

nannan0000
質問者

お礼

貴殿の方法を実行検証していましたが、HDD故障で中断しております。お礼も遅くなってしまいました。申し訳ありませんでした。