用MicrosoftJetTextIISAM可以链接和打开以各种字符分界和定长的文本文件。在源文件中,逗号、制表符或者自定义的各种定界符都有效。
一、指定连接信息。
用MicrosoftJet访问文件时,仍使用OpenDatabase方法,用该方法中的参数为文本文件指定连接信息,内容如下:
·源数据库类型:文本
·数据库名称:目录的全路径,在该目录中含有要访问的文本文件。
·源表名称:文本文件的名称,包括扩展名。如果不指定扩展名,则用缺省的扩展名.txt。
如果在字符分界文件中接连出现两个定界符,则MicrosoftJet将其视为空值。如果在定长文件的数据列中没有数据(空格),则MicrosoftJet也将其视为空值。MicrosoftJet通过直接读取文件或用方案描述信息文件来确定文本文件的格式。方案描述信息文件总是被命名为Schema.ini,并且总是与文本数据源存储在的同一个目录下,它向IISAM提供许多信息,其中包括文件的一般格式、列名称和数据类型信息以及其它一些数据特性。在访问定长数据时,必须有Schema.ini文件;而当在文本表中包含DateTime,Currency,Decimal数据或者希望更多地控制表中数据的处理时,应当使用Schema.ini文件。
以上这段话摘自VisualBasic5.0的联机手册。这段话中的“方案描述信息文件总是被命名为Schema.ini”可能有误。据笔者试验,方案描述信息文件应与要链接或打开的文本文件具有相同的文件基本名,其扩展名为.ini。注意,MicrosoftJet不支持多用户访问文本文件。用MicrosonJet打开一个文本文件之后,也就独占了对该文件的访问。MicrosoftJet对各种文本表和对象有一些限制,包括:
·字段:不超过255个字符
·字段名称:不超过64个字符
·字段宽度:不超过32,766个字符
·记录大小:不超过65,000个字节
二、方案描述信息文件。
对文本文件的访问通过方案描述文件来实现。也就是说,为了访问外部文本文件,必须提供方案描述信息文件。该文件提供了文本文件中记录的方案描述,其内容包括以下几个方面。
指定文件名。
方案描述信息文件的第一个项是文本源文件的名称,该文件名放在方括号内。例如,如果要访问名为Sample.txt的文本文件,则该项应写为:[Sample.txt]
指定文件格式。
方案描述信息文件中的格式选项指定了文本文件的格式,TextIISAM可以从大多数的字符分界文件中自动读取格式。在文本文件中,可以用除了双引号(")以外的任何单个字符作为定界符。方案描述信息文件的格式设置值覆盖了Windows注册表中所有文件的相应设置值。格式选项中的有效值如表所列。
格式设置字符
格式说明符格式
TabDelimited文件的字段用制表符定界
CSVDelimited文件的字段用逗号定界(用逗号定界的值)
Delimited(*)文件的字段用星号定界,可以使用除了双引号
以外的任何字符代替星号
FixedLength文件的字段为定长
例如,为了指定用逗号分隔的格式,可以在Schema.ini文件中添加如下一行:
Format=CSVDelimited
3.指定字段
在字符分界文本文件中,可以通过以下两种方式指定字段名称:
·把字段名称放在表的第一行中,并把ColNameHeader设置为True。
·用数字指定每个列并且指定列名称和数据类型。
注意,必须用数字指定每个列,并且指定列的名称和数据类型,对于定长文件要指定其宽度。字段的数据类型也可以由MicrosoftJet确定。即用MaxScanRows选项指示MicrosonftJet在确定列的类型时应当扫描多少行。如果将MaxScanRows设置为0,则MicrosoftJet将扫描整个文件。方案描述信息文件中的MaxScanRows设置值覆盖了Windows注册表中每个文件的相应设置值。例如:
ColNameHeader=True
MaXSCanRows=0
将指示MicrosoftJet用表中第一行的数据来确定字段名称,而且扫描整个文件来确定所用的数据类型。表(文本文件)的各个字段通过列号(Coln)选项指定,该选项对于字符分界文件是可选的,而对于定长文件是必需的。Coln的格式如下:
Coln=ColumnNametyPe[Width#]
Coln项包括以下几个部分:
·ColumnName:列的文本名称。如果列名称含有嵌入的空格,则必须放在双引号中。
·Type:数据类型,可以是以下类型。MicrosoftJet数据类型:Bit、Byte、Short、Long、Currencv、Single、Double、DateTime、Text;MemoODBC数据类型:Char(与Text相同)、Float(与Double相同)、Integer(与Short相同)、LongChar(与Memo相同)、Datedateformat。
·Width:字符串值Width,指出指定的列的宽度(对于字符分界文件是可选的,而对于定长文件是必需的)。
·#:是一个整型数,用来指定列的宽度(如果指定了Width,则必须加代表列宽的整数)。
例子:
Col1=CustomerNumberTextWidth10
Col2=CustomerNameTextWidth30
该例给出了方案描述信息文件中与两个字段对应的项,这两个字段分别是:10个字符的CustomerNumber文本字段和30个字符的CustomerName文本字段。
4.选择字符集
可以使用的字符集有两种,即ANSI和OEM,可以从中选择一种,通过CharacterSet设置。例如:CharacterSet=ANSI把字符集设置为ANSI。如果选择OEM字符集,则方案描述信息文件的CharacterSet设置值覆盖了Windows注量表中每个文件的相应设置值。
->