在VB里使用ADO访问文本数据文件是一件简单的事件,但还是有些朋友不太明白。因此作一些说明,希望能给朋友一点启发。

    首先,如果文本数据文件有多个字段,那我们需要创建一个名为Schema.ini的配置文件,用来描述文本文件的字段信息,该文件必须与作为数据来源的文本数据文件存放在同一个文件夹里。其实Schema.ini也是一个文本文件,我们可以用记事本来编辑它。

    一、现在,假设有一个文本数据文件名为data1.txt,包含两个字段,字段之间使用空间来间隔,字段名称有Field1、Field2,那么,Schema.ini文件可以配置如下:

[data1.txt]
     ColNameHeader=False
     format=Delimited( )
     MaxScanRows=0
     CharacterSet=ANSI
     Col1="field1"   Char   Width   20   
     Col2="field2"   Char   Width   20

    接下来,我将逐行进行解释。

    [data1.txt]指定文本数据文件的名称,一个Schema.ini文件里可以同时指定多个文本数据文件的配置信息,各配置信息之间由文本数据文件的名称为INI文件的节名称。

    ColNameHeader指明文本数据文件的第一行是否为字段名称,True表示第一行为字段名称,False表示第一行就是数据。本处表示文本数据的第一行即为数据。

    MaxScanRows指明描述多少行数,为0时表示扫描文件的所有行。

    format指定文本数据文件中各字段之间的间隔符号,间隔符号只能为一个可见的ASCII字符。本处间隔符号使用了一个空格。

    CharacterSet指定文本数据文件的编码,该编码必须跟文本数据文件保存时指定的编码保持一致。

    Col1指定第一个字段属性,包括字段名称、字段的数据类型和字段大小。

    Col2指定第二个字段属性,包括字段名称、字段的数据类型和字段大小。

    如果有更多字段,则依次类推。

    二、有了信息配置文件,则可以编辑和访问文本数据文件了。首先运行记事本,填写数据以下

2001110100 25325.0
 2001110101 25635.0
 2001110102 26035.0

    然后保存为data1.txt,data1.txt必须与Schema.ini在同一个文件夹下。

    通过填写数据,我们可以知道,数据有两个字段,且第一行不包含字段名称,字段之间使用空格间隔,总共有三条记录。这些条件必须与信息配置文件保持一致。

    三、现在,我们就可以使用ADO来访问了。具体代码如下:

Sub Main()
    Dim db As Object
    Dim rs As Object
    
    Set db = CreateObject("ADODB.Connection")
    db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文本数据文件所在路径/;Extended Properties=""" & "text;HDR=no;"""
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open "data1.txt", db
    Debug.Print rs.Fields(0).Name, rs.Fields(1).Name
    Do Until rs.EOF
        Debug.Print rs.Fields(0).Value, rs.Fields(1).Value
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    db.Close
End Sub