有两种可能会不能保存 1. UpdateMode 的经典问题,试试 delete 是否可以,如果也不行你就是这种情况 有三种 UpdateMode, 快找本书看看, 默认是 upWhereAll, 表示记录的所有老值用于定位原始记录,upWhereChanged 表示只有改动过的记录的老值才被用于定位原始记录(你可能要设成这个),upWhereKeyOnly 表示只有指定的 key 用于定位原始记录2. 在这个表中使用了触发器 我不知道这算不算是MSSQL 的一个bug, 但的确如此,当触发器更新记录后,它会影响 effect records 全局变量,而MIDAS 是这样认为的: 0 record changed by another user, > 1 effect more than one record (这可以设DataSetProvider 为允许更新多条解决), 所以触发器应小心使用,至少应让最后一条语句更新一条记录。不知道说得是否有点让你无法理解.
用sql server语句绝对没有问题
不会出问题的
的情况,主从表在应用服务器是用两个ADOQuery1连接的。
引用来处理数据跟新,问题是出在中间层的功能对象那里了。
这类问题不会是客户段的问题,你把数据对象的providerdatasetResolvetoData设成True
让Query自己写SQL出来数据看看效果,
老大单部调试服务器,一般都可以查到问题的。
1. UpdateMode 的经典问题,试试 delete 是否可以,如果也不行你就是这种情况
有三种 UpdateMode, 快找本书看看, 默认是 upWhereAll, 表示记录的所有老值用于定位原始记录,upWhereChanged 表示只有改动过的记录的老值才被用于定位原始记录(你可能要设成这个),upWhereKeyOnly 表示只有指定的 key 用于定位原始记录2. 在这个表中使用了触发器
我不知道这算不算是MSSQL 的一个bug, 但的确如此,当触发器更新记录后,它会影响 effect records 全局变量,而MIDAS 是这样认为的: 0 record changed by another user, > 1 effect more than one record (这可以设DataSetProvider 为允许更新多条解决), 所以触发器应小心使用,至少应让最后一条语句更新一条记录。不知道说得是否有点让你无法理解.
这应该是Midas的问题,具体机制还没有时间去研究,可先将就用着。
clientprovider1.edit;
...
clientprovider1.ApplyUpdates(-1);