继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

用ACCESS构建自己的查询系统

慕侠2389804
关注TA
已关注
手记 429
粉丝 55
获赞 156

【写在前面的话】

思忖良久,决定在简书写点东西,用以提醒自己,在职场的海洋中,即使风疾浪涌,只要自己找到兴趣和工作的结合点,并加以小小的钻研,也能建造起一艘属于自己的船,和心爱的人一起远航。


【背景介绍】

公司每月都会有一版销量报告存档,大概12M左右,记录数10W+,字段数21个,平时对接销售的销量申诉,需要按照机构名称、城市、品牌等字段查询历史销量,一年的YTD数据汇总后记录数达到100w+,EXCEL的极限,更别说汇总历史2-3年的数据,于是决定用ACCESS做一个简单的数据查询系统。


---------------------------这是一条严肃的分割线--------------------------

正文开始

【数据导入前的准备】

导入数据前检查两点:

(1)数据完整性,记录下待导入的条目数,以便导入后核对;

(2)数据格式,将隐藏行列显示,去除首行的空白行,使得导入时第一行做为列标题。


【导入数据】

有几种情况,分别说一下:

(1)只有一个表格的情况,数据导入比较简单:外部数据--Excel--按照向导导入即可,如图1。

(2)如果excel文件比较多,先导入一个,后续文件可追加进去(表头要与第一个表完全一致),例如导入第2个表时,选择”向表中追加一份记录的副本“,如图2。

(3)数据库文件的情况就比较方便,也是在外部数据--选择相应的类型按照向导导入,因为是数据库文件之间的交互,导入速度很快。


webp

图1 导入数据



webp

图2 追加数据



【创建窗体】

(1)新建一个空白窗体,创建--窗体设计,如图3


webp

图3 创建窗体




(2)在窗体中创建控件

根据要检索的字段新建文本框,像品牌这类的字段可以使用组合框,另外注意的一点,创建的这些文本框不需要绑定某些字段,如果绑定了数据表中的字段后续查询时会造成数据的回写或清空。创建好的每个控件记得更改一下文本框名字,注意是更改文本框的名字,不是标签的名字,图4箭头所指的是文本框,叉号是标签,后续引用是引用的文本框。

然后,再创建两个按钮,即查询、清空,创建一个子窗体,这里也要注意,子窗体控件直接从窗体设计工具--设计中选择创建即可,不需要单独创建,同样更改控件名称,以便后续调用。

最终创建好的效果如图5,然后将窗体保存,命名为“数据查询”,关闭。


webp

图4 更改文本框的名字



webp

图5 创建窗体


【创建查询】

(1)创建查询,创建--查询设计,将自己需要的字段加入到下边的窗口中。

(2)编辑条件,利用生成器编写,销售时间的条件为:Between [Forms]![数据查询]![开始日期] And [Forms]![数据查询]![结束日期],

其余的字段需要模糊查询,需要用到Like和通配符*以及连接符&,举个例子,例如品牌的条件为:Like "*" & [Forms]![数据查询]![品牌] & "*",以此类推,按照图6把需要的条件都编辑好。

(3)关键一步,将查询的记录集类型改为快照,如图7,避免回写数据表。

(4)保存查询,命名为“DDI数据查询”,关闭。


webp

图6 创建查询


webp

图7 更改查询的记录集类型

【建立查询和窗体的联系】

(1)这一步非常简单,设计视图打开“数据查询”窗体,将“DDI数据查询”直接拖至子窗体中,然后保存一下窗体。

(2)关键一步来了,编辑两个按钮的事件,设计视图中选择查询按钮--事件--单击--“...”,如图8,代码如下,注意,代码中的控件名称如Child10、开始日期等是我自己命名的,请用自己的相应控件名称,不然会报错。具体代码逻辑非常简单,点击查询按钮后,“DDI数据查询”会引用窗体中你输入的信息做为条件去数据表中查询数据,然后显示在子窗体Child10中,清空按钮是将“数据查询”窗体中的条件都置为空,然后重新查询,显示在Child10中。

‘-----------

Private Sub Command9_Click()

If IsNull(Me.开始日期.Value) Or IsNull(Me.结束日期.Value) Then

MsgBox ("请选择日期!")

Else

Me.Child10.Requery

End If

End Sub

‘-----------

同样的,清空按钮的单击事件代码如下,

‘-----------

Private Sub Command12_Click()

Me.进货方代码_匹配_ = Null

Me.进货方名称_匹配_ = Null

Me.进货方名称_流向单_ = Null

Me.进货方城市 = Null

Me.品牌 = Null

Me.开始日期 = Null

Me.结束日期 = Null

Me.Child10.Requery

End Sub

‘-----------

webp

图8 编辑按钮单击事件



最后保存一下代码编辑窗口和数据查询窗体,关闭窗体。


好啦,赶快在窗体视图中打开“数据查询”,填上一些数据,选择好时间段,点一下查询试试看会发生什么,然后再试试点击清空看看。


---------------------------这是一条严肃的分割线--------------------------

正文结束


【写在最后】

正文中描述的很多操作和逻辑是比较精简实用的,因为自己开始摸索构建的时候,有过很多尝试,踩过很多坑,比如查询中销售日期的条件,最开始用的独立的宏代码和独立的查询按钮来产生时间,没有想到直接在查询中编辑条件就可以,再比如查询是可以直接被子窗体调用嵌套进主窗体,不需要单独创建子窗体后再将两个窗体嵌套等小的问题。

希望本文对大家有帮助,对于文中的疑问欢迎留言指教。



作者:zizi2018
链接:https://www.jianshu.com/p/c8da8161f46b


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP