三流君(TOP) /ASPで遊ぶ /記事一覧

ADO CSV 接続 ダミーファイルをUNION ALLでつなげた

test101-2.asp
ASPからADOを使用して.csvに接続して、単純にデータを表示すると、
データの型が自動変換されて、困ってしまうときがある
※ファイル名はtest101.csvで、データは,カンマで区切られてます。
日付,IP,URL,分数TEST,少数TEST,備考,予備
2004/12/25,192.168.0.1,ken3.org,1/20,1.25,備考の文字,1-2-3
2005-01-08,192.168.0.25,/asp/,1/3,5.10,日付の形式を少し変えた
2005/01/19 17:30,192.168.0.17,vba,2/7,5,時刻を付けた,04-05-06
を読み込むと、勝手にフィールドの型が決まってしまい、処理に困る
そこで、1行のみのダミーファイルを用意して、
UNION ALL でつなげ、型を決めてみたいと思う

ADOでCSVの接続は、
'SQLのテーブル名には、ファイル名を指定します。
strSQL = "select * from test101.csv"
'接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する
Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
      Server.MapPath(".") & ";"
'↑MapPathに(".")を渡し、カレントディレクトリを渡す
こんな感じで普通に接続してみました。

普通にCSVファイルと接続

使用する接続文字列は
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\users\ken3_org\Cgi-bin\test;Extensions=txt,csv,tab,;FIL=txt
発行するSQL文字列は
select * from test101.csv
日付IPURL分数TEST少数TEST備考予備
2004/12/25192.168ken3.org1/201.25備考の文字2001/02/03
2005/01/08192.168/asp/1/35.1日付の形式を少し変えた
2005/01/19 17:30:00192.168vba2/75時刻を付けた2004/05/06

ダミーファイルとUNION ALL で接続

使用する接続文字列は
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\users\ken3_org\Cgi-bin\test;IMEX=1;
発行するSQL文字列は
select * from dummy101.csv UNION ALL select * from test101.csv
日付IPURL分数TEST少数TEST備考予備
2000/01/01ABCDEFG文字だよここも文字9.999備考は文字予備も文字列
2004/12/25192.168ken3.org1/201.25備考の文字2001/02/03
2005/01/08192.168/asp/1/35.1日付の形式を少し変えた
2005/01/19 17:30:00192.168vba2/75時刻を付けた2004/05/06

[元ファイルtest101.csvを開く]
[ダミーファイルdummy101.csvを開く]

コーヒーブレイク たまには寄り道、休憩も(↓広告です):
広告:[Blogで商品紹介] ← 足跡から人気を判断?
[本日発売の商品] ← 発売日が当日の商品を紹介、、、するが効果が無いので → [来週7日後] ← を作成して、検索の席取りで予約を狙ってます(テスト・試行錯誤中)

Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=を使用したサンプル(ソースの紹介)

詳細解説は[http:/asp/backno/asp101.html]を見てください
下記、/cgi-bin/test/test101-2.aspのソース(中身)です

Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ= を 使った ソースコードを紹介する

