使用Access两个月的应用心得

2017-09-02 11:16:00
尾巴AR
转贴:
博客园
637

根据自己的工作业务逻辑,建立了一个Access数据库系统,主要是储存储存历史月度数据,避免每次从公司数据库下载数据的麻烦,节省数据拉取时间。


1)客户信息,包括

由业务人员手工更新汇总的数据,如客户所在区域,商业信息等。

由机器抓取的客户信息,如客户账号状态,专属业务人员信息等等。

上述数据按照每月定期更新,以及每周更新,存储在不同的表里。


2)客户交易信息,计划包括:

汇总月度信息,如月成交额,交易量等;

分多个维度的表格,如周信息,交易类型,交易来源等,该数据刷新时间段不一样,且根据业务需求,会有不同的维度需求。

另外,为了方便,把数据库里常见的“Jan-2014”细分为"Year"和"Month"两个变量,这样以后数据导入输出时,不用再费心数据格式问题,在excel里,直接用date(year,month,day)即可快速合成日期。

通过搭建多个表格,就把曾经整合在excel里的数据拆分成了多个表格,且各个表格之间刷新频率不一样,减少了我们用excel vlookup匹配的时间。


同时我新建了两个查询

1、整合客户基本信息,包括业务人员使用的信息,以及由机器抓取的信息。(这里以账户唯一识别码作为关联标识,并修改了连接属性,即所谓的左连接右连接)

2、把汇总的月度信息与客户基本信息结合起来,汇总成一张大表。该大表之后将直接导入excel中,作为数据透视表的一部分。


另外,关于操作,目前摸索出:

1)删除查询:可以删除不符合我要求的数据(如每个月导入数据时,把当前月数据删除,避免数据重复)

2)追加查询:主要用于客户交易信息,定期追加月度/季度数据。


现在需要解决的问题包括:

1)如何在导入新的账户信息后,快速找到需要追加的客户信息,并且追加(计划查找不匹配项)

2)如何在删除已经不合格的数据,以及表之间的联合,以及决定后续数据导入的工作。(相信代码可以实现,但目前还未探索)

3)关于搭建一个友好的访问界面,或者撰写文档存稿


总结:

access在我们数据处理初期并不常用。但是随着数据量的扩大,我们自然而然的要用到多个数据库。

从access起步,个人觉得还比较容易。

以及,积极主动,代表着,要努力学习。自己折腾,在熟知业务的基础上,也勉强能完成一个符合大致需求的数据库。未来还需要多加尝试,并规范化模板。

再以及,比一年前为了某个TEAM搭建CRM系统时对ACCESS的一窍不通,这一次经过多番思考,很顺利就完成了框架的搭建。



基本完成access数据库的搭建,并且尝试了查重,不匹配项目查找,以及上传新数据等功能,表现良好。


记录一下目前研究出来的sql语句:

1)去除重复项

Select Distinct [字段]

2)选择重复项

GROUP BY 字段,字段

HAVING (( (字段))>1)AND ((Count(POST.[PostNumber]))>1) );

注意这里括号的应用

Having( () and ())

同时如果在access里使用,会自动带count(字段)

3)access里字段的命名规则

表.[字段名]

4)关于access里面的左连接右连接

个人感觉,access里面的关系菜单操作做的比较好。。比手写代码要好多了

反正就是一个

Left join

Right join的区别啦。。


自从有了这个数据库后,输出数据效率有了极大的提高。原本一个地区可能要29M的大小,现在4个地区加起来,excel原始数据只要9M。。

科技的力量是伟大的。

要提高工作效率,先提高技术及思想是更好的捷径。



在搭了一个数据库后,买了一本《让excel飞》,里面有提及access

经过研究之后,发现access+excel的结合确实能解决我的大部分难题,并且可以做得更好。

比较好的方法是,

access连接数据库,或者会定期刷新的表格,然后创建好查询,定期导出到excel中,生成图表透视表等

另外,有言access的学习和使用可以精简流程,优化工作流程。。并且是数据库入门最好的方法

现在遇到数据匹配查询,都可以建一个access存放数据,慢慢习惯这个access的思维方式


这次access实现的功能包括:

1)为部门整体搭建了一个员工基本资料数据库,里面包括从各个系统里获得的员工信息,如Zhang San,一个系统里叫San Zhang,一个系统叫sazhang,一个系统叫sun Zhang。这些信息汇总后,存在部门共享盘里,包括此次的Access,都是直接链接到这个总access表里,这样,有新员工来的时候,只需要更新一个access,其余所有数据都能实现自动链接更新。

