- PR -

CSVへの出力のしかた

投稿者投稿内容
Eternity
会議室デビュー日: 2008/06/23
投稿数: 6
投稿日時: 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>
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-06-23 18:29
開発環境と、具体的にどうしたくて何が分からないのかを書かないと助けてもらえない気がします。
Eternity
会議室デビュー日: 2008/06/23
投稿数: 6
投稿日時: 2008-06-23 18:38
上記のSQLで返ってくる結果を今は単に表示しているだけなのですが、自動でCSVファイルにしてローカルに保存したいのですが、上記のソースのどこにどのように書いたらよいのかが全くわかりません。色々ネットで見たのですがまだはじめたばかりで・・・すみません勉強不足で。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-06-23 18:54
自動で保存は無理なので、ダウンロードさせる形になると思います。

ASPでCSVファイルのダウンロード - VB業務アプリケーション開発研究室
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33419&forum=36&2
Eternity
会議室デビュー日: 2008/06/23
投稿数: 6
投稿日時: 2008-06-23 19:16
ありがとうございます。がんばってみます。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2008-06-23 22:40
念のため、SQLインジェクションにも気をつけてあげてください。
Eternity
会議室デビュー日: 2008/06/23
投稿数: 6
投稿日時: 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>


burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-06-24 13:06
ちゃんとリンク先のスレッドは読まれましたか?
SQLの結果をページに表示して、さらにダウンロードさせるには
表示するページとは別にCSVをダウンロードさせるページ(asp)が必要です。
私なら、既存の結果を表示するページに見えないサイズのIFrameを挿入して、そのsrcにCSVをダウンロードさせるASPを指定して実装します。

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