[讨论]关于FOXTABLE的保存,被 “保存机制” 杀掉 近24小时!!
前几天做了一个小软件!用到了一条SQL UPDATE 语句,问题来了,客户说有时有些数据找不到!
于是我从昨天查,一直检查到今天早上!被 “保存机制” 杀掉 近24小时!!
先谈 大家习惯的保存经验【不管内部还是外部数据表】:
Datatable 的 save 应该保存的是 datatable 里面 加载的 所有数据,不管修改不修改。
table 的save 应该保存的是 table 里面 filter 所有数据,不管是否修改。【table的save帮助里没有】
datarow的save 应该保存的的行的数据,不管是否修改。
如果开发者 全部保存 考虑效率问题,狐表提供了行的状态判断 RowState ,
可以根据行的状态利用循环语句提高效率!!
看到这里,您会说,没错啊!!!那你会和我一样被杀!!
看看我的遭遇,我用的SQL数据表,我中间用到了一句SQLcommand 的 update 直接更新了后台数据 列名:编辑人。
然后,保存!!【举个例子】
If e.OldRange.RowSel <> e.NewRange.RowSel '如果选择的是不同的行
If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) '获得原来选择的行
r("编辑人")=""
r.Save() '保存之
End If
End If
问题来了, r("编辑人")="" 没保存!!
于是记录就被锁死了!!!
一直找问题!!查了很多的东西和例程!终于翻看到帮助里有这句活!!
这里涉及到Foxtable的保存机制:在保存某行之前,系统会进行一个判断,如果此行所有列内容和最初完全相同,则跳过此行,以提高保存效率。
不知狐爸怎么想的,上面我也提到了
如果开发者 全部保存 考虑效率问题,狐表提供了行的状态判断 RowState ,
可以根据行的状态利用循环语句提高效率!!
我们从帮助开始学习,已经习惯了正常的保存机制,狐爸突然来这一手!有用吗??还是多余??
说句笑话:有点被杀的感觉。
写出来是告诉狐友,小心了,不规范的帮助里的每一句话,要小心看!
[此贴子已经被作者于2013-10-13 8:41:21编辑过]