VB数据库基本操作 |
|
www.nanhushi.com 佚名 不详 |
程序分为一个表单cfanvb.frm,一个模块cfanvb.bas。一个表单程序。程序的表单中有五个命令按钮,从上到下分别命名为Cmdnew、 Cmdsave,Cmdtxt、cmdlookfor、Cmdexit,标题分别为&New、&Save、&Txt、& Lookfor、&Exit;还有三个文本框,名称分别为Textname、Textage、Textsex;还有三个标签。 程序的功能 功能1:能存储你所输入的每一条完整记录,并创造数据库文件nas.db。 功能2:能按输入的姓名字段查找记录并显示。 功能3:将所有记录按NAME字段排序制成文本文件nas.txt,以便打印、修改。 程序运行情况 先后输入八条记录,name字段分别为李继华、朱茵、小巩、朱朱、李丽丽、黄庆、Tom、Kate,并一一存储(按Save按钮,存储第一条记录前,Txt 按钮为灰色,即不可激活态);点击【Txt】按钮,会出现【文本已经建好】提示框(文本的各项是按姓名顺序排列的,name分别为Kate、Tom、小巩、朱朱、朱茵、李丽丽、李继华、黄庆);在Textname文本框中输入上面任一姓名,点击【Lookfor】按钮即可得到其他的字段(年龄、性别)情况,如果不为此八人,则显示【not find】提示框。此程序运行后可以建立一个名为Nas.db的数据库文件和一个名为Nas.txt的文本文件。 Cfanvb.bas模块代码为: Type nas ’定义记录类型 name As String * 6 ’姓名 age As String * 3 ’年龄 sex As String * 4 ’性别 End Type Type nasindex ’定义另一记录类型 name As String * 6 ’姓名 number As Integer ’记录号 End Tyep Public among As nas ’定义公共变量 public index() As nasindex ’定义枚举索引数组 Public totalnum As Integer ’定义总记录数 cfanvb.frm表单的代码为: Option Explicit ’强制变量必须进行正规声明 Const nasdb="\nas.db" ’定义常量数据库文件名 Const nastxt="\nas.txt" ’定义文本文件名 Function search(findtxt) As Integer ’Function过程,寻找某一姓名findtxt,得出记录号search Dim front As Integer ’定义变量 Dim behind As Integer Dim findnum As Integer Dim middle As Integer
front=1 behind = totalnum ’定义初始值 findnum = 0 Do While front <= behind And findnum = 0 middle = (front + behind)\2 ’用二分法查找 If findtxt = Rtrim(index(middle).name) Then ’找到此记录 findnum = middle ElseIf findtxt > index(middle).name Then front=middle + 1 ’要找的记录在middle之后 Else behind = middle - 1 ’要找的记录在middle之前 End If Loop search=findnum ’如找到,则找到的记录号为search;否则,search为0 End Function Sub createindex() ’为所有记录建立索引 Dim I As Integer, change As nasindex, j As Integer For I = I To totalnum Get #1,I,among ’读出第I条记录 index(I).name=among.name ’此记录的name字段赋予索引I的name字段 index(I).number = I ’记录号赋予索引I的number字段 Next I For I =l to totalnum -1 For j=I +1 To totalnum If index(I).name > index(j).name Then change = index(I) index(I)=index(j) index(j)=change End If Next j Next I ’对索引数组排序,使index(I).name Fnd Sub Private Sub Cmdexit_Click() Close #1 ’关闭文件1 End ’结束 End Sub Private Sub Cmdlookfor_Click() ’查找 Dim which As Integer Dim findit As Integer which = search(textname.Text) ’调用search() If which > 0 Then ’which > 0 表明查找到 findit = index(which).number Get #1, findit,among ’由记录号读出记录 with among textname =.name ’将此记录的各字段显示于文本框 Textage =.age Textsex =.sex End With Else MsgBox "can’t find it" , 48,"lookfor" ’否则没找到提示信息 End If End Sub Private Sub cmdnew_Click() ’所有文本框清空 textname ="" Textage = "" Textsex ="" textname.SetFocus ’textname文本框得到输入焦点 End Sub Private Sub Cmdsave_Click() totalnum = totalnum + 1 ’记录数加1 If totalnum > 0 Then Cmdtxt.Enabled = True ’使Cmdtxt按钮由灰色变成可激活 With among ’将各文本框内容存于记录 .name=textname.text .age=Textage.Text .sex = Textsex.Text End With
Put #1,totalnum,among ’将记录加入#1 ReDim index(totalnum) ’重新定义枚举数组 createindex ’调用过程重新建立索引 textname ="" ’清空文本框,激活textname Textage = "" Textsex ="" textname.SetFocus End Sub Ptivate Sub Cmdtxt_Click() ’建立文本文件 Dim I Dim message1 As String, message2 As String Open nastxt For Output As #2 ’打开文本,接受输出 For I=1 To totalnum Get #1, index(I).number,among ’读记录 With among Print #2," "; Ucase(Trim.(.name)) Print #2,"age: "; .age ’用Print语句建立文本 Print #2, "sex: "; .sex End With Next I Close #2 ’关闭文本文件 textname.SetFocus message1="文本nas.txt已经建好" message2 ="file" MsgBox$ message1, 64, message2 ’显示文本已建好对话框 End Sub Private Sub Form_Load() ’程序运行装人表单时的事件 Open nasdb For Random As #1 ’打开数据库 Len = Len(among) totalnun = LOF(1)/ Len(among) ’计算记录数 If totalnum > 0 Then ReDim index(totalnum) ’定义枚举索引数组 createindex ’建立索引 Else Cmdtxt.Enabled = False ’禁止Cmdtxt按钮 End If End Sub 我们通过以上程序,可以得出哪些启示呢? 1.文件可分为文本文件(一般为顺序存取格式,本程序为cfanvb.txt)和随机存取文件(本程序为cfan vb.db)。 2.随机存取文件由一些固定长度的记录组成,建立好索引后,能在不读入其他记录的情况下,直接跳到某一记录。 3.在文本文件中使用的语句: (1)Open filename For output(append) As #numberoutput:创建一个新文件并准备写入数据; append:打开一个已存在的文件并准备写入数据于文件的结尾。 (2)Print #number,[data1;data2;data3...] 它可将一个或多个没有分隔的字符串输出到指定文件#filenumber, “print #filename,”表示输出一空行。 (3)Write #number,data1,data2,data3... 它可将一行数据写入一个已经打开的文件,并提供“,”作间隔。 (4)Open filename For Input As #number 它为读数据而打开一个文件。 4.随机存取文件常用语句: (1)Open filename For Random As #number Len=recordlength 以随机方式打开一既可以读又可以写的文件,其中recordlength为文件记录的字节数。 (2)Put #number,recordnumber,record(写入) Get #number,recordnumber,record(读出) 其中,#number文件已经打开,"recordnumber指明要写入(或读出)的位置,record指那条记录。 本文介绍了处理数据的一些传统方法和基本知识,根据本程序的思路,你可制作出自己喜欢的小程序。
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: VB数据库数据的选项录入及增减与编辑之四 下一篇文章: 计算机等级考试释疑VB应试心得 |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|