以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 按照帮助中“自动编号”代码操作碰到的一个问题(已解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=29363) |
-- 作者:run1973 -- 发布时间:2013/3/5 12:55:00 -- 按照帮助中“自动编号”代码操作碰到的一个问题(已解决) 外部sql数据源,有一个表中的编号列是自动生成编号,格式和帮助中“自动编号”代码一样,如:MG20130305-0001。 测试中发现一个问题,偶尔会在保存时提示有主键约束,即主键值重复,无法保存,可是表中显示的明明就是唯一的编码,难道是我眼花了?!值得说明的是,这个报错信息来自SQL数据库。 因为这个现象不是经常出现,即使出现,打开主表,把编码列的几个编码分别用鼠标左键“点进去”,再保存就好了,就不会出现报错提示。 我百思不解,反复看代码,也看不出毛病。 今天又碰到这个现象,决心把原因找到,我专门把数据库打开,一对比,找到了! 原来,故障发生在把已生成的自动编号记录删除后又添加这一操作上。为方便说明,我按数据变化的步骤说明: 1、新增行,生成自动编号记录,记录行中其它数据正常输入,如此输入多行,保存。 2、数据库中出现了刚保存的几条记录。 3、发现刚输入的记录最后一条有误,删除。新增行,输入,保存,出现来自数据库的主键重复的报错! 4、此时,数据库中,刚才被删除的表记录数据实际还存在,原因找到了,表记录最后一行删除后,数据库未同步更新,表中再次新增行记录的编码就会和数据库原有记录编码冲突,故报错。
原因找到了,貌似在删除按钮中加入个保存命令就可以解决问题。可我总觉得不太满意,请教专家还有其它办法没有?因为,我发现,只要在表中出现冲突的编码单元格双击进入编辑模式,什么都不做再退出,表就可以保存,不再报错。双击单元格也可以同步数据库吗?! [此贴子已经被作者于2013-3-5 14:52:55编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2013/3/5 13:01:00 -- 用这个编号: http://www.foxtable.com/help/topics/1994.htm
或者foxtable也可以考虑改进一下保存顺序,先保存删除的行,再保存增加的行。
其实你删除行后,保存一下,也没有什么关系的。 |
-- 作者:run1973 -- 发布时间:2013/3/5 13:06:00 -- 谢谢,狐狸爸爸中午还加班回帖啊,服务态度不是盖的,呵呵。 我已发动手下员工都来学foxtable,所以这个月还想买套开发版。支持foxtable! |
-- 作者:run1973 -- 发布时间:2013/3/5 13:08:00 -- 哦,对了双击单元格数据进入编辑模式,也可以同步数据库吗?! |
-- 作者:狐狸爸爸 -- 发布时间:2013/3/5 13:14:00 -- 不明白你的意思。 如果你要编辑前同步此行数据,可以在StartEdit事件中设置代码:
e.Row.DataRow.Load()
如果你要保存此行:
e.Row.Save()
如果你要保存整个表:
e.DataTable.Save()
|
-- 作者:run1973 -- 发布时间:2013/3/5 14:47:00 -- 以下是引用狐狸爸爸在2013-3-5 13:01:00的发言: 这个方案最好,在DatarowDeleted事件中写一句e.datarow.save()可以解决问题。
用这个编号: http://www.foxtable.com/help/topics/1994.htm
或者foxtable也可以考虑改进一下保存顺序,先保存删除的行,再保存增加的行。 |