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

分類: [Form関係] /DB系ADOを使い( [Mdb接続] [CSV接続] [Excel接続]) /[ASPでTextFileを操作] /[VBScript関数ほか]

schema.ini ファイルを使って CSV 接続 フィールドの型を指定

test102-1.asp
下記のテストファイルを用意して、
ASPからADOを使用して.csvに接続して、単純にデータを表示してみました。
※ファイル名はtest101.csvとtest102.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
↑ファイルの中身は同一ですが、下記の
schema.ini設定ファイルをtest102.csvでは、設定してみます
[test102.csv]
ColNameHeader=True
Format=CSVDelimited
Col1=日付 Char Width 99 
Col2=IP Char Width 99
Col3=URL Char Width 99
Col4=分数TEST Char Width 99
Col5=少数TEST Char Width 99
Col6=備考 Char Width 99
Col7=予備 Char Width 99
※test102.csvでは、全てテキスト型のサイズ99としてみました。
ADOでCSVの接続は、
'SQLのテーブル名には、ファイル名を指定します。
strSQL = "select * from test101.csv"
'接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する
Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _
      Server.MapPath(".") & ";"
'↑MapPathに(".")を渡し、カレントディレクトリを渡す
こんな感じで普通に接続して、
Select * from test101.csv

Select * from test102.csv
でテストしてみました。

schema.ini で設定無しのtest101.csvの結果

使用する接続文字列は
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\users\ken3_org\Cgi-bin\test;
発行する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

データ型が自動的に変換されてしまい、
日付に見えるデータ(04-05-06など)

小数点付きの数値に見えるデータ(192.168.0.1など)が変換されてます

schema.ini で設定有りのtest102.csvの結果

使用する接続文字列は
Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\users\ken3_org\Cgi-bin\test;
発行するSQL文字列は
select * from test102.csv
日付IPURL分数TEST少数TEST備考予備
2004/12/25192.168.0.1ken3.org1/201.25備考の文字1-2-3
2005-01-08192.168.0.25/asp/1/35.10日付の形式を少し変えた
2005/01/19 17:30192.168.0.17vba2/75時刻を付けた04-05-06
↑こんな感じで、
schema.iniでフィールドの型を指定すると自動に変換されなくて
数値に見える文字データや日付関係で少しは使えるのかなぁ・・・

[設定ファイルschema.iniを開く]
[元ファイルtest101.csvを開く]
[元ファイルtest102.csvを開く]

参考URL: [[AC97]VBAから Schema.ini ファイルを作成する方法]



schema.iniを使用したサンプル(ソースの紹介)

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

schema.ini を 使った ソースコードを紹介する

表示色の説明:ASP VBScriptは <% 〜 %>
キーワードはschema.ini です。 <%@LANGUAGE=VBScript%> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>schema.ini ファイルを使って CSV 接続 フィールドの型を指定</title> </head> <body> <h1>schema.ini ファイルを使って CSV 接続 フィールドの型を指定</h1> test102-1.asp<br> 下記のテストファイルを用意して、<br> ASPからADOを使用して.csvに接続して、単純にデータを表示してみました。<br> ※ファイル名はtest101.csvとtest102.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 ↑ファイルの中身は同一ですが、下記の <strong>schema.ini</strong>設定ファイルをtest102.csvでは、設定してみます [test102.csv] ColNameHeader=True Format=CSVDelimited Col1=日付 Char Width 99 Col2=IP Char Width 99 Col3=URL Char Width 99 Col4=分数TEST Char Width 99 Col5=少数TEST Char Width 99 Col6=備考 Char Width 99 Col7=予備 Char Width 99 ※test102.csvでは、全てテキスト型のサイズ99としてみました。 <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> こんな感じで普通に接続して、<br> Select * from test101.csv<br> と<br> Select * from test102.csv<br> でテストしてみました。 <hr> <h2>schema.ini で設定無しのtest101.csvの結果</h2> <% Call CSVGET_TEST("test101.csv") %> <br> データ型が自動的に変換されてしまい、<br> 日付に見えるデータ(04-05-06など)<br> や<br> 小数点付きの数値に見えるデータ(192.168.0.1など)が変換されてます<br> <hr> <h2>schema.ini で設定有りのtest102.csvの結果</h2> <% Call CSVGET_TEST("test102.csv") %> ↑こんな感じで、<br> schema.iniでフィールドの型を指定すると自動に変換されなくて<br> 数値に見える文字データや日付関係で少しは使えるのかなぁ・・・<br> <hr> [<a Href="schema.ini" TARGET="_blank">設定ファイルschema.iniを開く</a>]<br> [<a Href="test101.csv" TARGET="_blank">元ファイルtest101.csvを開く</a>]<br> [<a Href="test102.csv" TARGET="_blank">元ファイルtest102.csvを開く</a>]<br> <br> 参考URL: [<a Href="http://support.microsoft.com/default.aspx?scid=kb;ja;155512&Product=accJPN" TARGET="_blank">[AC97]VBAから Schema.ini ファイルを作成する方法</a>]<br> <hr> <% Sub CSVGET_TEST(strFileName) 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") '接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" & _ Server.MapPath(".") & ";" '↑MapPathに(".")を渡し、カレントディレクトリを渡す 'SQLのテーブル名には、ファイル名を指定します。 strSQL = "select * from " & strFileName '受け取ったファイル名を追加する Response.Write "使用する接続文字列は<br>" Response.Write "<STRONG><CODE>" & Con & "</CODE></STRONG><br>" Response.Write "発行するSQL文字列は<br>" Response.Write "<STRONG><CODE>" & strSQL & "</CODE></STRONG><br>" '接続文字列、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>" 'テーブルは終わりです '後始末 rs.Close '開いていたレコードセットを閉じる Set rs = Nothing 'お行儀よくオブジェクトも開放しましょう End Sub %> </body> </html>

広告

リンク広告
  1. --[Windows 仮想メモリ ページファイルの移動や設定]
  2. --[ Windows7 OSのフルバックアップ システムイメージバックアップ]
  3. --[Access コンボボックスを使ってみた]

Googleで関連項目を検索する

[キーワード:schema.ini] と サンプル|解説|Dim|Set で検索
↓で検索して他のページも確認してみてください。

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を使い型を設定してみた]


[Topへ戻る] −−>[ASP系のTOPへ戻る] −−>[記事一覧を見る]

リンク 三流君 ASP系 の 解説を項目ごとにまとめてみました

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。

次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません

DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く



VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。

その他:blogや広告↓
[日記的なblog]← あまり更新してないけど・・・
[永遠の下書き日記?]← 恥ずかしいのであまり載せてないけど・・・
[ひとりで掲示板?] ←一人で?掲示板?ぉぃぉぃ


[Topへ戻る] −−>[ASP系のTOPへ戻る] −−>[記事一覧を見る]

現在時刻は、2017/01/25 4:15:49です。