一个完整的Access数据库应用实例教程
Access数据库应用实例的核心在于将抽象的表结构、查询逻辑与真实业务场景结合,掌握一个典型客户管理系统的搭建流程,就能举一反三解决库存、订单等常见数据管理需求。 本文以一家小型电商公司的销售跟踪系统为原型,逐步拆解表设计、关系建立、查询优化及窗体报表的制作方法,所有步骤均可直接上手验证。
Access数据库应用实例教程:销售跟踪系统表结构设计
任何数据库实例的第一步都是明确业务需求,假设我们需要管理客户信息、产品目录、销售订单和订单明细,行业共识是,一个规范化的Access数据库至少需要4张基础表。
客户表(tbl_Customers)字段与数据类型
- 客户ID(自动编号,主键)
- 公司名称(短文本,必填)
- 联系人姓名(短文本)
- 联系电话(短文本,格式掩码:(999) 000-0000)
- 电子邮件(超链接类型)
- 首次购买日期(日期/时间,默认值=Date())
产品表(tbl_Products)字段设计要点
- 产品ID(自动编号,主键)
- 产品名称(短文本,必填,唯一索引)
- 类别(短文本,查阅向导从另一张类别表获取)
- 单价(货币类型,有效性规则:>0)
- 库存数量(数字,整型)
提示: 使用查阅向导字段可以节省前端验证代码量,这是Access数据库应用实例教程中常被忽略的优化点。
订单表(tbl_Orders)与订单明细表(tbl_OrderDetails)
| 字段 | 订单表 | 订单明细表 |
|---|---|---|
| 主键 | 订单ID(自动编号) | 明细ID(自动编号) |
| 外键 | 客户ID(数字,对应客户表) | 订单ID(数字,对应订单表) |
外键 | 无 | 产品ID(数字,对应产品表) |
| 业务字段 | 订单日期(日期/时间)、付款状态(是/否) | 数量(数字)、折扣(货币) |
关系建立操作路径:
- 打开“数据库工具”选项卡 → “关系”按钮
- 将四张表添加至关系视图
- 拖拽tbl_Customers的客户ID至tbl_Orders的客户ID
- 勾选“实施参照完整性”和“级联更新相关字段”
- 重复操作连接tbl_Orders.订单ID → tbl_OrderDetails.订单ID 以及 tbl_Products.产品ID → tbl_OrderDetails.产品ID
参照完整性确保不会出现孤儿记录,这是Access数据库应用实例中保证数据一致性最核心的设置。
Access数据库实例代码分享:常用查询与VBA自动化
很多初学者在完成表设计后就卡住了,因为不知道如何用查询提取业务价值,下面分享几个真实可用的Access数据库实例代码,直接复制粘贴即可测试。
接单统计查询(SQL代码)
SELECT tbl_Customers.公司名称, Count(tbl_Orders.订单ID) AS 订单数量, Sum(tbl_OrderDetails.数量 tbl_Products.单价 (1 - tbl_OrderDetails.折扣)) AS 总金额, Max(tbl_Orders.订单日期) AS 最近下单时间 FROM (tbl_Products INNER JOIN tbl_OrderDetails ON tbl_Products.产品ID = tbl_OrderDetails.产品ID) INNER JOIN (tbl_Customers INNER JOIN tbl_Orders ON tbl_Customers.客户ID = tbl_Orders.客户ID) ON tbl_OrderDetails.订单ID = tbl_Orders.订单ID GROUP BY tbl_Customers.公司名称 HAVING Count(tbl_Orders.订单ID) > 1 ORDER BY Sum(tbl_OrderDetails.数量 tbl_Products.单价 (1 - tbl_OrderDetails.折扣)) DESC;
说明: 该查询返回购买超过1次且按总金额降序排列的客户列表,如果直接运行报错,请检查表名是否一致(使用中文表名时可对应修改),这是Access数据库实例教学视频中常用来演示多表关联和聚合函数的经典案例。
低库存自动提醒(VBA模块)
Public Sub CheckLowStock()
Dim db As DAO.D
atabase
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT 产品ID, 产品名称, 库存数量 FROM tbl_Products WHERE 库存数量 < 10")
If rs.RecordCount > 0 Then
Do While Not rs.EOF
MsgBox "【库存预警】" & rs!产品名称 & " 剩余 " & rs!库存数量 & " 件,请及时补货。"
rs.MoveNext
Loop
Else
MsgBox "所有产品库存充足。"
End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub 将这段代码粘贴到VBA编辑器的标准模块中,然后在功能区添加一个按钮,绑定运行该宏,每当用户点击时,系统会自动扫描库存并弹出提醒,这个功能在Access数据库实例实战中非常实用,避免了人工逐行检查库存的繁琐。
Access数据库实例教学视频中的经典案例:库存盘点窗体制作
一个优秀的Access数据库应用实例不应该只停留在后台数据,前端窗体的设计直接影响用户使用体验。
创建主窗体-子窗体展示订单明细
操作步骤:
- 创建“订单一览”窗体(基于tbl_Orders查询)
- 在窗体设计视图中添加一个子窗体/子报表控件
- 在向导中选择“使用现有的表和查询” → 选择“订单明细查询”(关联tbl_OrderDetails和tbl_Products)
- 设置链接子字段和主字段为“订单ID”
- 在主窗体中添加“打印发票”按钮,绑定以下事件:
DoCmd.OpenReport "rpt_Invoice", acViewPreview, , "订单ID = " & Me.订单ID
提示: 主窗体-子窗体结构是Access数据库实例代码中复用率最高的模式,可以大幅减少开发时间,如果你搜索“Access数据库应用实例下载”,很多模板都采用了这种布局。
数据宏实现自动更新库存
在tbl_OrderDetails的“插入后”事件中添加数据宏:
- 在表设计视图中打开tbl_OrderDetails
- 点击“表”选项卡 → “插入后”宏
- 添加操作:EditRecord(别名:产品表,Where条件:[产品ID]=[tbl_OrderDetails].[产品ID])
- 设置字段:库存数量 = [库存数量] – [tbl_OrderDetails].[数量]
- 保存宏

