access数据库可以保存图片吗(用Access数据库管理人员表)

首页常识access数据库可以保存图片吗更新时间:2023-05-05 20:45:26

Excel和Access是互补关系。作为微软Office大礼包里的两员大将,Access的表和Excel的表在特定格式下可以通用,但是二者对数据的处理分析的方法有所不同,用Access储存和管理数据还是有很多优点的。

本案例以一张Excel人员表为原材料,将这张表移植到Access里进行加工,展现一下Access强大的窗体查询功能。

第1章 效果展示

本案例的数据来源是一张Excel做成的人员表表,要将其导入Access里,并进行定向查询和窗体展示,最终形成了一个查询窗体界面,窗体界面分为5个部分:

3个筛选控件(列表框);

2个输出子窗体。

3个列表框是查询条件,2个子窗体是输出结果。操作演示如下:

最终效果动画图

用Access数据库管理数据表有很多优点:

  1. 表里的信息不变

用Excel来管理的话,稍微一加工,原始数据很容易被污染,而Access里表和查询是分开的,完全不用担心这个问题。

  1. 查询简便直观

对表进行各种归类和查询,体现了Access灵活方便、便于展示的特点。Excel的查询就没有Access数据库简便,当然数据透视表也是不错的选择,Excel和Access各有千秋。

第2章 制作过程

在这张人员表基础上增加查询和显示界面,一共分为5个步骤:1准备表;2制作窗体;3控件数据注入;4查询设计;5自动化设计。

下面我详细讲一下制作过程:

1.准备表。

下面我们来准备一张人员表,这张表是Excel和Access通用的,但是也要注意,本案例的人员表里必须严格遵循数据库格式,表的第一行必须是字段名称。

这张表的字段包括:ID、姓名、性别、角色阵营、个人简历、头像图片。

Excel的表和Access通用,就是不能放图片附件

需要注意的是,头像图片在Access数据库里以附件的形式存在,在Excel里保存图片恐怕不是很简单。这也是Access比Excel的优点所在。

表是数据库的基础,数据库所有的操作都围绕表来进行。

2.制作窗体

我们在最终效果展示里,已经演示了窗体里的各项元素分布,3个筛选控件全部都是列表框(英文listbox)。

在窗体的设计视图里,在控件栏里找到列表框,用鼠标点住不放,拉到窗体里就生成了。

子窗体的生成方法有两种,一种是直接把表拉到窗体的设计视图里,一放开鼠标,自动生成了一个子窗体。

另一种方法是先制作一个查询,再把查询拉入窗体视图里生成子窗体。两种方法略有不同,各有利弊,本教程采用第一种方法,直接用表生成子窗体。

生成控件和子窗体之后,要对控件进行必要的美化和编号,便于未来的操作。

比如将筛选控件“角色阵营”列表框命名为“list1”,“性别”命名为“list2”,“姓名”命名为“list3”。

根据展示需要,“表1 子窗体”在“属性表”里将“默认视图”设置为“数据表”。

“表1 子窗体1”在“属性表”里将“默认窗体”设置为“单个窗体”。

3.控件数据注入

现在3个筛选控件里还没有数据,是一片空白,我们要向里面注入数据。

3个list控件的数据源都是同一张表1。

主窗体进入设计视图,选择list1“角色阵营”,点击“属性表”-“数据”-“行来源”的三个点,会进入“查询生成器”。

首先鼠标点击一下下面的字段,把“属性表”-“唯一值”选择“是”,如果不选择是,list里的数据会大量重复。

然后把“表1”拉进“查询生成器”,把查询生成器里的“角色阵营”字段拉进下面的查询字段里。保存一下。

再进入主窗体,角色阵营里已经有数据了,分别是正面和反面。

按照相同的步骤,将list2“性别”和list3“姓名”注入相应的数据字段。

需要注意的是,list3“姓名”字段是受到前两个控件的控制的,也就是说我们选择“角色阵营”和“性别”的时候,list3是被筛选的。具体步骤我们马上讲解。

4.查询设计

这个部分是本案例的重点和难点,查询功能是Access的优势功能,Excel里没有对应的功能。

我们来逐一对控件进行查询和自动化设计。

上个章节我们讲到,list3“姓名”字段受到list1和list2的控制,具体是怎么被控制的呢?

我们点击list3-“属性表”-“数据”-“行来源”点击三个点,进入“查询生成器”,把“角色阵营”和“性别”字段也拉到下方的查询字段里。

在“角色阵营”的“条件”里输入下面的SQL代码:

Like [Form]![人员台账]![List1] &”*”

这行代码的含义是,“姓名”字段有筛选条件“角色阵营”,这个“角色阵营”在窗体“人员台账”的“list1”控件里,下同。

在“性别”的“条件”里输入下面的SQL代码:

Like [Form]![人员台账]![List2] &”*”

“表1 子窗体”和“表1 子窗体1”两个是嵌入主窗体里的子窗体,他们的筛选条件略有不同。

“表1 子窗体”受list1和list2控制。

“表1 子窗体1”受list1、list2和list3控制。

查询方法和list3基本类似,但也有不同,子窗体的数据源里,必须把表里的所有字段都拉到查询条件里,不能遗漏,因为子窗体要展示所有这些字段的数据。

具体的查询方法,请大家参考list3“姓名”的查询方法,自己试试如何解决。

5.自动化设计

查询设计完毕,要进行的是VBA编程设计,主要目的是要让窗体进行自动化查询,点击控件会自动进行窗体结果生成。这也是窗体设计的最后一步。

有两种解决思路,一种是“全部刷新”,在所有的控件里,都设置成单击就“全部刷新”所有的控件。

另一种是“部分刷新”,顾名思义“部分刷新”只刷新相关的控件。

“部分刷新”代码如下:

Option Compare Database Private Sub List1_Click() List2 = Null List3 = Null List3.Requery 表1_子窗体.Requery 表1_子窗体1.Requery End Sub Private Sub List2_Click() List3.Requery 表1_子窗体.Requery 表1_子窗体1.Requery End Sub Private Sub List3_Click() 表1_子窗体1.Requery End Sub Private Sub 主体_Click() List1 = Null List2 = Null List3 = Null 表1_子窗体.Requery 表1_子窗体1.Requery End Sub

如果初学者可以简单的用“全部刷新”即可。

这部分代码涉及到一些逻辑,比如点击list为什么先会清空list2?留给大家来思考~

,
推荐内容
热门内容