在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