MS Access编程概述

Pam*_*Pam 7 ms-access frontend programming-languages java-ee

我是一名Java EE开发人员,只是希望我将报价放在一起为他的业务应用程序进行联系,可以与他们的MS Access"后端"集成.

我希望发布这个,并获得MS Access编程所涉及的最佳实践的一般高级概述.我假设程序将完全在VB中,但不知道我是否可以选择在VB.NET或(最好)C#中编写内容.

另外,我鄙视表示层:Access应用程序的任何好的GUI构建器?

MS Access程序员经常使用哪些常用工具和API(单元测试框架,构建自动化系统等)?

您建议的任何链接或资源?

这听起来像一个非常简单的应用程序:获取输入数据,将其与某些表进行比较,并将一些输出投射到屏幕上.我是一个相当不错的程序员,所以尽管我从来没有做过Access程序,但对我来说并不是很困难.

感谢您的任何想法或建议!

Ren*_*uis 36

作为前端访问

好吧,人们对Access非常感兴趣.负面观点的主要原因是它被非开发人员广泛使用,他们没有正确的数据库开发概念,并最终使用这些几乎无法运行,设计糟糕的应用程序,这些应用程序将恐惧带入了开发人员的心中.

话虽如此,Access只不过是一个具有极低入门门槛的快速应用程序开发工具.

好和坏

Access是一个相当古老的产品线,已有近20年的历史.许多人对Access作为一项技术的反对都建立在其早期历史的基础之上:由于向后兼容性是微软认为重要的东西,因此Access多年来保留了其大部分功能,无论好坏.

您可以看到VBA,非winform表单的选择,OOP模块的推广,是不好的选择,但这些早期设计决策的连续性使Access成为一个稳定的平台.

  • VBA:永不消亡的语言.它笨拙,过时,缺乏语言的最新进展,但它也快速,易学,灵活,易于互操作(例如调用Win32 API非常简单),并且它可以与外部库(事件写入.净).

  • 绑定表单:默认情况下,Access可以轻松创建没有代码行的工作应用程序.大多数查询也可以创建,而根本不需要转到SQL.如果你是一个控制狂,它可能很烦人,但很容易下载到代码并从那里控制一切.

  • 第三方集成:即使Access有很多附加组件,我也不建议使用大多数用户控件或第三方库,除非你真的需要.在用户权限有限的环境中部署它们非常困难,版本控制可能变得毛茸茸.

  • 功能区:它可能是好的还是坏的,取决于你与谁交谈,但微软已投入大量资金,它可能会存在一段时间.至少功能区和Access 2007及更高版本中的改进控件使应用程序以现代方式显示和运行.消失了旧的可怕UI,你现在可以用主题,HTML布局和现代功能区做很好的事情.

可靠性

大多数反对意见,特别是关于可靠性的反对意见,已经不再适用.
精心设计的Access应用程序可以支持数十个并发用户.我有一个体面的应用程序,管理一个拥有150个用户的制造公司的采购/库存/质量/零件/项目,其中通常有50个在任何给定时间连接.多年来我没有任何腐败.

当然,您必须始终牢记Access是一个基于多用户文件的数据库,因此您不能指望它在网络不可靠或速度较慢的环境中无风险地工作,并且通过WiFi连接到Access后端实际上是在询问麻烦,就像你不能通过无线处理大型Excel文件一样.

维护是应用程序生命周期的一部分.预防性维护非常重要.
不要等待出错:在应用程序中构建一些管理工具,以帮助检查数据的状态(确保一切都连贯,检测无效的用户输入等).
还定期压缩数据库(我在后备服务器上作为日常自动化任务的一部分进行备份后每晚进行一次).

一些随机提示

  • 确保您的前端和后端是分开的:只有数据应该在后端,并且前端应该安装在每个用户的机器上.
  • 从您的前端,打开数据库后端虚拟表的永久链接:保持始终连接将极大地提高性能.出于这个原因,请看看这个问题.
  • 后端应该位于浅层网络共享中(不要将其置于多个目录下).
  • 确保您认真考虑如何自动将更新部署到所有客户端.
    有很多方法可以做到这一点.我开发了自己的,但你可以使用ClickOnceTony ToewsAuto-Front-End Updater
  • 使用运行时:如果在其计算机上部署Access运行时,您的前端应用程序可以在没有用户干涉其内部的情况下运行.它也是免费的.
  • 不要打击工具:Access有一定的做事方式.只需使用可用的工具而无需编码,直到您耗尽了RAD环境的功能.如果没有任何代码,您可能会感到惊讶.
  • 没有什么可以阻止你使用OOP:定义类并手动将类绑定到表单,控制数据更新等.Access中的默认行为往往鼓励快速开发,适用于小项目,但如果你怀疑你的项目可能成长,计划未来,就像你对任何其他框架一样.

作为后端数据库访问

现在,如果你想使用其他东西编写的前端,比如C#,使用Jet/ACE驱动程序连接到Access后端数据库相当容易.

  • Jet是Access的旧驱动程序,仅支持.mdb文件.Windows中默认安装32位驱动程序(仍然存在于Win8中)并且始终可以依赖.
  • ACE是.accdbAccess2007/2010/2013使用的新格式.它比旧版本增加了限制和增强功能,但它仍然可以与之交谈.mdb.
    您必须在所有客户端上安装Microsoft数据库引擎(如果已安装完整版或Access 2007/2010/2013的运行时,则不需要).
  • 不要尝试使用64位版本的Access/ACE驱动程序.这是未来,但它引入了许多新问题,特别是如果您使用第三方库或某些客户已安装32位Office(您不能混合和匹配32位和64位办公组件).
    同样,不要在64位模式下构建C++/C#/ Java/Python前端应用程序,并期望32位ACE驱动程序能够正常工作.将所有内容保留在32位,使一切正常,然后测试64位版本,如果你真的需要.
  • 如上所述,始终至少保持从代码中打开到后端数据库的单个连接.
  • 理想情况下,尝试抽象任何特定于Access的代码,以便以后在需要切换到基于服务器的数据库时更容易.您可以使用可以透明地与不同后端通信的ORM,或者至少可以将SQL查询分成资源文件或可以在以后轻松替换的单独对象.
  • 根据负载(主要是需要在数据库中更改多少数据),Access后端可轻松容纳20-100个用户而不会出现问题.如果有大量的插入和更新一直发生,事情就会恶化.有许多技巧可用于使事情变得更好并使Access可以很好地扩展,但是您本身就受到正在构建的应用程序类型以及用户访问其数据的限制.

  • 这真的是我见过的最好的SO答案之一.如果可以,我会投票+25. (11认同)
  • +1和*为一个很好的答案.在某些时候,您可能想要重新访问"不要尝试使用64位版本的Access/ACE驱动程序"建议.我发现自己现在越来越多地在64位Access"世界"中工作,32位遗留代码(特别是32位Windows API调用)的位变得越来越麻烦. (3认同)