• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessのレコード内容をテキスト出力したい。)

Accessのレコード内容をテキスト出力する方法

このQ&Aのポイント
  • Accessのテーブルに保存されたレコード内容をテキストファイルに出力する方法について説明します。
  • テーブル「重複データ」には、メールアドレスと複数のクラブ名が保存されています。メールアドレスごとに、重複しているクラブ名をテキストファイルに出力するプログラムが必要です。
  • プログラムを実行すると、指定されたフォルダにメールアドレスごとのテキストファイルが作成されます。ファイルには、重複したクラブ名とまとめて申請するようにするメッセージが記載されます。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

既に解決されていましたら、スルーしてください。 以下でどうでしょうか。おかしかったらドンドン修正していってください。 Dim db As Database Dim rs As Recordset Dim rs2 As Recordset Dim strSQL As String Dim intFlNo As Integer Dim strText As String Dim strFlNm As String Dim strOutFl As String Dim intFlCnt As Integer Dim strTmp As String Set db = CurrentDb() strFlNm = "c:\test\" strSQL = "SELECT メールアドレス FROM 重複データ GROUP BY メールアドレス HAVING Count(*)>1;" Set rs = db.OpenRecordset(strSQL) Do Until rs.EOF   intFlCnt = intFlCnt + &H1   strOutFl = strFlNm & rs!メールアドレス & ".txt"   intFlNo = FreeFile   Open strOutFl For Output As #intFlNo   Print #intFlNo, rs!メールアドレス   Print #intFlNo, ""   Print #intFlNo, "クラブ入会希望の申請が重複しています。"   Print #intFlNo, "◆クラブ名◆"   strTmp = ""   strSQL = "SELECT * FROM 重複データ WHERE メールアドレス = '" & rs!メールアドレス & "';"   Set rs2 = db.OpenRecordset(strSQL)   Do Until rs2.EOF     strTmp = strTmp & " " & Nz(rs2!クラブ1) & Nz(rs2!クラブ2) & Nz(rs2!クラブ3)     rs2.MoveNext   Loop   rs2.Close   Print #intFlNo, Mid(strTmp, 2)   Print #intFlNo, ""   Print #intFlNo, "複数のクラブに希望される場合は、まとめて申請してください。"   Close #intFlNo   rs.MoveNext Loop rs.Close db.Close ※  テーブル「重複データ」は重複したものを抽出して作られたものと思いますが、 上記では、重複していないデータがあっても重複したものだけを処理します。 ※ クラブ1、クラブ2、クラブ3 には、どれか1つにのみデータがあるという前提です。 ※ クラブ1、クラブ2、クラブ3 の順に得たい場合には、rs2 を作る時に Order By を指定してください。 (ORDER BY クラブ1 DESC, クラブ2 DESC, クラブ3 DESC とか) ※ この処理だけであれば、intFlCnt は不要なのでは? (strText の宣言も?)

rose1224
質問者

お礼

ご丁寧にありがとうございます! テーブル「重複データ」をクエリで集計し、 それをテキスト出力することで解決しました。 アドバイスいただいた方法も勉強になりますので、 試してみます。 確かに、intFlCntとstrText の宣言は不要でした。 どうもありがとうございました!

関連するQ&A