这样,每当录入一笔新订单明细时,对应产品的库存会自动减少,这个在Access数据库实例实战中的自动化技巧能避免数据不一致,是进阶用户必须掌握的技能。
常见问题与优化建议(Q&A)
问:Access数据库实例教程中学到的技巧能直接用于其他版本吗?
答: 可以,Access 2007至2021版本的表设计、查询语法和VBA核心对象模型高度一致,唯一的区别在于功能区布局:2010之后的版本将“数据库工具”选项卡中的部分功能移到了“创建”选项卡,如果你的实例包含宏,需要确保目标电脑启用了宏安全性中的“启用所有宏”。
问:如何把Access数据库应用实例部署给团队多人同时使用?
答: 标准做法是拆分为前端和后端两个文件,后端(.accdb)只存放表和数据,放在共享文件夹或SQL Server上,前端(.accdb)包含查询、窗体、报表和VBA代码,分发给每位用户,前端通过链接表连接到后端,链接表操作路径:外部数据 → Access → 浏览后端文件 → 勾选“通过创建链接表来链接到数据源”,注意,Access数据库实例教学视频中推荐的拆分方案能有效避免多人编辑时的性能问题和文件损坏风险。
问:我的Access数据库应用实例运行越来越慢,应该如何优化?
答: 三个最常见的优化方向:1)为查询中使用的排序、分组和连接字段建立索引(在表设计视图的索引属性中设置);2)定期压缩和修复数据库(文件 → 信息 → 压缩和修复数据库);3)将大量计算逻辑从VBA移到查询中执行,因为查询引擎的优化远优于逐行循环的VBA代码,据微软Access开发团队发布的性能指南,压缩操作通常能缩减文件大小30%-50%并提升查询响应速度,如果以上方法仍无法满足需求,考虑将后端迁移到SQL Server Express(免费),使用升迁向导即可完成。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

发表回复