之前已经问过这个问题,但是有些答案很古老,例如
似乎有很多方法可以实现,我只是想征求意见,看看我是否错过了任何选择:
选项都有利弊.最显着的差异在于:
>成本与优惠时间
>需要重新编写访问数据库以在sql Server中
>需要重新编写前端
>同时使用.
>解决方案和性能的可扩展性.
>使用sql Server存储数据.
>简单!
这是我看到的选项.
每个用户在前端文件的PC上都有自己的副本.您自己管理自己的sql Server数据库/实例或使用MS Azure或类似的Web服务. (有一个免费版本的sql Server可以在服务器上安装和使用,或者你可以
PROS:您不需要重新编写前端文件.
缺点:您需要一个sql Server实例.您需要迁移数据表(并且您可能需要做一些工作来在sql Server中复制它们,特别是如果您有数据宏,或使用特殊数据类型(如是/否,Multipel选择组合框和其他一些)有大量迁移的免费工具,以及为更多迁移付费的工具.
2.将文件存储在保管箱或类似设备上,以方便共享
将文件存储在dropBox上并使用类似here所述的vbscript将文件从dropBox抓取到本地磁盘,允许用户更新它,然后将其放回dropBox. (一种机制用于阻止其他用户抓取文件,如果另一个用户抓住了它.).如果另一个用户已经抓住该文件进行更新,则可以调整此方法以允许用户抓取文件以用于READ ONLY目的.
请注意,此方法最大限度地减少了重写数据库的需要,并且可以使用免费的在线文件存储来促进共享
请注意,2可以修改为自动更新存储在用户PC上的前端文件,如选项1中所示.
PROS:便宜!最小的变化.
缺点:一次只能更新一个用户.您需要编写相当复杂的VB脚本.您需要为每个用户手动设置DropBox,并将其同步到c驱动器.
3.使用Access 2010创建Web应用程序. (数据存储在Sharepoint列表中,表单使用宏来响应用户操作.Info here和video demo here
缺点:“旧学校”的做法 – Access 2013更好.
4.使用Access 2013 Web应用程序.这将数据存储在sql Server中,并使用新的Access功能来提供Web GUI(即视图).您还可以从桌面访问前端访问相同的sql Server数据(用于报告等).
缺点:3& 4
您创建的“表单”没有桌面前端那么好的功能,因为无法使用VBA – 而是使用宏.但在许多情况下这都可以.
需要进行sharepoint订阅,这可能会阻止您的数据库被广泛使用,因为(大多数)用户需要sharepoint帐户.
您可能需要重新编写现有的访问表单.
PROS:使用sql Server时可扩展性更高.使用Access轻松创建和管理.
5.使用虚拟托管桌面服务器. mentioned here,例如Amazon Web services.
我需要帮助.据我了解,这可能是非常昂贵的.我有类似的问题:
5a:每个用户是否需要“订阅”他们自己的工作区?这些工作区是否需要MS Access /办公室许可证? (例如,如果Amazons将是40美元/用户/月),或者你可以只使用Access运行时(因此亚马逊只需25美元/用户/月).
5B.每个用户的工作空间是否可以链接到存储在文件服务器上的相同访问数据文件,或者一个工作空间可以链接到另一个工作空间文件.拥有一个fielserver需要付出代价.
6.使用第三方软件.
例如$50 /用户/月EQL Data plugin声称能够在Web浏览器中运行未修改的Access应用程序.
缺点:贵! ?
PROS:可能比上面的其他方法更容易.
7.使用MS Access停止并使用其他语言写入或重写整个数据库.
这始终是一个选择.我的主要问题是,如果您精通Access和VB或C#,将创建相同的应用程序.在Access中比在VB,java,C#(等)中更快.我的Mates在JAVA中编写应用程序,它需要很长时间才能在几分钟内完成我在Access中可以执行的操作.此外,关于Access的好处是,它通常是“最终用户”为自己创建数据库,并为他们提供所需的内容.
8.将数据从Access迁移到SharePoint
除了SO here
您可以从Access到SharePoint(或低成本Office 365)中调整数据大小. SharePoint表现在支持关系数据,因此当您将Access表移动到SharePoint时,支持“基本”主表到子表(以及级联删除)(但是您必须限制为自动编号的PR,并且子记录(外键)必须是一个很长的数字.
根据数据行的大小和数量,上述解决方案是OFTEN,然后将表移动到sql服务器.此设置的一个非常好的功能是您的应用程序可以继续运行,无需任何Internet连接.您找到一些Wi-Fi等的瞬间,然后您的数据同步.
因此,我不会注销SharePoint表的选项,因为它们可以很好地与多种Access应用程序一起工作,包括具有相关表的应用程序.对于那些没有互联网连接的现场笔记本电脑,“离线”模式非常适合.
9.使用teamViewer等远程控制软件,允许使用远程PC,从而使用数据库.一次只允许一个用户!
解决方法
8.将数据表移动到sql Server并保留MS Access前端
>使用Upsizing wizard将共享的Microsoft Access数据库(仅包含表)转换为sql Server数据库.
>因为现在您在Access客户端应用程序中连接到MS sql
>更改表位置(连接字符串现在指向MS sql数据库)
>在您的VBA代码中,手动将包含Access特定语法的SQL查询更新为标准化sql(逻辑 – 升迁向导无法在代码中看到它们,因此无法自动转换它们)
完成.
当然,这可能有一些陷阱,但在我这样做的时候(它是Access 97和sql Server 95),升级过程完成没有任何错误,包括VBA更新的完整迁移在大约半天内完成.
如果您完成此过程,则可以继续使用Access前端,如果您感兴趣,可以慢慢开始重新评估是否要更新到另一个前端.如果你有一些Access程序员,他们可能会对vb.net感到满意,因为VBA→VB.NET比VBA→C#更本地化.我实际上已经完成了它,我对VB.NET非常满意. C#中可以访问的所有尖端技术也可以在VB.NET中访问.
关于sql服务器:您可以使用免费的SQL Server Express版本,直到您对其局限性感到满意为止.目前它是10 GB数据库大小和单cpu(但多核).