现在的位置: 首页 > 综合 > 正文

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

2018年02月07日 ⁄ 综合 ⁄ 共 1013字 ⁄ 字号 评论关闭

在某些情况下,可能需要数据窗口只保存编辑不保存删行。

 

例如,有一个卡片表,先注册后发卡。注册时添加记录到表中并保存,发卡时将已注册卡发给员工。发卡时可以删除记录。但这时候删除的记录不能从数据库中删除,所以保存时就不能直接对数据窗口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

抱歉!评论已关闭.