我有一系列访问2002“前端/后端”的应用程序,它们都是相互关联的。例如,应用程序A将表与应用程序B连接,反之亦然。
这些应用程序正处于一个由于体积大、腐败程度高而需要日常压实和修理的阶段。此外,为了使应用程序能够正常工作,我必须使用Access 2002在虚拟环境中进行更改。我还需要重新安装"Access运行时2010-32位“,并在每次更改应用程序时在每个工作站(Windows10)上复制访问文件(.mde)。
@Gustav这是一个临时选项(6个月到18个月),因为客户希望使用SQL数据库找到一个完整的解决方案。所研究的解决方案是可配置的,并且已经具有SQL数据库架构。
我已经完成了将表单、表、查询和模块传输到Access 365的测试,但是我在VBA代码中有错误。所有业务规则都在VBA代码中编码。我还将表传输到Server 2017,但由于Access 365前端不再使用DAO引擎,我恐怕不得不更改大量的VBA代码。
事实上,更清楚的是,我不知道是否需要将前端改为Access,因为这是一个临时的解决方案。
也许,我应该通过消除大表中的数据历史来使软件保持在呼吸器下。客户做出决定的时间。找到“甜蜜点”,让我可以删除并继续维护它,而不必担心腐败,因为我很难看到迁移到365前端的大量增加。你认为如何?
我已经建议迁移新版本的tables 2019年中的应用程序和表,甚至迁移到Server上。然而,就目前而言,我必须将应用程序放在呼吸器上,并继续每日压实,直到作出决定为止。
我想知道从Access 2002迁移到Access 2019版本是否有好处,因为它知道2GB访问的总限制。知道VBA应用程序和代码使用DAO方法,他必须迁移到SQL数据库的主要约束是什么?
@艾伯特·D·卡拉尔我真的很喜欢你的回答。我很快就会做出决定的。不过,我还有两个问题要问。也许,你能在这个问题上指导我吗?
最近有两件事困扰着这些应用程序的宁静。
1-由于一个未知的原因,访问应用程序群中的一个应用程序由于运行时3027:无法更新:数据库或对象是只读的,而被阻塞了一段时间。问题是,一些用户忽略了此错误,并继续执行导致数据转移的任务。我不得不带备份副本回去,因为有些表没有更新。
更仔细地看一下VBA代码中的错误,我注意到这些错误都来自DAO Recordset.Edit方法,其中包含带有多个连接的查询。
通过使用DoCmd.RunSQL修改Edit方法并将查询从Select更改为Update,我成功地解决了这个问题。然而,整个方法以前运作得很好。你能向我解释一下这个错误的原因吗?
2-最初的开发人员不一定使用最佳实践来设计应用程序(没有自动编号,有些表没有主键,没有外键),因此,如果迁移到Server数据库,恐怕需要执行新的设计。或者为了节省时间,因为这个解决方案将在18个月后消失,我只应该复制Server中的不良实践,并祈祷它不会导致更多的故障。你的专业方法是什么?
谢谢
发布于 2019-08-15 03:49:25
有几件事:
更新您的mde或accDE前端?这是一个简单的副本,每个工作站。您不需要每次重新安装运行时。在部署到每个工作站的特定应用程序(mde/accde)之间没有“特殊”连接。
换言之:
如果您用VB6编写软件,那么您需要安装VB6运行时(但只安装一次)。之后,您可以简单地将应用程序复制+部署到每个工作站。
如果您再次使用.net编写软件,则必须确保在每台计算机上都安装了正确的.net框架。一旦完成,您就可以通过一个简单的副本更新您的软件到每个工作站。
使用访问运行时也是如此。安装完毕后,您可以简单地将任何mde/accDE复制到该工作站,双击它,它就会运行。因此,运行时不会连接到复制到工作站的任何特定数据库。一旦安装了运行时,就可以很容易地为前端编写一些自动更新代码,以“检查”某个版本号,然后复制新更新的前端。有很多方法可以做到这一点--即使是一个简单的批处理文件在这里也是足够的。
因此,在目前的几乎所有情况下,您将不得不“一次”安装所需的运行时和支持库。.net、旧的VB6程序或Access就是这种情况。
如何将访问表数据迁移到SQL服务器?
您应该能够简单地将表数据迁移到SQL服务器。现在将应用程序表从旧的access后端链接到SQL server。
此时,99%的VBA甚至DAO记录集代码都应该可以正常工作。
没有必要(甚至是一个很好的理由)使用您拥有的DAO代码转储-它应该像以前一样工作,只需很少的修改。
关于唯一的更改是对这样做的代码:
Dim strSQL As String
Dim rst As DAO.Recordset
strSQL = "select * from tblCustomers where City = 'Edmonton'"
Set rst = CurrentDb.OpenRecordset(strSQL)
' above for SQL server becomes:
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)您甚至可以使用(SSMA)完整地迁移具有索引和表关系的表。您可以在这里找到这个非常棒的工具:
https://www.microsoft.com/en-us/download/details.aspx?id=54255
因此,在将数据迁移到SQL服务器之后,大约99%的现有表单和VBA代码将像以前一样工作。
发布于 2019-08-14 13:02:39
可能什么都没有。以Access 2019/365打开数据库,并以2007 (accdb)格式保存数据库,并签出。
至于发行版,您可以使用脚本和快捷方式使其完全自动化。我的文章对此作了全面解释:
如果您没有帐户,浏览到链接:阅读全文。
在将所有共享表移动到Server后端时,努力获得确认。
https://stackoverflow.com/questions/57494737
复制相似问题