• ベストアンサー

クエリで抽出した行をコンマで区切って1つの表に出力したい

クエリで抽出した同じフィールドの名前をコンマで区切って TEXTかWordに出力する方法が知りたいです。 たとえば、社員名のフィールドを選択クエリで抽出し、 「伊藤, 佐藤, 田中, 橋本・・・」のように全てのデータを コンマで区切って結合して1つのデータにし、TEXTかWordに コピーしたいんです。 レポートに出力するのでもかまいません。 普通にエクスポートすると、行になって出てきてし まいます。 素人の質問で済みません。 どなたかお知恵をお貸しください。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

Employee: ID_EName _1_伊藤 _2_佐藤 _3_田中 [イミディエイト] ? FileWrite("C:\Temp\Test.txt", DBSelect("SELECT EName FROM Employee")) True これは、Access2003 のイミディエイトウインドウでの実行結果です。 テーブル[Employee]の列[EName]を C:\Temp\Test.txt に出力しています。 C:\Temp\Test.txt: 伊藤;佐藤;田中 データがコンマでは区切られていません。 [イミディエイト] ? FileWrite("C:\Temp\Test.txt", DBSelect("SELECT EName FROM Employee", ",")) True C:\Temp\Test.txt: 伊藤,佐藤,田中 今度は、列データの区切り子にコンマ(,)を指定しているので目的が達成されています。 このように、FileWrite関数、DBSelect関数の類を開発すれば目的は容易に達成されます。 この2つの関数は、別に特段に難しいものではありません。 プログラマでもない素人の私が書ける程度のもんです。 ちょっと、サワリを示せば次のようです。 Public Function FileWrite(ByVal FileName As String, _              ByVal Text As String) As Boolean On Error GoTo Err_FileWrite   Dim fso As Object   Dim txs As Object      Set fso = CreateObject("Scripting.FIleSystemObject")   Set txs = fso.CreateTextFile(FileName, True)   txs.Write Text   FileWrite = True Exit_FileWrite:   Exit Function Err_FileWrite:   MsgBox Err.Description & "(FileWrite)", vbExclamation, " 関数エラーメッセージ"   Resume Exit_FileWrite End Function Public Function DBSelect(ByVal strQuerySQL As String, _              Optional ByVal strSeparator1 As String = ";", _              Optional ByVal strSeparator2 As String = "") As String On Error GoTo Err_DBSelect   Dim I   As Integer   Dim J   As Integer   Dim R   As Integer   Dim C   As Integer   Dim M   As Integer   Dim N   As Integer   Dim rst  As ADODB.Recordset   Dim fld  As ADODB.Field   Dim Datas As String      Set rst = New ADODB.Recordset   With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then       M = .RecordCount - 1       N = .Fields.Count - 1       .MoveFirst       For R = 0 To M         For C = 0 To N           ・・・・・         Next C         ・・・・・         .MoveNext       Next R       ・・・・・      End If   End With Exit_DBSelect:   DBSelect = Replace(Datas, strSeparator1 & strSeparator2 & strSeparator1, "")   Exit Function Err_DBSelect:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSelect End Function こういう方向性でも良いのであれば参考にされてください。 なお、・・・・・部は、丸回答というルール違反を避けるためで他意はありません。

milky2222
質問者

お礼

お礼が遅くなってすみません。 格闘してみましたが、やっぱり私には無理みたいです…。 ご親切にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

DBが何なのか書かれていませんが・・ 一般的なDBだと何行になるかわからないものをカンマ区切りで出力するようなオプションはないと思います。普通にエクスポートしておいてから、テキストファイル処理で改行コード→カンマの変換をかける方がいいと思います。

milky2222
質問者

お礼

