今天讲一下用Access制作成语词典的详细过程。
制作成语词典还是比较简单的,总体技术难度不大,相对较难的是模糊查询技术。
通过设计成语词典,可以非常快的领会Access数据库查询技术的设计精髓。
设计成语词典大体上分为以下四个步骤:
一、数据准备
二、需求设计
三、窗体设计
四、SQL设计
五、VBA设计
第1步,数据准备。
准备一张成语词典的表,表里至少要准备两个字段,成语和成语解释,其他字段可适量酌情添加。
如果是Excel格式的表,需要导入Access里。
第2步,确定需求。
首先这个软件只能是单机版软件,然后有两个查询能力,一个是列表框查询,在一个长长的下拉菜单框里直接点击查询,一个是模糊查询。
当然老铁们可以根据自己的需要,进行需求的设计,不一定只采用这两个查询。
第3步,窗体设计。
本示例的成语词典只需要两个窗体(一个主窗体一个子窗体)和一张表就能完成,开发的逻辑相当简单。
1.设计页眉和页脚。
进入窗体的设计视图,鼠标右键点击“主体”,选择“页眉和页脚”。用控件里的“标签”写上题目。
只保留页眉即可,页眉的主要作用是写标题和开发版本等信息,主要起美化作用,不能轻易省略。
2.插入文本框(模糊窗体需要文本框),命名为“Text1”,然后是列表框。
进入窗体设计视图,找到“控件”,选择列表框拉到窗体里,命名为List1。
文本框和列表框的主要作用是筛选数据,跟Excel数据透视表的切片器功能类似。只不过Access的控件功能更强悍一些。
3.插入子窗体。
直接来到导航栏,用鼠标左键点住表,拖到右边的窗体设计视图里,一松鼠标,自动生成一个子窗体。
这个子窗体的作用是显示筛选结果,因为这是一个电子词典,这个子窗体起到的作用是一个页面的作用。
子窗体的默认视图,不出意料应当是数据表视图。我们需要将其更改为“单个窗体”。需要进入子窗体的设计视图,在右面的属性表里找到默认视图选项,选上就好了。
页眉、1个文本框、1个列表框、1个子窗体,这就是这个电子成语词典所有的窗体元素,前文提到了,页眉只是装饰。起到实际作用的其实是后三项。
现在我们要做的是在文本框Text1里输入某个汉字,列表框List1显示含有这个汉字的所有结果,然后在列表框里点选,后在子窗体里显示终的查询结果。
所以下面就是本软件的核心:
第4步,SQL设计。
文本框Text1的使用方法是直接输入汉字,因此不用做SQL。
列表框List1的学问就比较大了,首先列表框里要涵盖所有的成语名称,其次列表框List1里的这些成语名称要受到Text1里输入的限制,第三点击List1的话,子窗体也要跟着变化。
我们一步一步来。
先往列表框List1里注入所有的成语名称,我们在设计视图里点选List1,在右面的属性表里选择“数据”标签,进入一个叫数据源的行,点选“行来源”,然后窗体弹出一个新界面,叫做“查询生成器”。
这个查询生成器是个好东西,它本质上是一个SQL语句的代言人,把抽象的东西形象化了,有了它,我们不用笨拙的死记硬背SQL语言(说真的SQL挺难的,直接写我不怎么会),可以说Access数据库把SQL语言变简单了。
这也能解释为什么学习Access可以练习SQL语言。
书归正传,在查询生成器里,我们需要选中的一张数据表,因为这张表是我们这个词典的一张表,所以肯定不会搞错。在这张表里,用鼠标选中“成语名称”字段,拉到下面的字段中,我们就把所有的成语名称注入到列表框List1里了。
别忘了保存后再关闭。
现在我们可以看到列表框List1里有了丰富的内容,但是还没有做到接受文本框的指令,因此还需要我们回到查询生成器里,在“成语名称”字段中下面有一个“条件”行,在条件行里输入这样一行SQL:
like “*”&[Forms][成语词典][Text1]&“*”
这行SQL语句的意思是,成语名称来自于文本框text1,前后两个*包裹起来,意味着这是个关键词查询,也叫做模糊查询。
模糊查询很强大也很好用,语句也很容易理解,以后我会另开一个文章讲这个技术。不过通过设计成语词典就能掌握这个技术,也很不错不是吗。
做到这里,我们已经基本搞定了列表框List1。
下面我们来搞定子窗体的筛选问题。这是SQL设计的后一步。
进入子窗体的设计视图,注意不是主窗体,还是进入右边的属性表,进入“数据”,选择“行来源”,再次进入一个新的查询生成器,选择的表还是那张表,这次要把所有字段都拉到下面的字段列表里。
然后在成语名称字段下方,条件行里,输入以下SQL语句。
like [Forms][成语词典][List1]&“*”
这行语句的含义是子窗体的数据,来自于列表框List1里的筛选结果。注意后面的*小尾巴不能省略哟~
至此这个成语词典的SQL设计完成。难也是核心的部分完成了。
第5步,VBA设计。
VBA是Access的必要组成部分,没有VBA的Access窗体是不完整的。但在我的理论里,VBA的使用应当局限在控制和刷新,我个人不建议用VBA定义变量,尤其是Access新手,不建议上来就这么干。学Access不是学编程。
成语词典的VBA语句重点是Me.Refresh,有两个控件需要刷新。
我们进入主窗体界面,进入设计视图,选择文本框Text1,进入“属性表”,选择“事件”,点击“单击”,进入VBE界面,这时候我们看到一个Sub,把Me.Refresh刷新指令输入进去。
我们回到主窗体,在Text1里输入随便一个字,输入完后点击一下,看看是不是底下的列表框List1也跟着变化了?
按照相同的步骤,在列表框List1里也插入刷新指令,老铁们自己动手做一下。
用Access数据库设计成语词典的技术分享就到这里啦~
来源 https://zhuanlan.zhihu.com/p/363034443