• ベストアンサー

複数行を含む列を含むCVSファイルをインポートし、フォームで改行を反映させて表示したい

電子メールのデータ(日付、タイトル、本文等)をコンマ区切りのCVSファイルに出力し、それをマイクロソフトAccess2003(windowsXP環境)にインポートしました。 本文は複数行あるのでCVSファイル内では""で囲んであります。 インポート後のテーブル表示では、複数行の文字列として格納されていることを確認しております。 例えばメモ帳などにコピー&ペーストすると改行を含んだ形で元の電子メールデータの本文が正しく表示されます。 しかし、これをAccessのフォーム機能にて表示すると、複数行の文字列が一行に変換されて表示されてしまいます。 最終的にやりたいことは、メールデータをCVS形式でAccessのテーブルにインポートし、それを1メール1フォームの形式で表示し、各メールに対して自由記述あるいはチェックボックス等を使ってフラグ付けをしながら次々にページをめくるようにして読んでいきたいということです。 現在のところテーブルへのインポートまでは成功していると認識しておりますが、肝心のフォーム表示にて本文が一行化されてしまい非常にみにくくて作業効率が悪い状態でなんとかならないかと考えています。

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

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

>インポート後のテーブル表示では、複数行の文字列として格納されていることを確認しております。 正しく改行されてフィールドに保存されていればフォームのコントロールにも改行されて表示されるはずなのですが。 Chr(13)だけインポートされている状態だと・(キャリッジリターンのみ)になり改行できません。Chr(13) & Chr(10)を含めてインポートするとか。 フォームのコントロールに表示したときにコントロール内に・があるようならユーザー関数を作ってクエリ上で改行に変換すれば表示できます。 標準モジュールに下記をコピーしてください。(コピーすればMyRaplaceという関数として使えます。) Option Compare Database Option Explicit Function MyRaplace(VarExpression As Variant _ , StrFind As String _ , StrReplace As String _ ) As Variant If IsNull(VarExpression) Then MyRaplace = Null Else MyRaplace = Replace(Expression:=VarExpression _ , Find:=StrFind _ , Replace:=StrReplace _ , Compare:=vbTextCompare) End If End Function そしてクエリに 本文1:MyRaplace(テーブル名.本文,"・",Chr(13) & Chr(10)) で変換後にコントロールのソースを本文1にするか フォームのレコードソースに本文を持っていれば本文を表示したいコントロールのソースに =MyRaplace(本文,"・",Chr(13) & Chr(10)) で変換し改行することができます。

syuutomi
質問者

お礼

ご回答ありがとうございました。 ご指摘の点で「・」も表示されておりませんでした。 で、結論を言うとやはり改行コードの問題UNIX形式のlfとなっていました。 これをperl側でs/\n/\r\n/g;としてやることで無事Accessにて正常に改行されるようになりました。

その他の回答 (1)

  • sakko99
  • ベストアンサー率63% (19/30)
回答No.1

本来の改行位置に「・」のようなものが表示されていませんか? メモ帳などで見る改行コードとAccessフォームの改行コードは 違ったと記憶しています。そうであれば、インポートした後に そのコード変換のUPDATE処理を実行すれば解決すると思います。

syuutomi
質問者

お礼

ご回答ありがとうございました。 ご指摘の点で「・」も表示されておりませんでした。 で、結論を言うとやはり改行コードの問題UNIX形式のlfとなっていました。 これをperl側でs/\n/\r\n/g;としてやることで無事Accessにて正常に改行されるようになりました。

関連するQ&A