大家好,我们今日继续讲解VBA代码解决方案的第134讲内容:随机文件的特点及如何用自定义数据类型访问随机文件。当某文件包含结构数据时,就可以以随机模式打开它。以随机模式打开文件你可以做到:同时读写、快速访问某特别记录。
随机文件有什么特点呢?原来,在随机文件里,所有记录都是等长度的,并且每条记录都有相同数目的固定大小区域。区域的长度必须在文件写入数据之前就确定。如果写入某区域的字符串长度小于该区域的大小,那么VBA就会自动在该字符串后面加空格来填充区域。如果写入的文本比区域长度长的话,超出的字符就不会被写入。说到这里,你是不是看到了数据库的影子呢?数据库就是这样,有很多朋友问到数据库的相关问题,在这套“VBA代码解决方案”中虽然会有所涉及,但不会很多,在之后,会专门出一本关于数据库的书。
再次归纳一下,随机文件是指储存的记录可以随机访问的文件,这意味着随机文件里的任何记录都可以读取,而不必读取它之前的每条记录。这是同顺序文件的最为显著的区别。
为什么要自定义一种数据类型呢?因为在操作随机文件时经常会用到这类自定义的数据类型,或者说你在建立数据库时会事先定义数据的类型,当你再次访问这类数据时要定义一个与之匹配的变量与数据类型相一致为好。
在VBA中,允许你在模块的上面使用Type…End Type语句定义一个非标准的数据类型。这种非标准数据类型也经常成为用户自定义的数据类型。用户自定义数据类型可以包括各种数据类型(字符串,整型,日期等等)的内容。当你在使用随机访问的文件时,该变量使你可以轻易地访问个别记录。
下面我们将实例说明一下如何自定义一个数据类型:
Option Explicit
Type MyDictionary
myen As String * 10
mysp As String * 20
End Type
Sub Mytype()
Dim myrecord As MyDictionary '声明一个MyDictionary类型的变量
myrecord.myen = InputBox("请输入一个数据", "记录信息")
myrecord.mysp = InputBox("请输入另一个数据", "记录信息")
MsgBox "数据1:" & myrecord.myen & vbLf & "数据2:" & myrecord.mysp, vbOKOnly, "基本信息"
MsgBox "数据1的长度:" & Len(myrecord.myen) & vbLf & "数据2的长度:" & Len(myrecord.mysp), vbOKOnly, "基本信息"
End Sub
代码截图:
上面的例子中,用户定义的名为MyDictionary的类型包括两个声明为String(字符串)的项目,并且有特定的大小。成员myen可以接受最多10个字符,第二个项目mysp的大小不能超过20个字符。
在运行过程中,要求输入两个字符,然后用对话框显示你的输入,最后为了验证字符的长度,再次显示一下你录入字符的长度。下面我们看一下运行的结果:
上面的对话框显然是超过了10个字符。第二个对话框:
这次我录入的字符是小于20个字符的数据。
我们看弹出的结果:
可以看出数据1被截取了,再看长度:
数据1的长度是10,数据2的长度是20,和我们的定义是完全一致的。这就是自定义数据的神奇之处。
今日内容回向:
1 什么是自定义数据?
2 什么是随机文件?谈到随机文件,你会想到什么常用文件呢?