请问为什么GROUP的DW删除的行不能被还原?

老板卤两个蛋蛋 2004-10-13 11:11:43
我的DW是GROUP类型的,
删除代码如下:
long row = 0

row = dw_1.getRow ()
if row <= 0 or row > dw_1.rowCount () then
dw_1.setfocus ()
return
end if

//删除到 delete! 缓冲区
dw_1.deleteRow (row)

//记录下删除行的行号
il_index ++
il_del_row[il_index] = row

cb_undo.enabled = true
dw_1.setfocus ()

还原代码如下:
//撤消“不打印行”操作(删除在DELETE!缓冲区的),撤消最近一次的操作
int li_ret = 0
li_ret = dw_1.RowsMove(dw_1.DeletedCount(), dw_1.DeletedCount(), &
Delete!,dw_1, il_del_row[il_index], Primary!)
if li_ret <> 1 then
messagebox ("提示信息", "撤消失败,可以使用“刷新”按钮恢复所有的行!",stopSign!)
goto XXX // 不高亮度显示撤消的行
end if

long ll_temp //撤消的行设置为当前行,并高亮度显示
ll_temp = il_del_row[il_index]
dw_1.setRow (ll_temp)
dw_1.selectRow (0, false)
dw_1.selectRow (ll_temp, true)
dw_1.scrollToRow (ll_temp)
dw_1.setfocus()

XXX:
il_index --
//如果删除缓冲区已经空,则撤消按钮不可用
if il_index <= 0 then //dw_1.DeletedCount() <= 0 then
this.enabled = false
end if

其中定义了INSTANCE VARIBLES:
long il_del_row [] //删除的行在DW中的行号
long il_index = 0 //il_del_row的索引号

这是一个自定义的可见用户对象上的,如果DW类型是其他的就没问题(如TABLUAR、GRID等)
...全文
118 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
也不行,因为DW_1.rowsMOve ()已经返回 -1 了,这个函数本身是没有执行成功的!
  • 打赏
  • 举报
回复
to (喜之郎 :) 应该是不管成功不成功,都有il_index --

我试试freeliu() 的看
wangxichen 2004-10-13
  • 打赏
  • 举报
回复
是不是在由删除缓冲区向主缓冲区移动记录的时候出现了问题:
li_ret = dw_1.RowsMove(dw_1.DeletedCount(), dw_1.DeletedCount(), &
Delete!,dw_1, il_del_row[il_index], Primary!)

上面这句中如果执行成功,同样要il_index --的吧?
而程序中if li_ret <> 1 then...才会使il_index自减,这样是不是有些问题???

freeliu 2004-10-13
  • 打赏
  • 举报
回复
你撤销之后,执行一下GroupCalc()函数试试。
就是放到下面一行后面:
li_ret = dw_1.RowsMove(dw_1.DeletedCount(), dw_1.DeletedCount(), &
Delete!,dw_1, il_del_row[il_index], Primary!)
dw_1.groupcalc()
  • 打赏
  • 举报
回复
(我是第二次使用GOTO语句,这里用GOTO更简洁些 :—>)

还请关注这个问题:
http://community.csdn.net/Expert/topic/3436/3436434.xml?temp=.3466761
  • 打赏
  • 举报
回复
我靠 这个DW是有多个表中选出的数据,怎样修改UPDATE属性都不行,看只有将删除行也用ROWSMOVE()了,直接移动到DELETE缓冲区了~~  汗!1
  • 打赏
  • 举报
回复
哦 是没有UPDATE 但该了好象还是有问题 再看看~~
  • 打赏
  • 举报
回复
如果是其他类型的DW都没有问题,比如TABLUAR,这个一切正常
GROUP的DW有些什么地方不同的不?
freeliu 2004-10-13
  • 打赏
  • 举报
回复
你的刷新按钮是数据窗重新检索吧。我说的不进删除缓冲区,但并不是说从数据库中删除。
  • 打赏
  • 举报
回复
但是我有个“刷新”按钮,点了刷新可以恢复所有删除的行(也就证明在删除缓冲区里是有记录的),就是不能一条一条地恢复!
freeliu 2004-10-13
  • 打赏
  • 举报
回复
看看你的数据窗是否有update属性,如果没有的话,数据删除后是不进入删除缓冲区的。
  • 打赏
  • 举报
回复
不行呀 ·
lzheng2001 2004-10-13
  • 打赏
  • 举报
回复
用 freeliu() 的方法不行吗?

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