D
doggo
Unregistered / Unconfirmed
GUEST, unregistred user!
问题的环境:
三层结构,
中间层为ActiveX Library + Transactional Object(Requires a transaction),
通过DCOM连接,访问数据库的接口为ADO 2.5,后台数据库为sql server 7.0。
ADO采用Microsoft OLE DB Provider for ODBC Drivers。
问题:
数据库中有一个表A,表中又一个字段FModifyDT为DateTime类型,创建表时对该字段
指定默认值为CURRENT_TIMESTAMP(也就是getdate()),在客户端添加一条记录一切正常,
随后对该记录随意进行修改,然后用ApplyUpdates(0)进行保存时报错,出错信息为“键列
信息不足,操作影响到多行”。即便重新启动客户端应用程序对于这条记录进行修改,
都会报错。后来发现只要通过sql server的Enterprise Manager对于FModifyDT的值随便
修改一下(例如简单的修改一下秒,数值不变都可以,只要执行一次存盘操作)保存后再
通过客户端应用程序进行修改就一切正常了。另外在增加新记录时给FModifyDT指定一个值
也不会出问题。
经过试验在两层的C/S结构中不会出现类似的问题。
三层结构,
中间层为ActiveX Library + Transactional Object(Requires a transaction),
通过DCOM连接,访问数据库的接口为ADO 2.5,后台数据库为sql server 7.0。
ADO采用Microsoft OLE DB Provider for ODBC Drivers。
问题:
数据库中有一个表A,表中又一个字段FModifyDT为DateTime类型,创建表时对该字段
指定默认值为CURRENT_TIMESTAMP(也就是getdate()),在客户端添加一条记录一切正常,
随后对该记录随意进行修改,然后用ApplyUpdates(0)进行保存时报错,出错信息为“键列
信息不足,操作影响到多行”。即便重新启动客户端应用程序对于这条记录进行修改,
都会报错。后来发现只要通过sql server的Enterprise Manager对于FModifyDT的值随便
修改一下(例如简单的修改一下秒,数值不变都可以,只要执行一次存盘操作)保存后再
通过客户端应用程序进行修改就一切正常了。另外在增加新记录时给FModifyDT指定一个值
也不会出问题。
经过试验在两层的C/S结构中不会出现类似的问题。