【写在前面的话】
思忖良久,决定在简书写点东西,用以提醒自己,在职场的海洋中,即使风疾浪涌,只要自己找到兴趣和工作的结合点,并加以小小的钻研,也能建造起一艘属于自己的船,和心爱的人一起远航。
【背景介绍】
公司每月都会有一版销量报告存档,大概12M左右,记录数10W+,字段数21个,平时对接销售的销量申诉,需要按照机构名称、城市、品牌等字段查询历史销量,一年的YTD数据汇总后记录数达到100w+,EXCEL的极限,更别说汇总历史2-3年的数据,于是决定用ACCESS做一个简单的数据查询系统。
---------------------------这是一条严肃的分割线--------------------------
正文开始
【数据导入前的准备】
导入数据前检查两点:
(1)数据完整性,记录下待导入的条目数,以便导入后核对;
(2)数据格式,将隐藏行列显示,去除首行的空白行,使得导入时第一行做为列标题。
【导入数据】
有几种情况,分别说一下:
(1)只有一个表格的情况,数据导入比较简单:外部数据--Excel--按照向导导入即可,如图1。
(2)如果excel文件比较多,先导入一个,后续文件可追加进去(表头要与第一个表完全一致),例如导入第2个表时,选择”向表中追加一份记录的副本“,如图2。
(3)数据库文件的情况就比较方便,也是在外部数据--选择相应的类型按照向导导入,因为是数据库文件之间的交互,导入速度很快。
图1 导入数据
图2 追加数据
【创建窗体】
(1)新建一个空白窗体,创建--窗体设计,如图3
图3 创建窗体
(2)在窗体中创建控件
根据要检索的字段新建文本框,像品牌这类的字段可以使用组合框,另外注意的一点,创建的这些文本框不需要绑定某些字段,如果绑定了数据表中的字段后续查询时会造成数据的回写或清空。创建好的每个控件记得更改一下文本框名字,注意是更改文本框的名字,不是标签的名字,图4箭头所指的是文本框,叉号是标签,后续引用是引用的文本框。
然后,再创建两个按钮,即查询、清空,创建一个子窗体,这里也要注意,子窗体控件直接从窗体设计工具--设计中选择创建即可,不需要单独创建,同样更改控件名称,以便后续调用。
最终创建好的效果如图5,然后将窗体保存,命名为“数据查询”,关闭。
图4 更改文本框的名字
图5 创建窗体
【创建查询】
(1)创建查询,创建--查询设计,将自己需要的字段加入到下边的窗口中。
(2)编辑条件,利用生成器编写,销售时间的条件为:Between [Forms]![数据查询]![开始日期] And [Forms]![数据查询]![结束日期],
其余的字段需要模糊查询,需要用到Like和通配符*以及连接符&,举个例子,例如品牌的条件为:Like "*" & [Forms]![数据查询]![品牌] & "*",以此类推,按照图6把需要的条件都编辑好。
(3)关键一步,将查询的记录集类型改为快照,如图7,避免回写数据表。
(4)保存查询,命名为“DDI数据查询”,关闭。
图6 创建查询
图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
‘-----------
图8 编辑按钮单击事件
最后保存一下代码编辑窗口和数据查询窗体,关闭窗体。
好啦,赶快在窗体视图中打开“数据查询”,填上一些数据,选择好时间段,点一下查询试试看会发生什么,然后再试试点击清空看看。
---------------------------这是一条严肃的分割线--------------------------
正文结束
【写在最后】
正文中描述的很多操作和逻辑是比较精简实用的,因为自己开始摸索构建的时候,有过很多尝试,踩过很多坑,比如查询中销售日期的条件,最开始用的独立的宏代码和独立的查询按钮来产生时间,没有想到直接在查询中编辑条件就可以,再比如查询是可以直接被子窗体调用嵌套进主窗体,不需要单独创建子窗体后再将两个窗体嵌套等小的问题。
希望本文对大家有帮助,对于文中的疑问欢迎留言指教。
作者:zizi2018
链接:https://www.jianshu.com/p/c8da8161f46b
共同学习,写下你的评论
评论加载中...
作者其他优质文章