起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1850|回复: 69

请问所谓的重复键问题是什么问题,如何解决**

[复制链接]
发表于 2008-6-20 10:55:37 | 显示全部楼层 |阅读模式
自从在业务信息beforePost里面写了个sql语句以后,修改数据网格里的数据,然后再保存时就报这个错,如图
请问这个错误是怎么引起的,又如何解决呢、
谢谢

重复键.jpg

47.88 KB, 下载次数: 278

回复

使用道具 举报

发表于 2008-6-20 10:58:30 | 显示全部楼层
你改哪个字段时会错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 11:06:22 | 显示全部楼层
所有的字段挨着试了一遍,都是这个错
也就是说,现在数据网格里面的数据修改后根本无法保存
回复 支持 反对

使用道具 举报

发表于 2008-6-20 11:15:05 | 显示全部楼层
看来那个SqL执行的效果不太对,再想想别的办法实现吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 11:15:41 | 显示全部楼层
@_@
回复 支持 反对

使用道具 举报

发表于 2008-6-20 11:17:48 | 显示全部楼层
不在@_@,在想办法。。。。。。
回复 支持 反对

使用道具 举报

发表于 2008-6-20 11:52:11 | 显示全部楼层
不用原来的方法了,注释掉原来的代码。
1.用表格显示的时候,用路线序号来排序
2.插入记录时,在AfterPost事件中,记下当前插入的区域路径ID和路线序号,对数据集循环,对大于等于当前路线序号的都加1(除当前区域路径ID之外)
3.删除时,可以不调整序号,也可以参考上面方法进行整理序号。
4.在保存后(AfterApplyUpdates事件),用Qurey读取路线Id的所有路线序号,然后逐个赋值(从1到N的序号),实现连续的效果。然后刷新数据集界面显示。

试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 14:53:28 | 显示全部楼层
上面的看的有点迷糊
在保存后(AfterApplyUpdates事件),用Qurey读取路线Id的所有路线序号,然后逐个赋值(从1到N的序号),实现连续的效果
请问这个要做什么?是不是之前对序号进行排序之后,数据表里的纪录就是按照原来序号递增的顺序排列的?
如果不用管序号是否连续,只保证插入后,原来后面的序号能够+1,是不是需要做的就是
1 在afterPost里面对大于等于当前路线序号的都加1(除当前区域路径ID之外)
2 在保存后(AfterApplyUpdates事件),刷新数据集界面显示。
所谓的刷新,是不是就是
DataSetQYLJSJJ2.ApplyUpdates;
  DataSetQYLJSJJ2.Refresh;
回复 支持 反对

使用道具 举报

发表于 2008-6-20 15:06:01 | 显示全部楼层
1.请问这个要做什么?是不是之前对序号进行排序之后,数据表里的纪录就是按照原来序号递增的顺序排列的?
答:与显示的排序无关。用Qurey读取路线Id的所有路线序号,也需要按路线序号排序。这样,就算中间有断号,赋完值,也是连续的。


2.如果不用管序号是否连续,只保证插入后,原来后面的序号能够+1,是不是需要做的就是
  1 在afterPost里面对大于等于当前路线序号的都加1(除当前区域路径ID之外)
  2 在保存后(AfterApplyUpdates事件),刷新数据集界面显示。

答:对,数据集刷新:  DataSetQYLJSJJ2.Refresh
如果不管是否连接,就不用做第一条。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 15:37:20 | 显示全部楼层
afterPost里面写了执行+1的sql语句
DataSetQYLJSJJ2.Connection.ExecuteSQL('update QYLJB set XH=XH + 1 where QYLJB.XLID='''+DataSetXZXLSJJ.FieldByName('XLID').AsString+''' AND XH >= ' + DataSetQYLJSJJ2.FieldByName('XH').AsString);
AfterApplyUpdates里面写了刷新
DataSetQYLJSJJ2.Refresh
结果就是,连新增纪录保存的时候都会报原来那个错了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 12:25 , Processed in 0.041857 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表