以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  _SortKey 值如何不重复  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=6772)

--  作者:shixia
--  发布时间:2010/4/23 20:00:00
--  _SortKey 值如何不重复
我用Access外部数据源,表中有_SortKey列,每次加载表时只是按条件部分加载,向表中写数据是用一个窗口,窗口中控件没有与表中列关联,而是在“保存”按钮里写如下代码:

Dim s1 as Date =e.Form.Controls("DateTimePicker1").Value

……

Tables("表A").AddNew()

Dim dr as row =Tables("表A").Current

dr("列一“)=s1
 
……

Tables("表A").Save()

这样写结果是:每次新添一行并保存后,_SortKey值都是一样的。后来我把 Tables("表A").AddNew() 换成Syscmd.Row.AddNew()后_SortKey值又开始递增,不重复了。请问这是什么原因,难道Tables("表A").AddNew() 和Syscmd.Row.AddNew() 功能不相同。
[此贴子已经被作者于2010-4-23 20:01:38编辑过]

--  作者:程兴刚
--  发布时间:2010/4/23 20:10:00
--  
由于后来增加了插入行功能,估计导致了Tables("表A").addnew()出现bug,因为Tables("表A").addnew()无法事先判断没有加载的行,而导致_SortKey列在table新增的行和未加载的行的值重复。

        建议贺老师改进,_SortKeytable生成值直接到后台比较,按需输入值。
--  作者:mr725
--  发布时间:2010/4/23 20:10:00
--  
我测试都是递增的,没有重复的_SortKey值,再说,_SortKey也不可能出现重复值吧。 不好意思我时在内部表测试的。
[此贴子已经被作者于2010-4-23 20:11:56编辑过]

--  作者:程兴刚
--  发布时间:2010/4/23 20:14:00
--  
只有部分加载才会出现。
--  作者:shixia
--  发布时间:2010/4/23 20:21:00
--  
应该算是一个bug,请狐爸看看
--  作者:blackzhu
--  发布时间:2010/4/24 7:14:00
--  
以下是引用程兴刚在2010-4-23 20:14:00的发言:
只有部分加载才会出现。

哦,怪不得呢,昨日我新增行没有按我的意思增,原来是加载数据再新增会有bug.


--  作者:狐狸爸爸
--  发布时间:2010/4/26 17:52:00
--  
我看看怎么回事
--  作者:mr725
--  发布时间:2010/4/26 18:37:00
--  
应该将加载进来的最大_SortKey值,和数据源中最大的_SortKey值比较,增加行时取两者更大的值+1。
另外,如果经过排序后,在当前行插入行时,刚好碰上上一行是两者最大值时(或者当前行和上一行的_SortKey不是连续的),不知插入的行的_SortKey值怎么来确定了···
--  作者:狐狸爸爸
--  发布时间:2010/4/26 20:35:00
--  
下次不会这样了
--  作者:shixia
--  发布时间:2010/6/15 10:29:00
--  

狐爸,这个问题好象还没有解决好哦