準・究極の選択

ASPでオラクル上のレコードを書き出したCSVファイルをダウンロードするページを作成しました。
あるフィールドに半角カンマが入ったレコードが存在したため、その行だけ列がずれてしまいました。

そのCSVファイルはAccessで作成したプログラムで取り込みます。インポート定義で、半角カンマをフィールドの区切りに設定してあります。

Accessでの読み込みエラーを回避するために、フィールド中の半角カンマを全角カンマに置換してCSVファイルを作成したいのです。
ASP上で、Replace関数を使用してみましたが、半角カンマが引数の区切りと認識されたり、シングルクオーテーションもコメントとして認識されたりしてうまくいきません。


Response.write Replace(rs("フィールド1"),",",",") & "," & rs("フィールド2") & vbNewLine

※rsはレコードセットです。

どなたか解決方法を知っていらっしゃる方、ご教授願います。

A 回答 (2件)

> あるフィールドに半角カンマが入ったレコードが存在したため、その行だけ列がずれてしまいました。



フィールド区切り記号だけでなく、文字列には引用符をつけるといった規則を
つけてやればいいと思います。
#Accessではインポート/エクスポート定義で設定できます。

1,"ABC","DEF"
2,"A,B","CDE"

のような形にすれば。

この回答への補足

早速の回答ありがとうございます。この質問をする前にGin_Fさんのように、引用符をつける方法も検討しました。
ただAccessのプログラムを使用しているのが1000ユーザー程いる状況で、プログラムの再配布をせずにデータ側で何とかできないかと思って相談しました。
Gin_Fさんの回答は正しいと思います。
質問にもう少し説明を付けるべきでした、すいません。

補足日時:2004/03/15 16:58
    • good
    • 0

こんにちは。



最初に一言。
CSVで出力するデータに半角カンマが入ってる、っていうのはよくないですね^^;
#1さんがおっしゃる通り、区切り記号を使うのが一般的なやり方です。

今回は、Accessで作成したプログラム(マクロでしょうか?)で取り込むとのこと。
区切り記号を使えるかどうかは、Access側の仕様によりますから、微妙です。

OracleでReplace関数を使ってみたらいかがですか?
(動作確認済です。)


SELECT REPLACE(フィールド1,',',',') , フィールド2
FROM ~
WHERE ~


どうしてもASPに頼ってしまいますが、OracleのSQL関数も意外に使えますので、これからもぜひお試し下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Accessへの取り込みはおっしゃるとおりマクロでのインポートです。VBAで1行1行取り込んでいれば、楽だったのですが・・・

blodd_kazuakiさんの回答は目からウロコでした。
教えて頂いたSQL文を元に、オラクルでビューを作成することにします。
助かりました。

お礼日時:2004/03/16 08:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!