元の三流解説は、
三流君ASP:ADO CSVで先頭行にフィールド名が無い時
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・
ADO Extended Properties='text;HDR=NO' でヘッダー無しCSVと接続 ソースコード
<%@LANGUAGE=VBScript%> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>ADO Extended Properties='text;HDR=NO' でヘッダー無しCSVと接続</title> </head> <body> <h1>ADO Extended Properties='text;HDR=NO' でヘッダー無しCSVと接続</h1> test090-1.asp<br> ASPからADOを使用してテキストファイル(*.csv)に接続を行う<br> ファイル名はtest090.csvで、データは,カンマで区切られてます。<br> 先頭行にあると便利なフィールド名が今回はありません。<br> ※データが1行目から入っているカンマ区切りのCSVファイルです<br> もう一つパラメータ ;Extended Properties='text;HDR=NO'を追加してみました。<br> <pre> <Font Color='Green'>'接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する</Font> Con = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath(".") & ";" & _ "Extended Properties=""text;HDR=No;FMT=Delimited;"";" '↑MapPathに(".")を渡し、カレントディレクトリを渡す </pre><br> こんな感じで作成しました。 <hr> <% 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") 'SQLのテーブル名には、ファイル名test090.csvを指定します。 strSQL = "select * from test090.csv" '接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する Con = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath(".") & ";" & _ "Extended Properties=""text;HDR=No;FMT=Delimited;"";" '↑MapPathに(".")を渡し、カレントディレクトリを渡す Response.Write "使用する接続文字列は<br>" Response.Write "<STRONG><CODE>" & Con & "</CODE></STRONG><br>" Response.Write "発行するSQL文字列は<br>" Response.Write "<STRONG><CODE>" & strSQL & "</CODE></STRONG><hr>" '接続文字列、SQLを渡して、レコードセットを開く rs.Open strSQL, Con, 0 '0=adOpenForwardOnly 'データの表示をテーブルで行う Response.Write "<TABLE Border='1'>" '見出しを(フィールド名を)そのまま書き込む Response.Write "<TR>" For Each fld_A In rs.Fields 'フィールドのアイテムに対してループ Response.Write "<TH>" & fld_A.Name & "</TH>" '←.Nameでフィールド名 Next Response.Write "</TR>" 'お約束のEOFまでループは(データが無くなるまでループ)、 Do While rs.EOF = False 'レコードセットの.EOFがFalseの間 Response.Write "<TR>" '内容を表示する For Each fld_A In rs.Fields 'フィールドのアイテムに対してループ Response.Write "<TD>" & fld_A.Value & "</TD>" '←.Valueでフィールドの値 Next Response.Write "</TR>" rs.MoveNext '次のレコードに移動する Loop Response.Write "</TABLE></SAMP>" 'テーブルは終わりです '後始末 rs.Close '開いていたレコードセットを閉じる Set rs = Nothing 'お行儀よくオブジェクトも開放しましょう %> <hr> 無事、F1,F2などと、フィールド名が自動で設定されました。<br> ↓で元のヘッダー(項目名)無しのCSVを確認してみてください。<br> [<a Href="test090.csv" TARGET="_blank">ヘッダ無しの元ファイルtest090.csvを開く</a>]<br> </body> </html>
↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test090-1.asp← 実行する
ADO ヘッダー無しのCSVと接続 F1,F2などの自動項目を条件にする ソースコード
<%@LANGUAGE=VBScript%> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>ADO ヘッダー無しのCSVと接続 F1,F2などの自動項目を条件にする</title> </head> <body> <h1>ADO ヘッダー無しのCSVと接続 F1,F2などの自動項目を条件にする</h1> test090-2.asp<br> ASPからADOを使用してテキストファイル(*.csv)に接続を行う<br> ファイル名はtest090.csvで、データは,カンマで区切られてます。<br> 先頭行にあると便利なフィールド名が今回はありません。<br> ※データが1行目から入っているカンマ区切りのCSVファイルです<br> もう一つパラメータ ;Extended Properties='text;HDR=NO'を追加してみました。<br> <pre> <Font Color='Green'>'接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する</Font> Con = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath(".") & ";" & _ "Extended Properties=""text;HDR=No;FMT=Delimited;"";" '↑MapPathに(".")を渡し、カレントディレクトリを渡す </pre><br> こんな感じで接続文字を作成<br> SQL文でF1,F2などの自動で付けられるフィールド名を使ってみました。<br> ※詳細は下記の実行結果とソースを見てください<br> <hr> <% 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") '接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する Con = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath(".") & ";" & _ "Extended Properties=""text;HDR=No;FMT=Delimited;"";" '↑MapPathに(".")を渡し、カレントディレクトリを渡す 'SQLのテーブル名には、ファイル名test090.csvを指定します。 strSQL = "select * from test090.csv" strSQL = strSQL & " Where F3 = '日経BP出版センター'" '↑F3の出版社の項目を条件にしてデータをWhereで絞り込む Response.Write "使用する接続文字列は<br>" Response.Write "<STRONG><CODE>" & Con & "</CODE></STRONG><br>" Response.Write "発行するSQL文字列は<br>" Response.Write "<STRONG><CODE>" & strSQL & "</CODE></STRONG><hr>" '接続文字列、SQLを渡して、レコードセットを開く rs.Open strSQL, Con, 0 '0=adOpenForwardOnly 'データの表示をテーブルで行う Response.Write "<TABLE Border='1'>" '見出しを(フィールド名を)そのまま書き込む Response.Write "<TR>" For Each fld_A In rs.Fields 'フィールドのアイテムに対してループ Response.Write "<TH>" & fld_A.Name & "</TH>" '←.Nameでフィールド名 Next Response.Write "</TR>" 'お約束のEOFまでループは(データが無くなるまでループ)、 Do While rs.EOF = False 'レコードセットの.EOFがFalseの間 Response.Write "<TR>" '内容を表示する For Each fld_A In rs.Fields 'フィールドのアイテムに対してループ Response.Write "<TD>" & fld_A.Value & "</TD>" '←.Valueでフィールドの値 Next Response.Write "</TR>" rs.MoveNext '次のレコードに移動する Loop Response.Write "</TABLE></SAMP>" 'テーブルは終わりです '後始末 rs.Close '開いていたレコードセットを閉じる Set rs = Nothing 'お行儀よくオブジェクトも開放しましょう %> <hr> ↓で元のヘッダー無しのCSVを確認してみてください。<br> [<a Href="test090.csv" TARGET="_blank">ヘッダ無しの元ファイルtest090.csvを開く</a>]<br> </body> </html>
↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test090-2.asp← 実行する
↑コードの三流解説は、
三流君ASP:ADO CSVで先頭行にフィールド名が無い時
を見て、笑ってやってください。
ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・