- ベストアンサー
クエリで抽出した行をコンマで区切って1つの表に出力したい
クエリで抽出した同じフィールドの名前をコンマで区切って TEXTかWordに出力する方法が知りたいです。 たとえば、社員名のフィールドを選択クエリで抽出し、 「伊藤, 佐藤, 田中, 橋本・・・」のように全てのデータを コンマで区切って結合して1つのデータにし、TEXTかWordに コピーしたいんです。 レポートに出力するのでもかまいません。 普通にエクスポートすると、行になって出てきてし まいます。 素人の質問で済みません。 どなたかお知恵をお貸しください。
- みんなの回答 (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 こういう方向性でも良いのであれば参考にされてください。 なお、・・・・・部は、丸回答というルール違反を避けるためで他意はありません。
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
DBが何なのか書かれていませんが・・ 一般的なDBだと何行になるかわからないものをカンマ区切りで出力するようなオプションはないと思います。普通にエクスポートしておいてから、テキストファイル処理で改行コード→カンマの変換をかける方がいいと思います。
お礼
すみません。ACCESS 2003です。 現在は、EXCELにエクスポートしてから、CONCATENATE関数で地道に繋げています。 簡単なマクロを作って処理してますが、行数が一定していないので、かなり大変な作業です。 CONCATENATE関数のような関数があれば、簡単に繋げられるのではないか、と思ったのですが…。 >テキストファイル処理で改行コード→カンマの変換をかける 素人なもので、処理の方法が分かりません。 自分でも調べてみますが、よければご教授願います。
お礼
お礼が遅くなってすみません。 格闘してみましたが、やっぱり私には無理みたいです…。 ご親切にありがとうございました。