• ベストアンサー

ASPでCSVファイルのダウンロード

ASPでオラクル上のレコードを書き出したCSVファイルをダウンロードするページを作成しました。 あるフィールドに半角カンマが入ったレコードが存在したため、その行だけ列がずれてしまいました。 そのCSVファイルはAccessで作成したプログラムで取り込みます。インポート定義で、半角カンマをフィールドの区切りに設定してあります。 Accessでの読み込みエラーを回避するために、フィールド中の半角カンマを全角カンマに置換してCSVファイルを作成したいのです。 ASP上で、Replace関数を使用してみましたが、半角カンマが引数の区切りと認識されたり、シングルクオーテーションもコメントとして認識されたりしてうまくいきません。 Response.write Replace(rs("フィールド1"),",",",") & "," & rs("フィールド2") & vbNewLine ※rsはレコードセットです。 どなたか解決方法を知っていらっしゃる方、ご教授願います。

noname#85865
noname#85865

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

  • ベストアンサー
回答No.2

こんにちは。 最初に一言。 CSVで出力するデータに半角カンマが入ってる、っていうのはよくないですね^^; #1さんがおっしゃる通り、区切り記号を使うのが一般的なやり方です。 今回は、Accessで作成したプログラム(マクロでしょうか?)で取り込むとのこと。 区切り記号を使えるかどうかは、Access側の仕様によりますから、微妙です。 OracleでReplace関数を使ってみたらいかがですか? (動作確認済です。) SELECT REPLACE(フィールド1,',',',') , フィールド2 FROM ~ WHERE ~ どうしてもASPに頼ってしまいますが、OracleのSQL関数も意外に使えますので、これからもぜひお試し下さい。

noname#85865
質問者

お礼

回答ありがとうございます。 Accessへの取り込みはおっしゃるとおりマクロでのインポートです。VBAで1行1行取り込んでいれば、楽だったのですが・・・ blodd_kazuakiさんの回答は目からウロコでした。 教えて頂いたSQL文を元に、オラクルでビューを作成することにします。 助かりました。

その他の回答 (1)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

> あるフィールドに半角カンマが入ったレコードが存在したため、その行だけ列がずれてしまいました。 フィールド区切り記号だけでなく、文字列には引用符をつけるといった規則を つけてやればいいと思います。 #Accessではインポート/エクスポート定義で設定できます。 1,"ABC","DEF" 2,"A,B","CDE" のような形にすれば。

noname#85865
質問者

補足

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

