我正在尝试对后端链接到SQL Server的Access 2010应用程序使用打包解决方案。目前,我使用.accdb文件作为前端,我想将我的应用程序分发到其他Windows计算机,但是打包解决方案不起作用。我的软件包包括Access Runtime,因此其前端版本在Runtime上运行,而不是完全Access。但是,一旦应用程序向后端发出请求,该应用程序就什么也不做,因为我什至没有提示输入完整版的SQL密码。我已经读过有关在软件包中包含.dsn文件以确保SQL连接(see here)的安全性,但是通过其他教程创建.dsn文件的步骤并未产生任何结果。有人会知道如何正确生成.dsn文件,或者我现在做错了什么吗?
(是的,我了解到在2019年使用Access 2010几乎是个玩笑,但出于测试目的,我正在这样做。我计划将来完全重新构建Angular中的前端。)>
另一个不相关的说明...将前端作为.html文件托管是一个更好的主意,例如通过“发布到访问服务”过程吗?我确实读过Access Services于去年停产,所以那不可能吗?
编辑:这不是“ DSN较少连接(MS Access to SQL2016)”的重复,因为A)我想利用DSN连接,而不是DSN少,并且B)我在代码中没有使用连接字符串来与SQL挂钩。
答案 0 :(得分:1)
您应该能够仅创建FILE dsn,链接表,然后将已编译的accDE分发到每个桌面。
但是,您使用了什么SQL odbc源提供程序?如果使用SQL Server ODBC提供程序,则默认情况下,每台计算机上都会安装该提供程序。
但是,如果使用Native 11(或更高版本)链接,则默认情况下不会在每个工作站上安装该驱动程序。因此,我强烈建议您创建FILE dsn(而不是用户或系统DSN),并使用该链接来链接表。 (Access将为您创建无DSN链接)
并且您不应在应用程序中看到登录提示。这表明您忘记或错过了“保存密码”选项。
因此,我将重新链接您的表,创建一个新的FILE DSN。并且,如果您使用链接表管理器,请确保检查提示是否提供新位置以强制创建新DSN。如果您只是重新整理,那么在链接过程中就没有机会单击“保存密码”选项。
那么,您正在使用什么odbc驱动程序?本机11或更高版本更好,但默认情况下未在每个工作站上安装它们。但是,此处需要注意,因为较旧的sql驱动程序不支持较新的datetime2格式。如果使用了这些较新的sql列类型,它们将在Access中作为字符串数据类型返回,并造成许多麻烦。
因此,首先,我将使用FILE dsn重新链接。 确保在重新链接期间检查了保存密码。
然后,将accDB编译为accDE,然后进行分发。您实际上并不需要使用软件包向导,因为一旦每个工作站都安装了运行时,那么将accDE复制到每个人的计算机上就可以正常工作了。 accDE和程序包向导之间没有特殊连接。一旦安装了运行时,就可以简单地单击所有mdb,accDB和accDE来启动+运行。因此,为了进行测试,您可以跳过软件包向导,只需将accDE复制到目标计算机,单击它,然后查看它是否有效。
此过程中的提示和复选框是这样的:
因此,您必须选中该框以保存密码。请注意,只有在创建新的文件dsn时,才会显示此对话框。