我有一个连接到SQL Server后端的MS Access前端。我的一些用户拥有
SQL Server本机客户端11.0
驱动程序,其余只有默认驱动程序
SQL Server
驱动程序。是否可以使用“本机驱动程序”(如果存在)使用表,如果不使用标准SQL Server驱动程序,则可以使用这种方法?
答案 0 :(得分:1)
您可能想扩展。 “旧版” Sql驱动程序和本机驱动程序都能够提取和呈现十进制类型。
您可以通过将链接的表(从访问权限)翻转到设计视图中来“测试”。对“只读”提示回答“是”,现在查看列和设置的数据类型。
使用“较旧的”驱动程序,您应该看到以下内容:
因此,访问肯定可以呈现并认为该列是正确的,而我使用的是“旧” sql驱动程序。
但是,要回答您的问题吗?您可以在启动时运行一些重新链接代码,但是在没有VBA代码重新链接表的情况下,当然没有办法使驱动程序之间具有Access自动“翻转”功能。因此,您的代码将检查是否缺少“ 13”,然后使用较旧的SQL Driver运行VBA重新链接代码。
但是,我强烈建议反对这种方法。要么坚持使用本机13,要么坚持使用SQL驱动程序。如果要采用本机13,则只需确保已安装驱动程序。
您永远都不想在驱动程序之间切换,因为这会引入各种错误,四舍五入以及许多问题,这些问题很可能导致应用程序失败,或者担心您输入了错误的数据格式。您所有的构建,测试,调试都将由13完成,现在您需要更改规则(您不知道一切是否都适用于较旧的驱动程序,因此在构建应用程序时不会捕获错误等)。
因此,从理论上讲,您可以在Access启动时检查本机13个驱动程序,如果找不到,则必须检查链接,并运行一些VBA代码以使用较旧的驱动程序。
但是,在执行此操作之前,我将尝试弄清楚Access为什么看不到小数点列-它应该(使用任一驱动程序)。
但是,使用较旧/原始sql驱动程序的较新的datetime2列不起作用。
如果使用“较旧”的驱动程序,则访问将看到日期/时间列为字符串,这将真正弄乱任何试图输入,查询或使用日期/时间值的表格或VBA代码。
因此小数点应该可以,但是datetime2列不能用于较早的驱动程序。
驱动程序无法自动为您翻转,但是可以使用启动时的Access + VBA代码重新链接,但是我不建议您这样做。