【发布时间】:2020-07-12 18:31:26
【问题描述】:
我已将以前在 Access 中的数据库迁移到 SQL Server,现在我正在重建我的 Access 前端,以便使用无 DSN 链接的 SQL Server 后端。我在时间字段中遇到了新数据输入的问题。我得到的错误是ODBC--update on a linked table...failed. [Microsoft][ODBC Driver 17 for SQL Server]Invalid character value for cast specification (#0)。我假设这与 Access 将数据从 SQL Server 转换为短文本的方式有关,它是 time(0) 数据类型。
我的问题是在 Access 和 SQL Server 中处理“时间”数据的最佳方式是什么?理想情况下,用户会在 Access 中简单地输入数据,例如“0130”,这意味着“1 小时 30 分钟”(我们从不记录秒数)。理想情况下,SQL Server 中的数据将被格式化为某种时间或 datetime/datetime2 格式。
我可以修改 Access 前端或 SQL Server 后端(或两者)的格式或代码——最干净的方法是什么?
【问题讨论】:
-
迁移到 SQL Server 后,您的日期/时间代码应该是零更改,您的表单和 SQL 应该是零更改,甚至对使用日期/时间数据的 VBA 代码进行零更改.如果您必须进行更改,那么您可能会将列迁移到 datetime2 而不是 datetime。如果您在 sql server 上使用 datetime2,则必须使用必须在每个工作站上安装的较新的本机 11(或更高版本)驱动程序。或者使用 SQL 驱动程序中的长时间构建,并使用日期时间数据类型。设计模式下的任何访问链接表 - 检查日期/时间列是否被视为文本
标签: sql-server vba ms-access