关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
以前我在上一个东家工作的时候,主要用Access开发。但我离开那家公司之后,就再也没用过Access了。因为Access弊病太多,下面一一道来。
Access是Office其中一个组件。仅仅如此这样简单吗?错了,微软的东西从来不简单。
首先,Access是一款数据库软件,原生支持DAO组件。
它是一个小型桌面关系型数据库,桌面是指可以在桌面看到文件并可以直接打开。
另外,它隶属于Office,也支持vba开发。
看上去很强大。嗯,仅仅是看上去而已。实际则不然。
1)说是一款数据库呢,支持的SQL东西又太少。
有不少SQL语句不支持,例如row_id,limit等。对比SQL Server等,又没有存储过程等高级功能。
2)说是一款办公软件呢,很多办公人员用不上。
数据处理没Excel强,图表也没Excel多。顶多就是可以存储很多数据。所以你可以看到会有不少新手习惯用Excel的方法去使用Access。
3)说是一款开发工具呢,很多程序员不屑用这个来开发。
尽管支持vba,但vba这东西开发效率低,执行效率也不高。而且用好Access vba至少要懂得vb语法、Access对象模型和数据库设计等知识。
我现在开发东西,需要简单存储一些数据的话,基本使用xml或写入文本文件。若要使用Access,还要安装Access组件。
有些人只拿Access作为SQL Server的可视化工具去链接SQL Server的数据库。
不过,至少在国外有个好处,开发成本低。不用买太多软件或数据库只需买了Office就可以开发和使用了。但现在有MySQL等开源数据库和一些开源好用的开发工具,呵呵。
总之,微软本来想把它做成一条龙。东拼西凑,又定位模糊,结果拼成一条四不像的虫。
这几年,随着Office版本的更新可以看出。微软对Access进行调整,阉割了不少东西。Access看上去是被打入冷宫了。(好像也从来没上过台面)
用过Access开发的人都知道,每隔一段时间都需要用Access菜单上的压缩修复数据库压缩文件。不要然整个Access文件会越用越大。有时候只是保存几条记录的数据,都有可能1G多的大小。
这个问题是Access本身的问题。它会记录各种各样的行为、数据等到自身的系统表中。
我以Access2010为例,把系统表显示出来。右键导航栏空白处,点击“导航选项”。如下设置:
把这两个选项勾上,即可看到系统表。我再创建一个空白窗体,并打开MSysObjects表。
可以看到这里已经记录了一些数据。然后,你再打开窗体、移动窗体、修改窗体内容等等。它都会把这些零零碎碎的数据记录起来。
还有,你删除数据库中的表。这些数据还是存在表中的。就算删除了,实际的Access文件大小没变。需要通过压缩修复,才真正清理掉这些数据。
日积月累,1个G的Access文件很常见。
经常使用Access开发的人会发现今天可以用,明天就出错了,分分钟砸电脑。
而且报错的提示也是莫名奇妙,大多是什么控件不支持什么事件。
如果经常用第三方控件,文件损坏的概率更大。
一般可以用压缩修复功能修复文件。如果修复不了,就基本废了。
所以需要经常备份,而且Access是单文件。你写的代码越多,文件越大,越不利于维护。
确确的说,Access所支持的SQL语法是T-SQL语法。
T-SQL语法是微软自己捣鼓出来的东西,微软野心不小,总想开发自己的东西,拿下整个市场。到最后往往弄出一个四不像。
当然,至少Access的查询视图还是很实用。它可以让新手快速上手并学会SQL。
这里用SQL体会最深是开发分页功能的时候。若MySQL或SQL Server可以用limit或row_id解决。而Access完全不支持这些,只有简单的用法。
而且一个查询只能写一条SQL语句,不能用分号隔开写多条。
Access这些版本我都使用过,最稳定的要数2010版,而且支持的功能最多。2013版就开始阉割。
但2010版可以看到这些字段:
1)OLE字段:旧版本就有了。可以保存整个文件,也可以保存二进制数据。这个字段千万不要用。里面的数据很难获取使用,而且会导致文件大小剧增。
2)超链接字段:一点都不实用。作为Access开发,不会直接在表上直接操作数据。在窗体上,这个字段超链接点不着。果然是为办公人员准备的,汗。
3)附件:实际改字段是OLE字段改版,也存在OLE字段一样的问题。若使用了该字段会导致Access文件不能分离,也不会被其他Access文件导入链接表。
4)计算:这个字段估计也是打算给新手使用的。因为这个字段不应该在表中出现,用查询即可计算。而且该字段计算能力很弱。
虽然Access支持vba,而且该vba比Excel、Word等的更为全面。但还是编程支持很弱。
很多第三方控件不能使用,一插入到窗体就崩溃。
只要涉及到内存操作的API,也很容易崩溃,甚至导致数据库损坏。
没有计时器,只能使用窗体的计时事件。(Access的事件可以动态绑定的,这点值得肯定)
另外,Access开发模式分3个流派:
1)宏,这个宏不是vba代码,主要是Docmd对象。
到后面的版本,宏进化比较完整。但多少用起来不是很方便。
2)绑定,Access的窗体可以直接绑定数据源。
通过绑定的控件直接操作数据。该方法开发最为便捷,但问题也是最多的。
3)纯ADO或DAO,使用ADO或DAO操作数据。
该方法可以避免绑定方法的弊病,就是代码量比较大。
不吐槽了。再吐槽下去,估计没人学了。大部分问题都是使用Access vba开发才会出现的问题。若只是将Access纯粹当作数据库使用,就不会出现文件损坏等问题。
简单来说,程序员不喜欢用Access,有更专业的选择。Access适合有点编程基础的办公人员。
我之前开发过一个Access开发框架:Access通用开发平台。有兴趣有工作需要的可以试试。
562934864@qq.com
您说的太对了,十分赞同。 我是属于有点编程基础的办公人员,作为财务专业,使用exce较多,但对于量很大而且日常产生的数据excel处理起来太慢了。于是就想到了access,入门是很快,查询和窗体用起来很方便。报表打印也很快捷,筛选查找等快捷键和excel也很像。已经学习和使用半年了,我自己的数据库也变得很庞大(但好在事先知道有那些坑,文件大小没有跟大,只是表关系复杂了),依靠它确实提高了工作效率。 但是站在非专业角度,不能满足多人在线操作。虽然官方有sharepoiont,甚至有powerapp,但国内有正版账号的人太少。捣鼓出来的东西别人压根不会去用。也有一些骚操作可以实现读取服务器数据,但这样还不如学习一下专业的数据库,自己做一个前端。 而且我觉得微软都要放弃access了,新版本压根没有它的影子。一方面它给我带来了很多好处,另一方面遗憾它不能带来令人惊喜的进步。如有一款即友好又专业的数据库开发平台就好了,让我们这些办公人员可以开发出自己想要的东西。目前我也在追求新的东西。 很佩服前辈,因为博客内容全是我感兴趣的,或正在学习的。您在编程、建站、办公软件方面就是我的标杆。我希望有朝一日达到这样的高度。
2019-05-17 20:58 回复