Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ= を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードはDriver={Microsoft Text Driver (*.txt; *.csv)};DBQ= です。
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>ADOでCSVファイルと接続、Count関数で出版社名略称を集計してみた</title>
</head>
<body>
<h1>ADOでCSVファイルと接続、Count関数で出版社名略称を集計してみた</h1>
test080-3.asp<br>
ADOでCSVファイルと接続、Count関数で出版社名略称で個数を集計してみた<br>
<em>CSVに対してADO接続で、Gorup Byが使えることを確認してみました。</em><br>
<pre><code>
ファイル名はtest080.csvで、データは,カンマで区切られてます。
フィールドのイメージ
ISBN,書名,出版社名略称,価格,発売日
4-8399-0986-5,CPUの創りかた,毎コミ,2800,2003/9/30
4-8399-0997-0,速効!図解 ホームページ・ビルダー7,毎コミ,1280,2003/3/13
4-7980-0455-3,写真・イラスト入りはがきをつくる本,秀和システム,1280,2003/1/30
4-89369-974-1,VBAによるArcGISプログラミングガイド,BNN新社,2500,2003/9/26
4-7561-4198-6,プロジェクトマネジメント 実践の極意,アスキー,3200,2002/12/2
・
下記のようなSQL文と接続文字列でADOのレコードセットを作成してみました
'SQLのテーブル名には、ファイル名を指定します。
'Group By 出版社名略称でグループ化して冊数を数えてみました
strSQL = "select 出版社名略称, Count(*) AS 冊数 from test080.csv"
strSQL = strSQL & " Group By 出版社名略称"
<Font Color='Green'>'接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する</Font>
Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
Server.MapPath(".") & ";"
'↑MapPathに(".")を渡し、カレントディレクトリを渡す
</pre></code><br>
こんな感じで作成してみました。(詳細は下のほうにあるソースを見てください)
<hr>
<%
'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん
Set rs=Server.CreateObject("ADODB.Recordset")
'SQLのテーブル名には、ファイル名を指定します。
'Group By 出版社名略称でグループ化して冊数を数えてみました
strSQL = "select 出版社名略称, Count(*) AS 冊数 from test080.csv"
strSQL = strSQL & " Group By 出版社名略称"
'接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する
Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
Server.MapPath(".") & ";"
'↑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>
[<a Href="test080.csv" TARGET="_blank">元ファイルtest080.csvを開く</a>]<br>
</body>
</html>
| 最近発売の雑誌を紹介する
たまには、パズルなとで頭を柔らかくしておくと、プログラミングのひらめきもUPするかなぁ・・・
- オールクロスワード 2008年 06月号
- スケルトンくらぶ 2008年 06月号
- アロー & スケルトンパル 2008年 06月号
- お絵かきメイト 2008年 06月号
- デラックスクロスワード 2008年 06月号
- まちがいさがしミュージアム 2008年 06月号
- まちがいさがしメイト 2008年 06月号
- クロスワード in (イン) 2008年 06月号
- 漢字ナンパラ DX (デラックス) 2008年 06月号
|