2)利用saved import,保存固化数据导入功能,同时编写VBA/Marco进行数据自动更新:

*删除源数据:两个方法,编写Marco,自动运行已经编写好的删除查询,或直接用Marco删除记录。

*导入数据:用RunSavedImportExport(SavedImportExportName)可以执行数据导入;

3)在查询方面,主要设定两个

*删除查询

*选择查询

里面涉及两个自定义项语句,如IIF(判断,truepart,falsepart),而对于多重选择,用switch比用iif嵌套要简单得多,如switch(判断1,输出,判断2,输出)。不过switch不能直接用else语句,因此如果判断均不成立,会输出空白值,这点需要注意。

运用IIF和switch后,再加上查询实现的lookup功能,至此,access基本能完成excel做数据报表里要用的大部分数据处理。基本上80%-90%的数据处理就可以在这里来完成了^^


4)本次操作简介:

1)下载源数据,放到相应的位置,替换原有的数据源

注:这里也可以外链。但是根据实践,当数据量比较大的时候,用删除查询删除数据,然后再导入数据,速度远远大于外链。并且上述操作均可以用程序来运行。

2)打开access,运行Marco,删除相关的数据,并更新数据

3)运行经过一系列查询后的最终查询,导出到excel后,导入已经写好公式的excel里,刷新即可。


写得比较简练。仅作为学习笔记。


后续:

1)窗体制作,宏及VBA编写,提高自动化程度

2)编写说明

Name

Description

AddMenu (英文)

The AddMenu method carries out the AddMenu action in Visual Basic.

ApplyFilter (英文)

The ApplyFilter method carries out the ApplyFilter action in Visual Basic.

Beep (英文)

The Beep method carries out the Beep action in Visual Basic.

BrowseTo (英文)

The BrowseTo method performs the BrowseTo action in Visual Basic.

CancelEvent (英文)

The CancelEvent method carries out the CancelEvent action in Visual Basic.




总结一下,在这两个月里,通过自己摸索,成功搭建了一个可以取代所有复制粘贴/VLOOKUP查找,以及方便数据管理的数据库集。并从零到有学会了SQL,所谓的Access是SQL入门最好的方法,前辈诚不欺我也。从效率来说,首先,我们公司错综复杂的系统人名得到了有效的统一管理,并整合了由业务人员输入的一些不会被公司数据库保存的数据(譬如客户实际行业,客户真实信息等等),然后结合了那个BI自助系统的特性,编了一个导入导出的宏。

现在,基本框架已经搭建起来,我发现接下来的工作更加繁琐了

简单来说,现在主要的问题是数据库逻辑不清,需要理清并维护关系文档

由于数据库里大部分操作都是自动化的,设计该自动化流程。当时设计各个数据库时,基本上是,有什么需求,就建什么表。导致现在多个数据库之间逻辑不清晰。迫切需要维护一个文档,记录该数据库是怎样操作的。

现在我尝试用office自带的visio来厘清流程,但这个基本只能厘清数据间的关系,以及操作顺序。不能记录这个数据库是如何表间查询的,如果时间久了,这些逻辑又会不清晰了。不知道市面上的数据库维护,是用什么方法来维护的呢?

另外,由于我不喜欢整理文本上的操作,目前这些细致的活让我有些烦闷,每天都在修修补补而不是在创建新东西的感觉,真心压抑,而且容易走神。有什么办法可以更好的管控时间,让我focus在最重要的事情上?


正是因为时间管理遇到问题,然后被大量的文本整理占据精力,我越来越觉得,做数据库维护以及报表开发,可能报表开发仅仅只是一次性的操作,如何让开发出来的结果容易理解,并且易于让人根据业务需求进行修改,是我接下来需要做的事情。

但愿我在找到方法之前,不会因为烦躁,而失去了进一步学习的机会。

另外,关于R语言,我目前正式放弃阅读R语言实战,转为看数据挖掘与R语言。R语言实战前半部分作为数据处理,确实很实用。但后续由于没有较完整的案例,并不适合一一研读。反而是前阵子京东凑单买的数据挖掘与R语言给了我极大的惊喜(实验数据被作者直接创了个R包,相当良心!!)

分享