カンマ区切りのヘッダ無しTextファイルの読出をするには?

解決


ミルクティー  2006-02-16 02:45:50  No: 130263

いつも参考にさせていただいてます。またわからないことができたので、
質問させていただきます。
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;を設定するだけ
ではダメなのでしょうか?よろしくお願いいたします。


特攻隊長まるるう  2006-02-16 04:38:48  No: 130264

プロバイダが違うからでは?
[HOWTO] Visual Basic または VBA から ADO を Excel データで使用する
http://support.microsoft.com/default.aspx?scid=kb;ja;257819

列見出し(HDR)は Jet の設定だと思ったけど?
FirstRowHasNames = 0 の設定を追加するみたい。


魔界の仮面弁士  2006-02-16 04:53:20  No: 130265

ヘッダの有無も含め、細かい指定を行うためにも、SCHEMA.INI を
用意した方が安全でしょう。

SCHEMA.INI が無ければ、.Properties("Jet OLEDB:Registry Path").Value にて
指定されたレジストリパスにある、ユーザー定義設定が使われます。

カスタム設定が無い場合、既定の設定値が使われます。ヘッダ定義なら、
HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\FirstRowHasNames です。


ミルクティー  2006-02-17 00:20:00  No: 130266

特攻隊長まるるうさん、魔界の仮面弁士さん、いつもありがとうございます。
出先でして返事が遅くなってしまい申し訳ありません。

プロバイダが違うとダメなのは気づきませんでした…。というかよくわからない
ままやってました。
お二人にいただいたリンク先とレジストリ設定値をよく見直してみます。
まだ作業中ですが、とりあえず解決ということにさせていただきます。
ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加