いつも参考にさせていただいてます。またわからないことができたので、
質問させていただきます。
VB6.0にて、カンマ区切りのヘッダ無しファイル(xxxx.txt)から一時テーブル
を作る場合なのですが、ADOで
Dim cn1 As ADODB.Connection
Dim rs1 As ADODB.Recordset
Set cn1 = New ADODB.Connection
cn1.ConnectionString = "Provider=MSDASQL;" & _
"Extended Properties=text;HDR=No;" & _
"DBQ=C:\Work\;" & _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Extensions=txt,csv,tab,asc;FIL=text"
cn1.Open
Set rs1 = New ADODB.Recordset
rs1.Source = "data.txt"
rs1.ActiveConnection = cn1
rs1.CursorType = adOpenStatic
rs1.Open
Do While Not rs1.EOF
DoEvents
Debug.Print rs1.Fields(0)
rs1.MoveNext
Loop
rs1.Close
cn1.Close
Set rs1 = Nothing
Set cn1 = Nothing
と処理しているのですが、最初に取得できるデータが2行目からのデータ
になってしまいます。Extended Properties=text;HDR=No;を設定するだけ
ではダメなのでしょうか?よろしくお願いいたします。
プロバイダが違うからでは?
[HOWTO] Visual Basic または VBA から ADO を Excel データで使用する
http://support.microsoft.com/default.aspx?scid=kb;ja;257819
列見出し(HDR)は Jet の設定だと思ったけど?
FirstRowHasNames = 0 の設定を追加するみたい。
ヘッダの有無も含め、細かい指定を行うためにも、SCHEMA.INI を
用意した方が安全でしょう。
SCHEMA.INI が無ければ、.Properties("Jet OLEDB:Registry Path").Value にて
指定されたレジストリパスにある、ユーザー定義設定が使われます。
カスタム設定が無い場合、既定の設定値が使われます。ヘッダ定義なら、
HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\FirstRowHasNames です。
特攻隊長まるるうさん、魔界の仮面弁士さん、いつもありがとうございます。
出先でして返事が遅くなってしまい申し訳ありません。
プロバイダが違うとダメなのは気づきませんでした…。というかよくわからない
ままやってました。
お二人にいただいたリンク先とレジストリ設定値をよく見直してみます。
まだ作業中ですが、とりあえず解決ということにさせていただきます。
ありがとうございました。
| ツイート |
|