您的位置:首页 > 其它

数据窗口只保存编辑不保存删行

2010-05-14 16:29 260 查看
在某些情况下,可能需要数据窗口只保存编辑不保存删行。

例如,有一个卡片表,先注册后发卡。注册时添加记录到表中并保存,发卡时将已注册卡发给员工。发卡时可以删除记录。但这时候删除的记录不能从数据库中删除,所以保存时就不能直接对数据窗口update(),而要采用一些变通的办法。

今天就出现了这种情况,下面是解决办法。如果有更好的办法再补充。

datastore ldst_1//定义一个用于保存的datastore

ldst_1 = create datastore

ldst_1.dataobject = dw_edit.dataobject//dw_edit是显示的数据窗口

ldst_1.settransobject(sqlca)

//将显示的记录复制到datastore,复制后ldst_1的行状态为newmodified!

dw_edit.rowscopy(1,dw_edit.rowcount(),primary!,ldst_1,1,primary!)

for ll_i = 1 to ldst_1.rowcount()

ldst_1.setitemstatus(ll_i,0,primary!,datamodified!)//行状态修改为datamodified!

ldst_1.setitemstatus(ll_i,'kp_person',primary!,datamodified!)//'kp_person'为用户修改列,此处必须修改其状态

//注意:以下赋值项要写到setitemstatus之后

ldst_1.object.kp_lb[ll_i] = '2'//卡类别(2用户卡)

ldst_1.object.kp_fkr[ll_i] = gl_userid//发卡人

ldst_1.object.kp_fkrq[ll_i] = f_getserverdate()//发卡日期

next

//保存

sqlca.autocommit = false

if ldst_1.update() = 1 then

commit;

sqlca.autocommit = true

messagebox("提示","保存成功!")

else

rollback;

sqlca.autocommit = true

messagebox("提示","保存失败!")

return -1

end if
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: