我正在开发一个Excel to Access Application,其中前端将是一个Excel工作簿,提供给将填写和提交表单的60个用户。在提交表单时,表单数据将使用VBA和ADO插入Access mdb文件中的表(仅一个表)。用户只会插入记录;没有更新。 (基本上它是一个数据输入应用程序,为了加快数据输入,多个用户将使用Excel文件将记录输入到公共后端mdb数据库中。)
是否会出现任何锁定或并发问题,只会进行INSERTS?如果是,有办法处理它们吗?
(我知道SQL Express或其他解决方案比MS-Access解决方案更好。但是业务需要一个mdb文件,因为它可以很容易地定期邮寄给另一个人进行分析。)
答案 0 :(得分:2)
考虑在Access中构建表单而不是Excel。表单是Access不可或缺的组件,可以在没有VBA或ADO的情况下更新,附加,删除表数据,因为表格将是表单的RecordSource。但仍然可以使用Access表单允许VBA编码和嵌入式宏具有比Excel UserForms更高级的交互性(即OnClick,OnOpen,AfterUpdate,BeforeChange,AfterDelConfirm事件)。
另外,Access允许同时最多255个用户。您甚至可以将Access拆分为两个前端和后端文件,并将多个前端分配给所有60个用户,但保留一个后端数据文件。更重要的是,Access后端可以使用ODBC / OLEDB驱动程序升级到任何标准RDMS(Oracle,SQL Server,MySQL,PostgreSQL,DB2)。
请不要仅仅因为它是一个非常流行,易于使用的应用程序而与Excel结算。要构建UserForm,通过ODBC连接到数据库,当所有这些都是Access本机并且可以在没有一行VBA的情况下构建时,使用VBA记录集运行循环插入将相当于相当多的代码。使用Excel作为Word或PDF等最终用途文档,与公式,统计信息,报告和表格/图表的静态导出数据进行交互。
<强> CONCURRENCY 强>
根据DAO或ADO调用或常规数据库设置,可以在MS Access表,存储查询或VBA记录集中设置各种锁定机制:
通常,悲观锁定是默认设置(Access表单采用此设置),用户在第一个用户收到错误消息后尝试编辑SAME记录。对于您的数据插入情况,锁定不会造成问题,但前提是其他用户可以浏览和编辑以前的数据。