- PR -

【ASP.NET(VB.NET)】テキストボックス内の文字列をcsv出力したい

投稿者投稿内容
ひな
会議室デビュー日: 2005/07/05
投稿数: 7
投稿日時: 2005-07-05 14:52
プログラミング超初心者です。
こんな質問を書き込みしてよいものか悩みましたが
調べてもわからなかったので質問させてください。

やりたいことは、ボタンクリック時にテキストボックスの中に書かれている文字列を
CSV形式で出力することです。
そして、ボタンをクリックした後は別のページに飛びたいのです。

ボタンをクリックし、CSV形式のファイルをダウンロードするやり方ではなく
あくまでクライアント側では「ボタンを押しただけ」にし
サーバー側(?)でCSV形式のファイルを生成したいのです。

言葉足らずですみません。
ご教授頂ければ幸いです(>_<)
よろしくお願いします。

下記は、ダウンロードするやり方、かつCSV形式ではありません…
(今できる精一杯でした;)
'***************************************************************
' Function Name : cmdSent_Click
' Outline : 送信ボタン押下時の処理
'***************************************************************
Sub cmdSent_Click(sender As Object, e As EventArgs)

Response.ContentType = "application/octet-stream"

Response.Write( lblQ1AnsImp.Text & "," )
Response.Write( lblQ2AnsImp.Text & "," )
Response.Write( lblQ3AnsImp.Text & "," )
Response.Write( lblQ4AnsImp.Text & "," )
Response.Write( lblQ5AnsImp.Text )

Response.End()

Server.Transfer( "Fin.aspx" )

End Sub
'***************************************************************
餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-05 16:03
引用:

ひなさんの書き込み (2005-07-05 14:52) より:
やりたいことは、ボタンクリック時にテキストボックスの中に書かれている文字列を
CSV形式で出力することです。
そして、ボタンをクリックした後は別のページに飛びたいのです。

ボタンをクリックし、CSV形式のファイルをダウンロードするやり方ではなく
あくまでクライアント側では「ボタンを押しただけ」にし
サーバー側(?)でCSV形式のファイルを生成したいのです。

言葉足らずですみません。
ご教授頂ければ幸いです(>_<)
よろしくお願いします。


#相変わらず回答では有りません(すいません)

まず、ご自身の行いたいことを整理してみましょう。
1.画面でボタンを押下されたときに、画面項目から値を取得したい。
2.取得した値を使ってCSVファイルを作りたい。
3.作成したCSVファイルは。
  3−1.クライアントにダウンロードしたい。
  3−2.サーバ側に保存したい。
4.画面遷移を行いたい。

ということですかね?個別に調べれば分るような。
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-07-05 16:22
手元に環境が無いので実験・確認等できません。
勘違いしているかも知れませんのでご了承を。

お困りの箇所が、
1.Response.Writeを使用して、CSV出力をする。
2.出力後に、Server.Transferでページ遷移する。
これをセットでやろうとした場合に、
期待した動作にならないということでしたら。

Server.Transferは、現在のPage処理を中断(threadAbort)して
次Page(Fin.aspx)を生成し、処理結果をクライアントに返すものです。
ですので、この処理過程中にResponse.Writeした結果は
クライアントに届かないような気がします。(思いっきり想像)
Flushしたら届くかもですが。。

私が実装するとしたら、
遷移前に、出力したいデータをあらかじめセットしておき、
次のPage処理で取得してからCSV出力します。
データのセット/取得は、SessionとかContextHandlerを使います。
画面遷移先が決まっていないと、面倒そうですけど。
ひな
会議室デビュー日: 2005/07/05
投稿数: 7
投稿日時: 2005-07-05 16:59
餅宮餅喜さん、葉瀬崎浩樹さん。
ありがとうございます。

1.画面でボタンを押下されたときに、画面項目から値を取得したい。
→これはできます。

2.取得した値を使ってCSVファイルを作りたいので
→値ごとを","で区切って連結しました。
→連結したものを変数に入れときます。

3.テキストファイルを作成し、2を書き込み、テキストファイルを閉じ、
4.画面遷移を行いたい。(遷移先は決まっています)

といった感じです。
テキストファイルへの出力と画面遷移は同時に行えないのでしょうか…

葉瀬崎浩樹さんの、
>遷移前に、出力したいデータをあらかじめセットしておき、
>次のPage処理で取得してからCSV出力します。
というのは、次ページに移った時に出力するってことでしょうか?

うう、きっとすごい初歩なんだろうなぁ。スミマセン(>_<)
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-07-05 17:10
引用:
テキストファイルへの出力と画面遷移は同時に行えないのでしょうか…

葉瀬崎浩樹さんの、
>遷移前に、出力したいデータをあらかじめセットしておき、
>次のPage処理で取得してからCSV出力します。
というのは、次ページに移った時に出力するってことでしょうか?



はい、次ページで出すようにしたら堅いという話でした。
もちろん、Response.Writeしつつ、Server.Transferが上手くいくのであれば、
そんな小細工する必要はありません。処理の流れが不透明になるだけですし。
(想像で読み進めたため、混乱させちゃいましたね)

その前に、餅宮餅喜さんにまとめて頂いたように、
1つずつの処理を確実にしていくことですねー!
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-07-05 17:23
引用:

葉瀬崎浩樹さんの書き込み (2005-07-05 16:22) より:

Server.Transferは、現在のPage処理を中断(threadAbort)して
次Page(Fin.aspx)を生成し、処理結果をクライアントに返すものです。
ですので、この処理過程中にResponse.Writeした結果は
クライアントに届かないような気がします。(思いっきり想像)
Flushしたら届くかもですが。。



ここだけ。
違います。
Response.Endしているので、Server.Transferが実行される事はありません。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-07-05 17:27
引用:

ひなさんの書き込み (2005-07-05 16:59) より:
3.テキストファイルを作成し、2を書き込み、テキストファイルを閉じ、
4.画面遷移を行いたい。(遷移先は決まっています)



クライアントにCSVファイルをダウンロードするわけではなく、サーバで作成するだけであれば、System.IO名前空間以下のクラスを利用してファイル作成すればよいと思います。
勿論、作成しようとしているフォルダに対する権限等も考慮してください。
で、その後に画面遷移をすればよいです。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-05 17:44
引用:

ひなさんの書き込み (2005-07-05 16:59) より:
3.テキストファイルを作成し、2を書き込み、テキストファイルを閉じ、
4.画面遷移を行いたい。(遷移先は決まっています)

といった感じです。
テキストファイルへの出力と画面遷移は同時に行えないのでしょうか…

葉瀬崎浩樹さんの、
>遷移前に、出力したいデータをあらかじめセットしておき、
>次のPage処理で取得してからCSV出力します。
というのは、次ページに移った時に出力するってことでしょうか?

うう、きっとすごい初歩なんだろうなぁ。スミマセン(>_<)


 状況整理することによって、問題点を明確化しなければ、質問者と回答者の両方の時間を無駄にしてしまいます。
 問題点は、CSVファイルをクライアントにダウンロードしつつ、画面遷移を行いたいのでしょうか?それとも、ファイルはサーバに保存し、その後、画面遷移を行いたいのでしょうか?
 ファイルをダウンロードしつつ、画面遷移を行うのそこそこ骨が折れるような気がいたします。サーバに保存するだけであれば、かなり簡単だと思いますが。  

スキルアップ/キャリアアップ(JOB@IT)