走进VB6啃一块骨头

2016-02-19 12:29 4 1 收藏

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的走进VB6啃一块骨头教程,一起来看看吧!超容易上手~

【 tulaoshi.com - 编程语言 】

我们在玩《仙剑奇侠传》时,要是不能保存数据,那么非得挑灯夜战三昼夜才能玩完,可见数据存储之重
  要性。爱好编程的CFAN是不会放过数据文件的,下面跟着我驰骋吧!我们先吃一个哈密瓜,开门即来编一传统的比较有代表性的程序,不可不看的哟!
  程序分为一个表单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按钮为灰色,即不可激活态);点击按钮,会出现提示框(文本的各项是按姓名顺序排列的,name分别为Kate、Tom、小巩、朱朱、朱茵、李丽丽、李继华、黄庆);在Textname文本框中输入上面任一姓名,点击按钮即可得到其他的字段(年龄、性别)情况,如果不为此八人,则显示提示框。此程序运行后可以建立一个名为Nas.db的数据库文件和一个名为Nas.txt的文本文件。
  
  Cfanvb.bas模块代码为:
  Typenas'定义记录类型
  nameAsString*6'姓名
  ageAsString*3'年龄
  sexAsString*4'性别
  EndType
  Typenasindex'定义另一记录类型
  nameAsString*6'姓名
  numberAsInteger'记录号
  EndTyep
  PublicamongAsnas'定义公共变量
  publicindex()Asnasindex'定义枚举索引数组
  PublictotalnumAsInteger'定义总记录数
  
  cfanvb.frm表单的代码为:
  OptionExplicit'强制变量必须进行正规声明
  Constnasdb="as.db"'定义常量数据库文件名
  Constnastxt="as.txt"'定义文本文件名
  Functionsearch(findtxt)AsInteger'Function过程,寻找某一姓名findtxt,得出记录号search
  DimfrontAsInteger'定义变量
  DimbehindAsInteger
  DimfindnumAsInteger
  DimmiddleAsInteger
  front=1
  behind=totalnum'定义初始值
  findnum=0
  DoWhilefront=behindAndfindnum=0
  middle=(front behind)2'用二分法查找
  Iffindtxt=Rtrim(index(middle).name)Then'找到此记录
  findnum=middle
  ElseIffindtxtindex(middle).nameThen
  front=middle 1'要找的记录在middle之后
  Else
  behind=middle-1'要找的记录在middle之前
  EndIf
  Loop
  search=findnum'如找到,则找到的记录号为search;否则,search为0
  EndFunction
  Subcreateindex()'为所有记录建立索引
  DimIAsInteger,changeAsnasindex,jAsInteger
  ForI=ITototalnum
  Get#1,I,among'读出第I条记录
  index(I).name=among.name'此记录的name字段赋予索引I的name字段
  index(I).number=I'记录号赋予索引I的number字段
  NextI
  ForI=ltototalnum-1
  Forj=I 1Tototalnum
  Ifindex(I).nameindex(j).nameThen
  change=index(I)
  index(I)=index(j)
  index(j)=change
  EndIf
  Nextj
  NextI'对索引数组排序,使index(I).nameFndSub
  PrivateSubCmdexit_Click()
  Close#1'关闭文件1
  End'结束
  EndSub
  PrivateSubCmdlookfor_Click()'查找
  DimwhichAsInteger
  DimfinditAsInteger
  which=search(textname.Text)'调用search()
  Ifwhich0Then'which0表明查找到
  findit=index(which).number
  Get#1,findit,among'由记录号读出记录
  withamong
  textname=.name'将此记录的各字段显示于文本框
  Textage=.age
  Textsex=.sex
  EndWith
  Else
  MsgBox"can'tfindit",48,"lookfor"'否则没找到提示信息
  EndIf
  EndSub
  PrivateSubcmdnew_Click()'所有文本框清空
  textname=""
  Textage=""
  Textsex=""
  textname.SetFocus'textname文本框得到输入焦点
  EndSub
  PrivateSubCmdsave_Click()
  totalnum=totalnum 1'记录数加1
  Iftotalnum0ThenCmdtxt.Enabled=True'使Cmdtxt按钮由灰色变成可激活
  Withamong'将各文本框内容存于记录
  .name=textname.text
  .age=Textage.Text
  .sex=Textsex.Text
  EndWith
  Put#1,totalnum,among'将记录加入#1
  ReDimindex(totalnum)'重新定义枚举数组
  createindex'调用过程重新建立索引
  textname=""'清空文本框,激活textname
  Textage=""
  Textsex=""
  textname.SetFocus
  EndSub
  PtivateSubCmdtxt_Click()'建立文本文件
  DimI
  Dimmessage1AsString,message2AsString
  OpennastxtForOutputAs#2'打开文本,接受输出
  ForI=1Tototalnum
  Get#1,index(I).number,among'读记录
  Withamong
  Print#2,"";Ucase(Trim.(.name))
  Print#2,"age:";.age'用Print语句建立文本
  Print#2,"sex:";.sex
  EndWith
  NextI
  Close#2'关闭文本文件
  textname.SetFocus
  message1="文本nas.txt已经建好"
  message2="file"
  MsgBox$message1,64,message2'显示文本已建好对话框
  EndSub
  PrivateSubForm_Load()'程序运行装人表单时的事件
  OpennasdbForRandomAs#1'打开数据库
  Len=Len(among)
  totalnun=LOF(1)/Len(among)'计算记录数
  Iftotalnum0Then
  ReDimindex(totalnum)'定义枚举索引数组
  createindex'建立索引
  Else
  Cmdtxt.Enabled=False'禁止Cmdtxt按钮
  EndIf
  EndSub
  我们通过以上程序,可以得出哪些启示呢?
  1.文件可分为文本文件(一般为顺序存取格式,本程序为cfanvb.txt)和随机存取文件(本程序为cfan
  vb.db)。
  2.随机存取文件由一些固定长度的记录组成,建立好索引后,能在不读入其他记录的情况下,直接跳到某一记录。
  3.在文本文件中使用的语句:
  (1)OpenfilenameForoutput(append)As#numberoutput:创建一个新文件并准备写入数据;
  append:打开一个已存在的文件并准备写入数据于文件的结尾。
  (2)Print#number,[data1;data2;data3...]
  它可将一个或多个没有分隔的字符串输出到指定文件#filenumber,“print#filename,”表示输出一空行。
  (3)Write#number,data1,data2,data3...
  它可将一行数据写入一个已经打开的文件,并提供“,”作间隔。
  (4)OpenfilenameForInputAs#number
  它为读数据而打开一个文件。
  4.随机存取文件常用语句:
  (1)OpenfilenameForRandomAs#numberLen=recordlength
  以随机方式打开一既可以读又可以写的文件,其中recordlength为文件记录的字节数。
  (2)Put#number,recordnumber,record(写入)
  Get#number,recordnumber,record(读出)
  其中,#number文件已经打开,"recordnumber指明要写入(或读出)的位置,record指那条记录。
  本文介绍了处理数据的一些传统方法和基本知识,根据本程序的思路,你可制作出自己喜欢的小程序。其实VB6还有更简单的处理数据的方法,留待以后介绍。希望我烧的骨头汤能适合大家口味。->

