大家好,我们今日继续讲解VBA代码解决方案的第135讲内容:随机文件的应用,建立一个准数据库的随机文件。VBA到这里文件的讲解进入一个十分精华的部分,我要通过这几讲的内容让大家看到一个实际的准数据库的操作。今天就讲如何建立一个类似于数据的随机文件。我们先来看看第127讲讲过的内容:要从一个文件读取数据,必须先使用Open语句打开该文件。
语法:Open pathname For mode [Access access][lock] As [#]filenumber [Len=reclength]
其中共有6个参数:
① Pathname是你要打开的文件名称,可以包括驱动器和文件夹名称
② Mode是个决定文件如何打开的关键字。顺序文件可以以下列模式之一来打开:Input, Output 或Append。使用Input读文件,Output写文件,将覆盖任何存在的文件,以及Append来写入文件,同时附加上任何已经存在的信息。
③ Access是决定决定文件读写的关键字,Access可以是:Shared(共享),Lock Read(锁定读),Lock Write(锁定写)或Lock Read Write(锁定读写)。
④ Lock决定了哪些文件的操作是允许其它过程进行的。例如,Read, Write 或者 Read Write。
⑤ Filenumber是从1到511的数字,该数字用来指向顺序操作中的文件。一个唯一的文件号码。
⑥ reclength明确顺序文件里总字符数,或者是随机文件里记录大小。
我们来看这六个参数中的第6个参数指出,如果是随机文件要以记录的大小打开此文件,这一点要特别注意。
我们先看下面的代码截图:
我们看下面的代码:
Option Explicit
Type MyDictionary
myen As String * 10
mysp As String * 20
End Type
Sub MytypeDictionary()
Dim d As MyDictionary
Dim RecNr As Long
Dim myrecord As String
Dim totalRec As Long
RecNr = 1
Open "E:\nz\work\文章\MytypeDictionary.txt" For Random As #1 Len = Len(d) '打开文件作随机访问
Do
myrecord = InputBox("Enter an type word", "我的型号字典")
d.myen = myrecord
If myrecord = "" Then Exit Do '如取消则退出循环
myrecord = InputBox("Enter the describe for " _
& d.myen, ":")
If myrecord = "" Then Exit Do
d.mysp = myrecord
Put #1, RecNr, d ' 写入记录
RecNr = RecNr + 1 ' 计数器增加
Loop Until myrecord = "" '询问型号直到取消
totalRec = LOF(1) / Len(d)
MsgBox "文件共有 " & totalRec & "条记录."
Close #1 ' 关闭文件
End Sub
在上述过程中要建立一个我自己的型号字典的小型数据,只不过这个数据库是TXT的,
过程MytypeDictionary开始时,声明四个变量,变量d声明为用户定义的类型myDictionary。该类型在前面就用Type语句声明了。在给变量RecNr赋予了初始值之后,VBA打开文件E:\nz\work\文章\MytypeDictionary.txt,并且将其作为文件编码1随机访问。指令Len(d)告诉VB每条记录的大小为10+20=30个字符。
接下来VB执行Do…Until循环里面的语句,直到你取消。循环里的第一条语句提示你输入一个type,并且将其赋予变量myrecord,然后该值被传递给用户定义d的第一个成员(d.myen)。
一旦你停止输入数据,VB就会退出Do循环,并且执行程序里的最后的语句计算和显示文件里的记录总数。最后一条语句将文件关闭。如果你输入了type并点击确定,那么下个对话框就会提示你输入对type的描述语。当然,如果你决定现在就退出的话,VB就会跳出循环并且继续剩下的语句。如果一切正常,你输入了type的描述语,那么VB就会将它赋予变量myrecord并且传递给用户自定义变量d的第二个成员(d.mysp),接下来,VB使用下述语句将整条记录写入到文件里:
Put #1, recNr, d
写入第一条记录后,VB会给记录计数器增加1,然后重复循环里的语句。过程MytypeDictionary允许你在你的字典里输入任意多条记录。当你退出提出词语时,过程使用LOF和Len函数来计算文件里的总记录数。VB在显示信息后关闭该文本文件。
创建随机文件仅仅是个开始,接下来的下一讲中我们将讲解如何使用一个开启的随机文件的 记录。
下面我们看看运行的结果:
同理我们再录入:"机械2" 和"设备2上用的B类设备"
这时我们的数据库会是什么样子呢?打开文件吧:
今日内容回向:
1 随机文件的打开和顺序文件的打开有什么不同?
2 随机文件如何写入数据?