(转)MDB链接SQLSERVER导致写入冲突,头疼的问题,原来错在这里!!
时 间:2011-12-28 18:03:58
作 者:何必见戴 ID:13894 城市:厦门
摘 要:今天遇到一个很有趣的问题,在帮别人解决问题时遇到的
有人用链接表的方式操作后台数据库,当后台数据库是 MDB 是,没出现什么问题,但是当链接的数据库是 SQL SERVER时新增记录后进行修改时就一直出现写入冲突的错误提示,且“保存记录”按钮永远是灰色的。
正 文:
问题:
完整提示为:
而且只要用 ACCESS 界面修改就会永远有这个提示,永远无法解决。
后来又发现了如果在 SQL SERVER 中定义字段为“货币”,然后随便输入一些值,在 ODBC 链接到 ACCESS 以后也无法正常显示。软件版本为 WINDOWS 2003 SP2 英文版+SQL SERVER 2000 英文版+ACCESS 2003简体中文版 |
一开始百思不得其解,但是仔细一看发现,其中一个字段是 bit(SQL Server) 也就是 ACCESS 的 Yes/No。这个数据类型在 ACCESS 与 SQL SERVER 中是不一样的。ACCESS 中 TRUE 是 -1 ,而 SQL SERVER 中 TRUE 是1,需要转换的。问题就出在这里,我实际在修改字段时并没有指定值,但是 ACCESS 自动将其设置为 0 ,也就是 FALSE 。但是用 SQL SERVER 事件探查器查出来可就不同了:
exec sp_executesql N'Update "dbo"."cg_LimitDetail" SET "LimitConst"=@P1 Where "id" = @P2 AND "LimitGroupId" = @P3 AND "LimitConst" IS NULL AND "LimitValue" = @P4', N'@P1 nvarchar(50),@P2 int,@P3 int,@P4 bit', N'33', 3, 2, 0 大家看到,最后一个参数 @P4 竟然是 0 ,但是实际上在 SQL SERVER 中是 Null 。 终于找到问题了,要解决这个问题可以直接在 SQL SERVER 设计表时直接指定 BIT 字段的默认值为 0。
微软MVP huanghai先生在直接用ADO绑定窗体数据源时也遇到上述问题,且即使定义默认值也无法解决,最终解决方案是使用长整。 |
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access选项卡示例】Ac...(09.09)
- 【Access源码示例】按输入...(09.02)
- 【Access日期区间段查询】...(08.29)
- 【Access日期区间段查询】...(08.27)
- Access怎样才能实现日期时...(08.21)
- 【Access定时打开查询】A...(08.19)
- Access生成固定数量的记录...(08.13)
- Access怎样才能实现日期时...(08.12)
- Access利用导航窗体控件对...(08.03)
学习心得
最新文章
- Access表中的字段名、字段标题...(09.19)
- Access快速开发平台--更改“...(09.18)
- 【中秋及国庆优惠】Access培训...(09.15)
- Access如何将日期型的数值转换...(09.14)
- 英文输入法输入数据中存在单引号引起...(09.11)
- 【Access选项卡示例】Acce...(09.09)
- 让Access光标停留在指定的控件...(09.07)
- 关于Access查询条件里使用通配...(09.06)
- Access报表偷懒制作法--Ac...(09.05)
- Access快速开发平台--窗体数...(09.04)