表示色の説明:ASP VBScriptは <% 〜 %>
キーワードはDriver={Microsoft Text Driver (*.txt; *.csv)};DBQ= です。 <%@LANGUAGE=VBScript%> <html> <head> <title>ADO CSV 接続 ダミーファイルをUNION ALLでつなげた</title> </head> <body> <h1>ADO CSV 接続 ダミーファイルをUNION ALLでつなげた</h1> test101-2.asp<br> ASPからADOを使用して.csvに接続して、単純にデータを表示すると、<br> データの型が自動変換されて、困ってしまうときがある<br> ※ファイル名はtest101.csvで、データは,カンマで区切られてます。<br> <pre> 日付,IP,URL,分数TEST,少数TEST,備考,予備 2004/12/25,192.168.0.1,ken3.org,1/20,1.25,備考の文字,1-2-3 2005-01-08,192.168.0.25,/asp/,1/3,5.10,日付の形式を少し変えた 2005/01/19 17:30,192.168.0.17,vba,2/7,5,時刻を付けた,04-05-06 を読み込むと、勝手にフィールドの型が決まってしまい、処理に困る そこで、1行のみのダミーファイルを用意して、 UNION ALL でつなげ、型を決めてみたいと思う <b>ADOでCSVの接続</b>は、 <Font Color='Green'>'SQLのテーブル名には、ファイル名を指定します。</Font> strSQL = &quot;select * from test101.csv&quot; <Font Color='Green'>'接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する</Font> Con = &quot;Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=&quot; &amp; _ Server.MapPath(&quot;.&quot;) &amp; &quot;;&quot; '↑MapPathに(&quot;.&quot;)を渡し、カレントディレクトリを渡す </pre> こんな感じで普通に接続してみました。 <hr> <% Response.Write "<h2>普通にCSVファイルと接続</h2>" 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") '接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _ Server.MapPath(".") & ";Extensions=txt,csv,tab,;FIL=txt" '↑MapPathに(".")を渡し、カレントディレクトリを渡す 'SQLのテーブル名には、ファイル名を指定します。 strSQL = "select * from test101.csv" 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でフィールドの値 Response.Write "<TD>" & fld_A & "</TD>" '←.Valueでフィールドの値 Next Response.Write "</TR>" rs.MoveNext '次のレコードに移動する Loop Response.Write "</TABLE>" 'テーブルは終わりです '後始末 rs.Close '開いていたレコードセットを閉じる Set rs = Nothing 'お行儀よくオブジェクトも開放しましょう Response.Write "<h2>ダミーファイルとUNION ALL で接続</h2>" 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") '接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _ Server.MapPath(".") & ";IMEX=1;" '↑MapPathに(".")を渡し、カレントディレクトリを渡す 'SQLのテーブル名には、ファイル名を指定しで、UNION ALL でつなげる strSQL = "select * from dummy101.csv " strSQL = strSQL & " UNION ALL " strSQL = strSQL & "select * from test101.csv" 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 '本番では、オープン後、1行空読みするといいのでは? 'rs.MoveNext 'ダミー分で次のレコードに移動する ここではコメント非実行 'データの表示をテーブルで行う 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>" 'テーブルは終わりです '後始末 rs.Close '開いていたレコードセットを閉じる Set rs = Nothing 'お行儀よくオブジェクトも開放しましょう %> <hr> [<a Href="test101.csv" TARGET="_blank">元ファイルtest101.csvを開く</a>]<br> [<a Href="dummy101.csv" TARGET="_blank">ダミーファイルdummy101.csvを開く</a>]<br> </body> </html>

最近発売の雑誌を紹介する

プログラミングと関係あるような無いような、ビジネス・経済の雑誌を紹介します。
  1. 週刊 ダイヤモンド 2008年 5/17号
  2. PRESIDENT (プレジデント) 2008年 6/2号
  3. 財界 2008年 5/27号
  4. 金融経済統計月報 2008年 04月号
  5. 美容と経営 2008年 06月号
  6. 宣伝会議 2008年 5/15号
  7. 食品商業 2008年 06月号
  8. 建設統計月報 2008年 05月号
  9. 株主手帖 2008年 06月号

ソフト開発の書籍を紹介します

  1. [4887186517]- Windowsの悪のマニュアルXP
  2. [4822207951]- ソフトウェア開発データ白書〈2005〉
  3. [4797323361]- アジャイルソフトウェア開発の奥義
  4. [4274064735]- CVSによるオープンソース開発
  5. [4534031092]- 図解でわかる ソフトウェア開発のすべて―構造化手法からオブジェクト指向まで
  6. [4764902834]- ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

Googleで関連項目を検索する

LANGUAGE=VBScript + [キーワード:Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=] Sub|Function プログラム|プログラミング
↓で検索するとプログラムの例 Sub/Function でまとまったHP

Google

あれ?私のページが検索に載ってない(笑)一度お試しを(私のページに、また戻ってきてね(爆))

実行サンプルと解説ページのリンク

ASPでCSVと接続して、SQL文等を発行するサンプル

ASP系、ADO使用、CSV接続、SQL発行、メルマガ解説リンク

[No.80 Microsoft Text Driver (*.txt; *.csv) で接続してみた]
[No.90 ADO CSVで先頭行にフィールド名が無い時]
[No.91 ADO CSVでReadOnly=0と.AddNewを使いデータ追加]
[No.101 ADO CSV接続 勝手に型を決めんなよ・・・]
[No.102 ADO CSV接続 schema.iniを使い型を設定してみた]

三流解説とリンクページを紹介

ASP系の解説を項目ごとにまとめてみました

[ASP Form等を使用したデータのやり取り]
[ASP その他処理サンプル]
[ASP テキストファイル処理]
[ASP VBScript関数関係の説明]
[ASP ADOでMdbファイルを使う]
[ASP ADOでExcelと接続してみた]

その他:blogや広告↓
[日記的なblog]← あまり更新してないけど・・・
[三流なプログラムコード]← 恥ずかしいのであまり載せてないけど・・・
[通販商品の足跡を紹介] ←通販商品などを紹介してます


現在時刻は、2008/05/17 14:40:30です。
[Topへ戻る] −−>[ASP系へ戻る] −−>[バックナンバーを見る]