来源:http://www.tulaoshi.com/n/20160219/1601030.html

延伸阅读
窗体的Initialize事件------窗体的Load事件------窗体的Activate事件------窗体的QueryUnload事件------窗体的Unload事件 可以新建一个VB窗体,在窗体中写下面代码测试: Private Sub Form_Activate() MsgBox "窗体的Activate事件" End Sub Private Sub Form_Initialize() MsgBox "窗体的Initialize事件" End Sub Private Sub Form_Load() ...
  和.Net 中不同,VB6 中默认是使用 ByRef 来传递参数了,看来似乎没有什么可以优化得地方。 可是,实际上 如果你调用 API 得话,从 API浏览器复制下来得代码却是 强制使用 ByVal 传参得 这就给了我们优化得机会。 我又重新使用该代码 分别测试了一下 ByRef ,ByVal 得区别,结果很振奋: ByRef 比 ByVal 提高了16倍 代码如下,插入Comb...
鸡蛋不能与哪些食物一起吃 鸡蛋的好处 1.延缓衰老。鸡蛋含有人体几乎所有需要的营养物质,故被人们称做“理想的营养库”。营养学家称之为“完全蛋白质模式”,是不少长寿者的延年经验之一。 2.保护肝脏。鸡蛋中的蛋白质对肝脏组织损伤有修复作用。蛋黄中的卵磷脂可促进肝细胞的再生,还可提高人体血浆蛋白...
标签: 怀孕
孕期什么事情都有可能会发生,一块没过保质期的面包也会引发一场早产风波。这是怎么回事呢? 怀孕8个月的妻子身体不适,到医院检查医生说可能是食物中毒所致,回家一看发现从超市买来给妻子吃的面包有的已经发霉变质了。保质期内的面包竟然发霉变质,这让市民丛先生很是不解。 丛先生介绍说,9月21(www.tulaoshi.com)日他和妻子从历下大润...
标签: ASP
  最近在单位做的一个项目里需要有文件上传的功能,正好手头一本书的附赠光盘里有一个上传组件,心中大喜。可惜随之便发现这是一个试用版,不给钱就只能用50次,太小气了!!好在头头催得不紧,时间充裕,干脆自己试着做一个,既可长经验值,又能长成就感,不试白不试!以下介绍的便是俺折腾了两天半捣鼓出来的一个只能说是雏形的玩意,区...

经验教程

40

收藏

89
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部