Database MS Access 2003拆分数据库,其中FE上有一个表

Database MS Access 2003拆分数据库,其中FE上有一个表,database,ms-access,split,Database,Ms Access,Split,我相信我正确地理解了拆分数据库假设所有表都在后端,而其他所有表都在前端 这是我的问题。我在一家大公司工作,全国各地的人都在使用数据库。大约60-65人。但通常同步不超过4或5次 我有一个静态表,用作表单上的查找表,该表单向主表提供数据。如果我在BE上有一个静态表,那么一些人的表单加载时间(取决于他们与服务器的距离)可能超过两分钟。如果我把这个静态表放在FE上,加载时间会快4-5倍 我的问题是,;使用静态表会不会对我的数据库造成任何其他负面问题,或者只是“建议”所有表都在be上?我的思考过程是因为

我相信我正确地理解了拆分数据库假设所有表都在后端,而其他所有表都在前端

这是我的问题。我在一家大公司工作,全国各地的人都在使用数据库。大约60-65人。但通常同步不超过4或5次

我有一个静态表,用作表单上的查找表,该表单向主表提供数据。如果我在BE上有一个静态表,那么一些人的表单加载时间(取决于他们与服务器的距离)可能超过两分钟。如果我把这个静态表放在FE上,加载时间会快4-5倍


我的问题是,;使用静态表会不会对我的数据库造成任何其他负面问题,或者只是“建议”所有表都在be上?我的思考过程是因为我在FE上获得了如此巨大的性能,如果我需要更改静态表,我将只分发一个新的FE。这是合理的逻辑吗?

当然是。如果它只是一个静态查找表,并且每次从后端加载它都会花费太多的时间,那么将它放到前端就完全可以了

如果不想在每次表更改时分发新的前端,可以将表放入后端,并让每个前端在启动时导入表:

'run this in the frontend on startup
DoCmd.DeleteObject acTable, "Your_Table"
DoCmd.TransferDatabase acImport, "ODBC", ";DATABASE=c:\backend.mdb", acTable, "Your_Table", "Your_Table", False

(当然,您必须适当地更改表的名称和到后端的路径)

您的静态表可以位于前端。您还应在FE中包括每个不变且属于“发布”一部分的表,例如:仪表板菜单表。

不管怎样,如果你有这样的“漫游”用户,我会认真考虑把数据移动到SQL Server,这样可以真正减少网络传输,提高性能。我现在使用严格限于用户的表来实现这一点,这些表不需要保存在be数据库中。然后,如果需要添加新数据,只需向用户发布一个新FE即可

我认为这样可以使BE的维护变得更容易,因为这样您就不会在BE中包含静态/不必要的表。我是这样做的,一些静态表进入FE数据库,一些进入SQL server数据库


这实际上取决于您认为什么对您的用户和维护更容易

+1对于启动时导入的建议,但是如果加载表单拉取数据需要2分钟以上,则在前端运行导入可能会严重减慢启动时间。我几乎希望有人会这样说。嗯,这取决于:-)我们不知道在主窗体上如何使用该表,当该表位于后端时,加载该表需要两分钟。也许通过网络导入整个表比在上面运行一些查询要快——谁知道呢。如果表格经常改变,如果他不需要经常发布新的前端,也许他可以忍受更长的启动时间。这一切都取决于…太好了,谢谢你的反馈,我真的很喜欢在启动时导入查找的想法。它不是一个大表,但是使用它的表单后面有一些代码,因为它是链接的,所以它会减慢速度。好主意…谢谢@德伦宁·加夫尼:如果你喜欢我的答案,你可以通过接受它来表达:-)