ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5537|回复: 6

[求助]能用SQL Server彻底取代Access吗?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-9-27 16:59 | 显示全部楼层 |阅读模式

         我在一小型家纺公司工作。通过自学的方式,学到了一点点Excel和Access环境下的VBA编程,当然谈不上精通。
        

         其实我已经比较喜欢Access编程了。之所以提出这个话题,是因为我用纯Access2003开发的一个管理系统出现了令人郁闷的烦恼:太慢了!


         我粗略的说一下我这个管理系统的大致情况:采用的也就是最常见的mdb前后台的工作方式,后台数据单独存在服务器电脑上,所谓服务器也只不过是通过简单的共享文件夹而已,然后将后台mdb数据文件放在这个共享文件夹内,其他的电脑通过前台的mdb程序来访问数据而已。前台和后台都是完全用access本身的环境开发的,并没有用到VB、VC之类的程序设计语言。就数据操作本身而言,access中的VB基本可以满足我的需要。


         我现有的Access程序前台部分有84个查询,90个窗体,34个报表,16个模块近1500个sub和function过程,前台mdb文件在修复压缩后的体积近4MB。后台mdb文件中没有保存任何图片数据,在修复压缩后的体积有近30MB,有82个基础表,有些表中的数据记录数甚至超过了10万。我也不知道我这样的一个系统是否算小体积?


         现在的情况是:即使没有任何用户使用后台数据,仅仅是在修改前台程序的时候,连保存一个窗体都变的非常缓慢,慢到什么成度呢,我用秒表测量过一下,即使不对窗体進行任何的修改,仅仅是在设计视图打开并立刻保存一下,就需要耗时80秒!诸位请注意啊,这仅仅是保存修改时的情况,并不是程序运行是的情况。太可怕了,大家都知道,要修改一个庞大的数据库系统是离不开大量的代码修改和保存工作的。仅仅是一个简单的保存都需要耗时80秒,这样还怎么去修改程序呢?也许有人说是不是我的系统出问题了呢,应该不是,因为我创建一个新的mdb程序,如果其中的对象数很少,那么保存和运行起来是非常快的。不是系统的问题,应该还是ACCESS本身的问题。


         所以我开始考虑自学SQL Server。可是我对SQL Server感觉很陌生,也很恐惧,要想掌握SQL Server似乎非要精通非常高深的理论。

         在此我向各位已经入门并精通了能用SQL Server的朋友告诉我:如果改用SQL Server,是否还要另外学习一门程序设计语言(比如VB、VC等)或开发工具才可以开发出类似于ACCESS的C/S类型的数据库管理系统呢?SQL Server是否也自带和支持VBA,是否也可以象access那样非常方便的创建查询、窗体、报表,并可以方便的针对窗体、报表编写VBA程序代码?也就是说只要安装了SQL Server,就可以在里面不借助任何程序设计语言而象ACCESS那样开发数据库管理系统呢?如果改用了SQL Server,我现有的管理系统能否完整无误的移植到SQL Server下去,不光移植数据表,连查询和窗体以及所有相关的VBA代码都要移植进取去。如果所有的代码都需要重新编写,那将是一件很可怕的事情。那可是90多个窗体近1500多个sub和function过程啊!

我对SQL Server确实不了解!让各位见笑了!

[此贴子已经被作者于2008-9-27 17:13:51编辑过]

TA的精华主题

TA的得分主题

发表于 2008-9-28 07:49 | 显示全部楼层

1

sqlserver功能非常强大,特别是并发服务和安全管理等等

2

sqlserver不能用vba语言,他用的是t-sql语言,不完全一样,但学习并不困难

3

access里有个升迁向导,可将其升迁到sqlserver中去

当然你事先要建立sqlserver服务器

4

access里的查询,sqlserver里叫视图(view)

access里的sub,类似sqlserver里的存储过程(procedure)

access里的function,sqlserver里也叫function

access里的表单报表模块,不会升迁到sqlserver里,他们仍保存在本地

5

升级后

将sqlserver作为服务器端,将access的项目(adp)作为客户端,形成c/s构架

多查查资料,祝你好运

TA的精华主题

TA的得分主题

发表于 2008-9-28 15:13 | 显示全部楼层

有个很简单的方法,可以不修改当前任何原程序。

直接把后台那个MBD文件的数据导入到SQL2000里,然后删除这个MDB文件里的所有表,接着用链接表连接SQL2000里的数据表。这样,前台MDB可像往常一样访问后台MDB。(而实际数据是保存在SQL2000里的)

不过这样也增加了一个中间环节,对速度可能还是有一定的影响。

TA的精华主题

TA的得分主题

发表于 2008-9-28 15:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

    其实,SQL2000学起来也很容易的,和ACCESS的SQL语法差别不大,注意一些差别点:比如日期字段ACCESS中为#2008-9-28#,SQL2000中为'2008-9-28',ACCESS中支持date()函数,而SQL2000中用的是GETDATE(),ACCESS中连接字串符用的是 & 而SQL2000中用的是 +

    本人更喜欢用ACCESS,因为简单好维护,不需要额外的安装服务器和注册一大堆控件,在不同的计算机上通用性强。SQL2000感觉就是太庞大了,除了维护自己的数据库,还必须要维护3个系统数据库。

    由于软件改成了网络版,ACCESS在一个用户的情况下很快,但只要增加一个用户就变得奇慢无比(这点我也不知为什么,理论支持255个用户的,但我这里哪怕只增加一个用户就巨慢??)改成SQL2000后,哪怕全员同时登录(30个用户)速度也可以形容为飞奔!

   所以,建议还是用SQL2000,虽然麻烦点,但网络数据库毕竟是网络数据库。

TA的精华主题

TA的得分主题

发表于 2008-9-28 21:32 | 显示全部楼层

像你这样的需求和数据量,运行慢的最大可能性是你设计的不合理

ACCESS应该是可以胜任的

TA的精华主题

TA的得分主题

发表于 2008-10-5 10:17 | 显示全部楼层
用sql server + 高级语言吧。。。 VBA毕竟有些功能实现起来比较麻烦

TA的精华主题

TA的得分主题

发表于 2008-10-6 13:35 | 显示全部楼层

从软件方面,你的ACCESS程序或许可以进一步优化.比如用一个公共窗体来显示数据.这样可以减少窗体的数量。查询同理。当然关键的还是你的数据结构是否足够合理。

从硬件方面,如果有条件上sqlserver,当然应该上,又安全又高效.

另外,其实VBA与VB区别不大。建议你略花点时间转VB。这样不管是利用第三方控件或者打包什么的,都会更专业更方便些。

如果想用熟悉的ACCESS(VBA)环境转做sqlserver开发的话.也是可以的.

要么升级到adp.

要么用ado连到sqlserver(安全)。不过要改变一些代码。

比如组合框、列表框、子窗体/子报表、报表不能直接将sql语句作为其数据源等。

前面两个你可以用additem等方法来代替。子窗体子报表你可以用第三方控件vsflexgrid来代替。

我曾用ACCESS做过一个软件,后台可以同时连mdb与sqlserver.但没使用ACCESS报表。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 18:10 , Processed in 0.036488 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表