hur.cn - 华软网

 热门搜索

关于Datawindow数据保存问题(提示插入重复键,即主键冲突)

  作者:未知    来源:网络    更新时间:2019/1/25
问题描写:
    录入窗口w_main中有dw_1,dw_1对应的表是table(lsh_id,scddh,fxzl,fxps,user_name,updatetime),其中scddh是主键。在w_main要实现的功能是增加、删除、保存、修改等4个功能。其中增加、删除、保存我分别用wf_zdd()、wf_delete()、wf_save()来实现。修改功能是要在dw_1录入时直接实现的。
    dw_1录入时有两种情况:一是新记录(第一次录入将要保存的记录);二是已经保存过的记录。由于在一次录入数据进程中,两种数据是同时存留的,如果是新记录就直接录入,如果是旧记录则直接检索出来(需修改时修改,不需修改时继续录入下一条记录),等记录都录完后保存。
    我的问题是如果有旧的记录则提醒我插入重复键。
    请问这类问题该怎么解决?
------华软网友回答------
第一:尽量不要控制各行的modified属性:如修改成datamodified等.
第二:在保存之前做一个函数举行判断,
  如果允许修改主键,则要全数判断修改的数据.其中包括新建newmodified的和修改的datamodified.
这个就对照复杂,建议不要这样.
如果不允许修改主键,就判断新建的行中的主键是否存留于数据库表即可,存留则不允许保存.
------华软网友回复------
你的原有记录是如何获得的?如果是RETRIEVE(),应该不会出现这个问题,如果是其它措施获得的,那你要注意用GETITEMSTATUS()函数看看行的状态是否是NEWMODIFY!。另外,还要注意FILTER区内的记录,PB在UPDATE时,FILTER区中的行也要提交的。
------华软网友回复------
看了半天
也没看明白...
预计一下
你要是知道什么时候更新新记录,
什么时候更新旧加where 主键 = 值
这个值能够在前面编辑dw里值时候取得
------华软网友回复------
修改DW的UPDATE属性,改成先删除后插入即可。
------华软网友回复------
保存的时候运用sql语句查询一下数据,看看要保存的数据是否存留
如果存留就检索出来
不存留就执行保存代码
------华软网友回复------
你是否是写了这样的语句: dw_1.update(false, false) 而且最后没有调用 resetupdate()函数?如果是,两个方法:
1、 dw_1.update(true, true) 就能够了,最重要的是后面的参数一定要是 true.
2、 照旧 dw_1.update(false, false)或dw_1.update(true, false), 但更新成功后要调用 resetupdate()。

------华软网友回复------
to:amberleaf(笨小孩) 
主键是不允许修改的,只可修改其余列的值;
你说的各行的modified属性我没看懂

 to:zhoujie_69() 
我是通过select出来再setitem的


to:myvicy(热情肠的人) 
我就是这样设的可是没有用

to:liugang78(woods) 
我是要实现如果已经存留那么能够检索出来更改,而且更改后能够跟新行一起保存。

to:iamx(阿麦)
我用的是dw_1.update()<>0
不知道这个默许的是哪种情况


------华软网友回复------
to:iamx(阿麦)
我用了你的措施可是照旧不行
------华软网友回复------
不是很明白你的问题,你是说现在出现了“插入重复键”的问题要解决照旧要实现“提醒我插入重复键”?
------华软网友回复------
出现了“插入重复键”的问题
------华软网友回复------
dw_1.update()<>0
不知道这个默许的是哪种情况
//////////
默许的是TRUE
去找个群加吧,人家帮你都容易些
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。