すみません。ACCESS 2003です。 現在は、EXCELにエクスポートしてから、CONCATENATE関数で地道に繋げています。 簡単なマクロを作って処理してますが、行数が一定していないので、かなり大変な作業です。 CONCATENATE関数のような関数があれば、簡単に繋げられるのではないか、と思ったのですが…。 >テキストファイル処理で改行コード→カンマの変換をかける 素人なもので、処理の方法が分かりません。 自分でも調べてみますが、よければご教授願います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • クエリで複数条件を同時に抽出・出力する方法

    お世話になります。 ACCESSのクエリであるテーブルの入力ミスを抽出したいと考えています。 例えば、氏名と科目と点数があるとします。 No.  氏名  科目  点数 -------------------------- 01 佐藤  国語   80 02 田中  国語   45 03 鈴木  国語   60 04 佐藤  数学   75 05 田中  数学   40 06 鈴木  数学   48 ここで抽出したい条件として、国語は59点以下、数学は49点以下の抽出をしたいとして、今まではクエリの条件に1つずつ科目と点数に条件を入れ1つずつ結果を抽出をしていましたが、同時に結果を得ることができますか?また、結果をリスト表(クエリかレポート)として出力できますか? 拙い文で申し訳ありませんが、分かる方いらっしゃいましたらよろしくお願いいたします。 (スキルとして少しで、ブランクもありますがVBA,SQLです)

  • 何の為に「抽出条件」「または」が2段に分かれてる

    何の為に「抽出条件」「または」が2段に分かれてるのですか? アクセスの使い方がよくわからないので質問します。 ----------------------- テーブル1 苗字(フィールド) 田中 佐藤 伊藤 ・ ・ ・ ----------------------- クエリ1で フィールド:苗字 テーブル:テーブル1 並べ替え: 表示: 抽出条件:"田中" または:"佐藤" ----------------------- と入力して保存しクエリを一回閉じて再度開くと ----------------------- 抽出条件:"田中" Or "佐藤" または:(空白) ----------------------- になってしまいます。 意味は同じだと思うのですが 見た目上、2段のまま保存されたいのですが 自動でorを使われ一段で表示されてしまうのでしょうか? だとしたら何の為に「抽出条件」「または」が2段に分かれてるのですか? わかりやすくするために画像を添付します。

  • access2007 クエリで抽出

    初心者です。クエリで抽出したのですが、一部のデータが抜け落ちます。抽出条件のフィールドはテキスト型で、元のテーブルでコピペで統一しましたが、同じデータが抜け落ちます。削除してやり直しても同様でした。重複クエリを作成するとこのフィールドが重複して出てきます。どこを直したらいいのか見当がつきません。よろしくお願いします。

  • アクセスのクエリ抽出について

    アクセスで、テキストデータを開き クエリウィザードからフィールドの抽出条件として 文字が含まれているものと文字が含まれていないものと それぞれ抽出したいのですが Likeの式から抽出出来るのでしょうか? なにかの文字を含んでるデータに対しては 抽出できるのですが、うまく抽出出来ません。 下記のようなイメージで抽出したいと思ってます。 例 データ合計5件    "00000001234-23 " "12345672-1-2 " "" "55145672-1-3-2 " ""    データあり3件    "00000001234-23 " "12345672-1-2 " "55145672-1-3-2 "    データなし2件    "" "" 宜しくお願いします。

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • クエリーで全部のデータを抽出する方法

    アクセスのクエリーでデータを抽出する時、具体的にはフォームでデータを入力し抽出するのですが、たとえばフォームのテキストボックスに数字を入れないとそのクエリーのフィールドは抽出がかからないようにしたいのです。(抽出フィールドが1つなら数字をいれなければクエリーのデータすべてが表示される) ----------------------------------- フィールド   A      B     c テーブル   テーブル1 テーブル1 テーブル1 抽出条件    []    [] または    ---------------------------------- 上はクエリーのデザインですがクエリーをひらくと抽出条件をきいてきますがA列は何も入力しないでB列では1と入力するとBの列に1の入ってるレコードを表示させたいのです。(もし空欄が無理ならAの列の時何かある文字を入力すると全部表示になる、でもいいです。) まわりくどくなりましたが、アクセス超入門者です。よろしくおねがいします。

  • ACCESS クエリの抽出項目をEXCELから

    Access2000のクエリの抽出項目をExcel2013の内容を抽出項目として指定するにはどうすればよいでしょうか。 Excelには、 佐藤 田中 鈴木 ......... のように縦に名前が最大18名分入っています。 この(最大)18名の名前をAccessの抽出項目とします(フィールドは10あってその6番目に抽出項目を18名分入力したいのです)。 18名を一人一人コピペしていたのですが、何とか簡素化できないものかな?と思っています。 できれば、マクロで一発で抽出項目を貼り付けたいのですが。 よろしくお願いします。

  • Accessの選択クエリの抽出条件について

    いちもお世話になります。Access2002を勉強中の初心者です。 顧客テーブルから選択クエリを作っています。クエリのフィールドには「都道府県」(東京、埼玉、千葉...)と「顧客名」(山田、佐藤、田中...)があります。 「顧客名」の山田以外を抽出したいのですが、但し「都道府県」が東京の場合は山田以外の条件を外したいのです。つまり、埼玉、千葉の山田は抽出しませんが東京の山田は抽出したいのです。 このような抽出条件の設定ができますか? アドバイス、よろしくお願いします。

  • Accessのデータをテキストファイルで出力する方法を教えてください。

    Accessのデータをテキストファイルで出力する方法を教えてください。 クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。 DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt" フィールドごとに改行して出力する方法はないでしょうか? <クエリ結果> フィールド1  フィールド2  フィールド3 aaa      bbb      ccc <出力テキストファイル> aaa bbb ccc

  • ACCESSでのクエリ抽出条件について

    ACCESS超初心者です。 自分なりに調べたのですが、知識不足によりお手上げ状態です。 クエリの抽出条件について、どなたかご教授いただけますでしょうか? OS:XP ACCESS:2000 ・フォーム上に自由に入力できるテキストを3つ用意します。 ・入力された3つのテキストが1つのフィールドに含まれるものをクエリで抽出したい。 ・3つのテキストが空欄の場合は全てのデータを抽出したい。 ■フォーム上のテキスト  テキスト1:テキスト10  テキスト2:テスト11  テキスト3:テスト12 ■テーブル  フィールド1:問合せ内容(1) ■クエリ内の抽出条件 Like "*" & [Forms]![F_検索テスト]![テキスト10] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト11] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト12] & "*" テキスト名がおかしいのですが、ご了承下さい。