- ベストアンサー
ASPでCSVファイルのダウンロード
ASPでオラクル上のレコードを書き出したCSVファイルをダウンロードするページを作成しました。 あるフィールドに半角カンマが入ったレコードが存在したため、その行だけ列がずれてしまいました。 そのCSVファイルはAccessで作成したプログラムで取り込みます。インポート定義で、半角カンマをフィールドの区切りに設定してあります。 Accessでの読み込みエラーを回避するために、フィールド中の半角カンマを全角カンマに置換してCSVファイルを作成したいのです。 ASP上で、Replace関数を使用してみましたが、半角カンマが引数の区切りと認識されたり、シングルクオーテーションもコメントとして認識されたりしてうまくいきません。 Response.write Replace(rs("フィールド1"),",",",") & "," & rs("フィールド2") & vbNewLine ※rsはレコードセットです。 どなたか解決方法を知っていらっしゃる方、ご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 最初に一言。 CSVで出力するデータに半角カンマが入ってる、っていうのはよくないですね^^; #1さんがおっしゃる通り、区切り記号を使うのが一般的なやり方です。 今回は、Accessで作成したプログラム(マクロでしょうか?)で取り込むとのこと。 区切り記号を使えるかどうかは、Access側の仕様によりますから、微妙です。 OracleでReplace関数を使ってみたらいかがですか? (動作確認済です。) SELECT REPLACE(フィールド1,',',',') , フィールド2 FROM ~ WHERE ~ どうしてもASPに頼ってしまいますが、OracleのSQL関数も意外に使えますので、これからもぜひお試し下さい。
その他の回答 (1)
- Gin_F
- ベストアンサー率63% (286/453)
> あるフィールドに半角カンマが入ったレコードが存在したため、その行だけ列がずれてしまいました。 フィールド区切り記号だけでなく、文字列には引用符をつけるといった規則を つけてやればいいと思います。 #Accessではインポート/エクスポート定義で設定できます。 1,"ABC","DEF" 2,"A,B","CDE" のような形にすれば。
補足
早速の回答ありがとうございます。この質問をする前にGin_Fさんのように、引用符をつける方法も検討しました。 ただAccessのプログラムを使用しているのが1000ユーザー程いる状況で、プログラムの再配布をせずにデータ側で何とかできないかと思って相談しました。 Gin_Fさんの回答は正しいと思います。 質問にもう少し説明を付けるべきでした、すいません。
お礼
回答ありがとうございます。 Accessへの取り込みはおっしゃるとおりマクロでのインポートです。VBAで1行1行取り込んでいれば、楽だったのですが・・・ blodd_kazuakiさんの回答は目からウロコでした。 教えて頂いたSQL文を元に、オラクルでビューを作成することにします。 助かりました。