Dal*_*ale 5 sql sql-server ms-access sql-server-2005
有谁知道这个错误意味着什么或如何解决它?我正在使用Access 2003和SQL2005.尝试在特定子表单上添加记录时出现.
[Microsoft] [SQL Native Client]强制转换规范的字符值无效(#0)
此MS错误报告描述了相同的消息,但它是SQL Server 6.5中已经解决的错误.
解决:显然目标表上没有PK导致这种情况,它与子表单或来自Access的查询没有任何关系.我甚至不知道没有PK的数据库中有表.将PK添加到目标表解决了它.奇怪的是,通过SQL本机客户端执行时出错的查询字符串相同,通过SSMS执行且没有错误.希望这可以帮助其他遇到过这个奇怪信息的人.
嗯,我会检查访问端的默认文本框.我还会在设计模式下调出链接表,并且您想要检查ms-access在此处假定的数据类型.对于不受支持的数据类型,ms-access通常使用字符串,而sql server可能需要其他内容.
因此,检查主表中的主键(PK),然后检查外键(FK)列的子表中使用的(假设的)数据类型.当我们在此时,检查用于子表单控件中的子/主链接设置的表达式(不是表单,不是子表单,而是表单中用于链接这两个表的子表单控件) ).
如果sql server表中没有timestamp列,则访问中的子表单是敏感的.如上所述检查PK和FK数据类型并确保它们匹配(只需在ms-access中以设计模式显示表 - 您会收到有关设计模式为只读的错误消息,但只是继续,所以你可以检查/查看以确保数据类型匹配).
因此,对于子表,您需要PK,FK和时间戳列(您不必在子表单中显示TS列,但在表中需要它).
ms-access中的子表单是敏感的,如果在sql表中不包含timestamp列,则通常会失败.(访问使用这些行版本列来确定数据是否已更改).