|
分類:[ASP.NET (VB)]
おはようございます、いつもお世話になっております。
CSV出力時にこちらの予定したとおりに吐き出さず、悩んでおります。
SQLにてテーブルからデータを取得し、その内容をCSVに吐き出すという処理なんですが、
1件のみ→予定通りの出力
複数件該当→最初の1行目が出力されず、2行目からの出力
という状況になっています。
ちなみにSQLDataSouce上のクエリではこちらの予定どおりのデータは取得できております。
以下該当すると思われるソースを掲載いたしますのでご指摘よろしくお願いいたします。
環境
XPProSP2
VWDExpressEdition
SQLServer2005ExpressEdition
'処理日付の結合用変数
Dim syoridate As String
syoridate = yearddl + monthddl + dateddl
'CSV用SQLの発行
'データベース接続文字列の型の宣言
Dim sql_cn As New System.Data.SqlClient.SqlConnection
'データベースを参照するSQL文の文字列の型の宣言
Dim sql_set As System.Data.SqlClient.SqlCommand
'Web.Configを参照する文字列の宣言
Dim sql_ac As String = String.Empty
'Web.Configを参照する
sql_ac = System.Web.Configuration.WebConfigurationManager.ConnectionStrings("DBConString").ConnectionString
'DBを開くために参照した文字列を代入
sql_cn.ConnectionString = sql_ac
sql_cn.Open()
sql_set = sql_cn.CreateCommand()
IF文での条件がありますが、割愛
sql_set.CommandText = Me.SQLDS_OFFJ.SelectCommand
sql_set.Parameters.AddWithValue("@TSSYRDATE", syoridate)
sql_set.Parameters.AddWithValue("@TSOFFCD", offnm)
Dim csv_o_put As System.Data.SqlClient.SqlDataReader
csv_o_put = sql_set.ExecuteReader()
Dim cnt_field As Integer = 1
Dim csv_data As String = ""
'取得件数分実行
While (csv_o_put.Read())
'取得フィールド回数分データを足しこんでいく
Do Until cnt_field = csv_o_put.FieldCount
csv_data += csv_o_put(cnt_field).ToString() + ","
cnt_field += 1
Loop
csv_data &= System.Environment.NewLine
cnt_field = 1
End While
'CSVファイルのダウンロード用形式の取得
Response.AppendHeader("Content-Disposition", "attachiment; filename=d" + syoridate + ".csv")
Response.ContentType = "application/octet-stream"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("Shift_JIS")
Response.Write(csv_data)
Response.End()
|