使用MS Access作为MySQL数据库后端的前端的问题?

两个用户希望共享最初使用MS Access编写的相同数据库,而不会通过单个MDB文件彼此冲突。

我使用它的迁移工具包将表格从简单的MS Access数据库移动到MySQL (顺便说一下,它工作得很好),并将Access设置为通过ODBC链接到这些表。

到目前为止,我遇到了以下情况:

  • 无法在没有主键的表格中插入/更新/删除行(这里并不令人意外)。
  • MS Access中的AutoNumber字段必须是主键,否则它们只会以MySQL中的整数列结尾(natch,为什么它不是PK?)
  • 这些表已迁移到MySQL的InnoDB表类型,但Access关系未成为MySQL外键约束。

一旦数据库被使用,我能期待其他问题吗?特别是当两个用户在同一张桌子上工作时?

0

5 答案

如果只有两个用户,那么如果将.mdb放在共享驱动器上,Access应该可以做得很好。

你有没有尝试过,而不是假设它会成为问题。

我相信推荐的Access最大并发用户数是5,但有时候我已经推动了它,并且永远不会失效。

另一方面,我曾经在单用户环境(我)中使用Access作为MySQL的前端。这是一个非常不愉快的经历,我无法想象它会变得更好用两个用户。

0
额外

I know this doesn't answer your question directly, but it might be worth checking out the SQL Server 2005 migration tool for Access. I've never used the tool, but it might be worth using with SQL Server 2005 Express Edition to see if there are the same issues as you had with MySQL

0
额外

一般来说,这取决于:)

当应用程序刚刚通过表单更新数据时,我没有遇到太多问题。当同一行由多个用户更新时,您可能会收到警告/错误;但Access似乎一直在不断更新其实时记录集。

如果Alice已经使用365记录并且Bob更新它,然后Alice试图用她的更改更新它,问题可能会发生。我记得,爱丽丝会得到一个神秘的错误信息。如果你捕获这些错误并且至少给他们提供一个更友好的错误信息,那么用户会更容易。

当我通过RecordSet编辑VB代码中的记录时,我遇到了更多问题,特别是在编辑表单上的相同数据时。这不一定是多用户问题;然而,你有几乎相同的情况,因为你有一个用户有多个连接到相同的数据。

0
额外

我有一个类似的应用程序:一个MS Access前端到MySQL后端。这是一个巨大的痛苦,我最终写了一个Win32前端。从我的头顶来看,我遇到了以下问题:

  • ODBC链接的开发似乎很久以前就停止了。有各种不同的版本漂浮 - 很混乱。 ODBC链接不支持Unicode / UTF8,我记得还有其他一些问题(尽管有些可以通过仔细配置来克服)。
  • 您可能想要手动调整您的数据库架构以使其与MS Access兼容。我发现你已经发现了所需的代理键(即int主键): - )
  • 您应该记住,您可能需要使用传递查询来对MySQL数据库执行更复杂的SQL操作。
  • 小心使用大量的VBA,因为这往往会破坏你的前端文件。定期压缩数据库(使用主菜单,工具|数据库实用工具|压缩和恢复,或类似的东西---我使用的是荷兰语版本),并且制作很多备份是必要的。
  • 访问通常会导致大量网络流量。就像真的很大。我一直无法找到解决方案。建议您使用网络监视器,如果您想关注它的话!
  • Access坚持将布尔值存储为0 / -1。恕我直言,0 / + 1更有意义,我相信它也是MySQL做事的默认方式。不是一个大问题,但如果你的复选框不起作用,你应该确认这一点。

一种可能的选择是将后端(与数据)放在共享驱动器上。我记得这是有据可查的,也是在帮助中。您可能需要查看关于拆分为前端和后端的一些常规建议和<�在启动时自动重新连接到后端的代码;我还可以向您发送更多示例代码,或将其发布到此处。

否则,你可能也想考虑MS SQL。我没有这方面的经验,但我认为它与MS Access一起工作的更好!

0
额外

加雷思辛普森认为:

如果只有两个用户,那么Access   应该做得很好,如果你把   .mdb在共享驱动器上。

呃没有。没有多用户Access应用程序,每个用户都不应该拥有前端的专用副本。这意味着每个用户应该在他们的工作站上有一个MDB。为什么?因为前端的对象不能很好地共享(几乎没有Jet数据表,尽管在这种情况下没有任何使用MySQL作为后端)。

Gareth Simpson继续说道:

我相信建议的最大值   Access的并发用户数是5   有时候我已经把它推过去了   并且永远不会失魂落魄。

不,这是完全不正确的。 MDB用户的理论限制是255.这当然不现实,当然,一旦你达到约20个用户,你必须仔细编程你的Access应用程序才能正常工作(尽管你需要在Access-to- Jet应用程序与您为了使任何服务器数据库应用程序高效而做的事情相同,例如,检索最小的可用数据集)。

在这种情况下,由于每个用户都应该拥有前端MDB的单独副本,因此访问/ Jet的多用户限制完全不相关。

0
额外