• ベストアンサー

ACCESSのエクスポート

よろしくお願いします。 下記のようにデータがあります。 伝票番号1 A 伝票番号2 B 伝票番号3 C 伝票番号4 D このデータをエクスポート(CSV形式)で下記のようにエクスポートします。 伝票番号1 A 伝票番号2 B 伝票番号3 C 伝票番号4 D どのようにしたらいいでしょうか?     

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

テーブル名を「テーブル名」 主キーのフィールド名が「ID」で数値型と仮定します。 下記のクエリで希望の結果になると思いますので、 このクエリをエクスポートして下さい。 -------------------------------------------------- SELECT X.*, Y.* FROM テーブル名 AS X LEFT JOIN テーブル名 AS Y ON Y.ID = DMin("ID","テーブル名","ID > " & X.ID) WHERE (DCount("*","テーブル名","ID < " & X.ID) Mod 2)=0; -------------------------------------------------- ・IDに抜け番号があっても問題ないです。 ・このクエリはデザインビューでは表示できません。 ・重いクエリなので表示に時間が掛かるかもしれません。 ================================================== 主キーのフィールドが文字列型の場合は上記は使えません。 複雑なクエリになりますが、クエリで可能だと思います。 文字列の場合の回答が必要であれば、補足欄にコメント下さい。 ================================================== 補足:SQL文からクエリを作る方法 ・新規のクエリを作成、デザインビュー ・テーブルは追加しない ・[表示]→[SQLビュー] ・SQL文をコピー&ペースト ・適当な名前をつけて保存

その他の回答 (3)

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

レコードの処理ができるプログラムを質問者が知ってないとできないでしょう。ADOとか。 ーー エクセルにエクスポートして、1列データを別シート(の方が良かろうが)で2個1行に関数で構成しなおすと言うのはできると思う。 さらにエクセルでCSVファイルで保存する。 ーー こういうのはエクスポートとは言わず。CSVファイルで保存するという。 ーー CSVファイルで保存し、それを読んで2レコード分をつなぎ、CSVで 書き出すプログラムも今から勉強するならこちらが簡単と思う。 伝票番号1,A 伝票番号2,B 伝票番号3,C 伝票番号4,D 伝票番号5,E 伝票番号6,F 伝票番号7,G 伝票番号8,H 伝票番号9,I ーー コード エクセルVBAで標準モジュールで Sub test01() r = 0 Open "C:\Documents and Settings\XXXX\My Documents\aaa3.csv" For Input As #1 'CSVファイルをシーケンシャル入力モードで開く Open "C:\Documents and Settings\XXX\My Documents\aaa4.csv" For Output As #2 Do Until EOF(1) 'EOFでない間は Line Input #1, s1 r = r + 1 ' MsgBox s1 Line Input #1, s2 r = r + 1 ' MsgBox s2 Print #2, s1; ","; s2 Loop If r Mod 2 = 1 Then Print #2, s1 End If Close #1 Close #2 End Sub 結果 伝票番号1,A,伝票番号2,B 伝票番号3,C,伝票番号4,D 伝票番号5,E,伝票番号6,F 伝票番号7,G,伝票番号8,H 伝票番号9,I

noname#140971
noname#140971
回答No.2

補足:回答は欠番には対応していませんよ!

noname#140971
noname#140971
回答No.1

<tab1> ID__fld1 1___A 2___B 3___C 4___D <クエリ1> D__fld1 1___A 3___C SELECT ID, fld1 FROM tab1 WHERE (ID MOD 2)=1; ここまでは簡単かと思います。 それから先を SQL文で実現するのは難しい。 だから、質問に至ったのだと思います。 <クエリ2> ID__fld1__ID_II__fld1_II 1___A_____2______B 3___C_____4______D との出力も不可能ではないでしょう。 SELECT ID, fld1, DLookup("ID", "tab1", "ID=" & ID+1) AS ID_II, DLookup("fld1", "tab1", "ID=" & ID+1) AS fld1_II FROM tab1 WHERE (ID MOD 2)=1; 一番、簡単なのはこのように DLookup関数などを作成して強制的に横に並べることです。 しかし、DLookup関数は実行速度が遅いし・・・。 それに、出力用の一時テーブルに単一Select文で出力する手もあります。 そうすりゃ、難解な SQL文に挑まなくてもOKかと。 シンプルが一番かと思います。

関連するQ&A