関連するQ&A

  • ASPでCSVを出力させたいです

    ASPでCSVを出力させたいのですが、うまくできません。 過去にも同じような質問があり、下記ソースで可能と書かれていました。 <% Response.AddHeader "Content-disposition", "filename=""motteke.csv""" Response.ContentType="text/csv" Response.Write "1,2" & vbNewLine Response.Write "3,4" & vbNewLine %> これを参考にしたのですが、どうしてもうまくいきません。 "1,2"が文字列として認識されてしまい、カンマ区切り("1","2"のような感じ)になりません。 どうか良い方法を教えてください。

  • ASPでCSVファイルを作成しダウンロードさせる

    ASPファイルで、動的にCSVファイルを作成し、クライアントにダウンロードさせたいのですが、実際には、ファイルは作成せずに、ASPで直接、CSVフォーマットのファイルをダウンロードさせているように振舞わせることはできないでしょうか? 手順 クライアント        サーバー あるURL(A.ASP)にアクセス              A.ASPのスクリプトでCSVフォーマットを作成              クライアントに送信(多分、Response.Writeで) ダウンロードダイアログが開く 「A.CSVをダウンロードしますか?」 のような感じ ダウンロード、またはExcelが開く というようなイメージです。 CSVファイルを作ってしまうと、複数のユーザーからほぼ同時に要求があった場合、望むCSVにならない可能性があり、また、毎回ファイル名を変えると、Webサーバー上にCSVファイルが沢山できてしまうため、何とかこの方法でやりたいのですが、何かよい方法はありませんでしょうか? ちなみに次のようなASPファイルをしてみましたが、うまくいきません。 <% Response.Content-Type="application/vnd.ms-excel" Response.Write "1,2" & vbNewLine Response.Write "3,4" & vbNewLine %> また、「vnd.ms-excel」を「oct-stream」でもだめでした。 何かよい知恵をお貸しください。

  • EXCEL VBAでのCSVファイルの編集

    CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。

  • CSVファイルを読んでシートに書き込む方法

    エクセルのマクロ(VB6.5)でCSVファイルをよんでシートに書き込みたいのですが誰か教えて下さい。 例えば CSVファイルはこんな感じだとします。 ファイルID:test.csv ファイル内容  (1レコード)123,123,123,123,123,123  (2レコード)456,456,456,456,456  (3レコード)789,789,789,789 書き込むシートは「abcシート」とします。 CSVファイルはカンマ区切りですがレコード毎にカンマ区切りのデータ数が違います。 シートには指定したセルに書き込めば一番いいのですが、上から順番に書き込んでもいいです。 申し訳ありませんが、宜しくお願い致します。

  • Excel VBAにてCSVファイルを読みたい

    ExcelにてCSVファイルを読んで処理をしたい。 ただし、CSVファイルをExcelでopenすると遅いので、 VBAにてファイルとして読み込みで処理をしたいのですが、 皆さんは、どのように行っていますか? ※CSVファイルは、テキスト区切り→"(ダブルコーテーション)です  テキスト区切り無しであれば、1行読んで、カンマをsplitすれば良いと思いますが。。。。

  • Access2000でのCSV出力(エクスポート)

    お世話になります。 Access2000を利用して、あるテーブルデータをCSVファイルとしてエクスポートしようとしています。 そのときに、すべての要素を「"」(ダブルコーテーション)で囲み(「,」カンマで区切り)たいのですが、 データ型が文字型のときは設定で上手く囲めるものの、数値型では値がそのまま出力されてしまいます。 数値型のフィールドもダブルコーテーションで囲む方法はありませんでしょうか? よろしくお願いいたします。 例)"ああああ","A10000",100         ↓   "ああああ","A10000","100" ← ここ

  • CSV形式ファイルにある、カンマについて

    こんにちは。 現在、VB2005で、CSV形式のファイルを読むプログラムを 作っているのですが、CSV形式の1フィールドの中に カンマが入っているデータがあります。 フィールドの区切りのカンマではなく、文字としての カンマとして取り扱う場合は、そのカンマはどのように 変換すればいいのでしょうか? エスケープシーケンスという方法があるというところまでは わかったのですが、具体的にどのようにすればいいのかが わかりません。 よろしくお願いいたします。

  • Access VBA CSVファイルのインポート

    お世話になります。 VBAにてCSVファイル(タブ区切り)をインポートするのに、 以下のように記述してますが、エラーとなります。 なお、インポート先のtempテーブルはインポートするCSVファイルの フィールドと同じ並びで予め作成したものです。 DoCmd.TransferText acImportDelim, , "temp", path, True 「実行時エラー2391 貼り付け先のtempテーブルには、'フィールド1_ フィールド2_フィールド3'フィールドがありません。」 このエラーを見る限り、フィールド1~3が一つのフィールドとして 認識されているように見受けられます。 タブ区切りなのか、カンマ区切りなのかを指定するようなパラメタは あるのでしょうか。 なお、当該CSVファイルをウィザードより手動でインポートする分には 問題無くインポート出来ます。 ************** インポートするCSVファイルはユーザーにより見出し(フィールド)の 並びが異なる場合がある為、インポート定義を予め作っておくことが できない状況です。 ご教授の程、宜しくお願い致します。

  • 【Access2000VBA】CSVファイルインポートの不具合

    Access2000でCSVファイルインポートをVBAで行っています。 ところが、CSVファイル内に全角カンマ(,)がある場合、 区切り文字として認識されてしまい困っています。 区切り文字としてではなく文字として取得したいのですが可能でしょうか。 お手数ですが方法がわかる方、ご回答よろしくお願いいたします。

  • FileMaker ProでCSV出力

    FileMaker Pro8.5の評価版を使っていました。(期間終了してしまいました。) 編集したデータをCSV(カンマ区切り)で出力したいのですが、一行目のフィールド名が出力されないようでした。 編集後のCSVはASPへアップロードするため、読み込んだ時と同じ形式で出力する必要があるのですが、可能でしょうか。 ASPの会社ではマイクロソフトのアクセスなら編集可能と言っていますが、だとしたらファイルメーカーでもできるだろうと思うのですが、、、

専門家に質問してみよう