- - PR -
CSVへの出力のしかた
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-06-23 18:24
無茶苦茶素人ですがどなたか助けて頂けませんでしょうか。
下記で返される結果をローカルにCSVファイルとして保存したいのですが・・・ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <%scriptlanguage = vbscript%> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <META name="GENERATOR" content="IBM HomePage Builder 2001 V5.0.2 for Windows"> <TITLE></TITLE> </HEAD> <body> <H2 align="center">パフォーマンス件数確認(Start&EndDateをyyyy/mm/ddで入力)</H2> <DIV align="left"> <FORM method="POST">Start Date <INPUT size="10" type="text" name="StartDate" ><BR> <FORM method="POST">End Date <INPUT size="10" type="text" name="EndDate" ><INPUT type="submit" name="sarch" value="検索"> </FORM> </DIV> <table border="border"> <TR> <th ALIGN="center" VALIGN="middle" nowrap width="60"><FONT FACE="MS Pゴシック">No</FONT></th> <th ALIGN="center" VALIGN="middle" nowrap width="60"><FONT FACE="MS Pゴシック">SiteCode</FONT></th> <th ALIGN="center" VALIGN="middle" nowrap width="150"><FONT FACE="MS Pゴシック">件数</FONT></th> </TR> <% i = 1 set Conn = nothing Set Conn = Server.CreateObject("ADODB.Connection") set rs = nothing Set rs = Server.CreateObject("ADODB.Connection") call conn.Open("PROVIDER=SQLOLEDB;DATA SOURCE=***;DATABASE=***;UID=***;PWD=***;") StartDate = request.form("StartDate") EndDate = request.form("EndDate") if StartDate <> "" then sql="select sd.name, sum(day1) + sum(day2) + sum(day3) + sum(day4) + sum(day5) + sum(day6) + sum(day7) from tblbooking b, tblsitedetails sd " sql= sql & " where b.sitecode = sd.sitecode " sql= sql & " and Date >= ' " & StartDate & "' " sql= sql & " and Date <= ' " & EndDate & "' " sql= sql & " and filmcode not in ( select filmcode from tblfilms where name like '#%') " sql= sql & " group by sd.name " Set rs = Conn.Execute(sql) do until rs.eof response.write "<TD align=right>" & i & "</TD>" response.write "<TD align=right>" & rs.Fields(0) & "</TD>" response.write "<TD align=right>" & rs.Fields(1) & "</TD>" & "</TR>" rs.movenext i = i + 1 loop rs.Close end if conn.Close %> </table> </BODY></HTML> |
|
投稿日時: 2008-06-23 18:29
開発環境と、具体的にどうしたくて何が分からないのかを書かないと助けてもらえない気がします。
|
|
投稿日時: 2008-06-23 18:38
上記のSQLで返ってくる結果を今は単に表示しているだけなのですが、自動でCSVファイルにしてローカルに保存したいのですが、上記のソースのどこにどのように書いたらよいのかが全くわかりません。色々ネットで見たのですがまだはじめたばかりで・・・すみません勉強不足で。
|
|
投稿日時: 2008-06-23 18:54
自動で保存は無理なので、ダウンロードさせる形になると思います。
ASPでCSVファイルのダウンロード - VB業務アプリケーション開発研究室 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33419&forum=36&2 |
|
投稿日時: 2008-06-23 19:16
ありがとうございます。がんばってみます。
|
|
投稿日時: 2008-06-23 22:40
念のため、SQLインジェクションにも気をつけてあげてください。
|
|
投稿日時: 2008-06-24 12:30
下記のように書いてみましたが、”HTTP ヘッダーはすでにクライアントのブラウザに書き込まれています。HTTP ヘッダーの修正はページ内容を書き込む前に行われなければなりません。”とエラーになってしまいます。
どこにどのように下記のラインを書き込めばよいのかわかりません。 Response.ContentType="application/octet-stream" Response.AddHeader "Content-Disposition","attachment; filename=test.csv" 素人でもうしわけありませんがどなたか助けて頂けないでしょうか。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <%scriptlanguage = vbscript%> <HTML> <HEAD> <TITLE>CSV Download</TITLE> <HEAD> <body> <H2 align="center">パフォーマンス件数確認(Start&EndDateをyyyy/mm/ddで入力)</H2> <DIV align="left"> <FORM method="POST">Start Date <INPUT size="10" type="text" name="StartDate" ><BR> <FORM method="POST">End Date <INPUT size="10" type="text" name="EndDate" ><INPUT type="submit" name="sarch" value="検索"> </FORM> </DIV> <table border="border"> <% Response.ContentType="application/octet-stream" Response.AddHeader "Content-Disposition","attachment; filename=test.csv" i = 1 set Conn = nothing Set Conn = Server.CreateObject("ADODB.Connection") set rs = nothing Set rs = Server.CreateObject("ADODB.Connection") call conn.Open("PROVIDER=SQLOLEDB;DATA SOURCE=;DATABASE=;UID=;PWD=;") StartDate = request.form("StartDate") EndDate = request.form("EndDate") if StartDate <> "" then sql="select sd.name, sum(day1) + sum(day2) + sum(day3) + sum(day4) + sum(day5) + sum(day6) + sum(day7) from tblbooking b, tblsitedetails sd " sql= sql & " where b.sitecode = sd.sitecode " sql= sql & " and Date >= ' " & StartDate & "' " sql= sql & " and Date <= ' " & EndDate & "' " sql= sql & " and filmcode not in ( select filmcode from tblfilms where name like '#%') " sql= sql & " group by sd.name " Set rs = Conn.Execute(sql) do until rs.eof response.write i & "," response.write rs.Fields(0) & "," response.write rs.Fields(1) response.Write "<BR>" response.write Chr(13) & Chr(10) rs.movenext i = i + 1 loop rs.Close end if conn.Close response.end() %> </table> </BODY></HTML> |
|
投稿日時: 2008-06-24 13:06
ちゃんとリンク先のスレッドは読まれましたか?
SQLの結果をページに表示して、さらにダウンロードさせるには 表示するページとは別にCSVをダウンロードさせるページ(asp)が必要です。 私なら、既存の結果を表示するページに見えないサイズのIFrameを挿入して、そのsrcにCSVをダウンロードさせるASPを指定して実装します。 |