本人的数据窗口的删除按扭,出了问题请各位大虾帮忙解决

cumtbrainman 2005-08-05 09:43:07
下面是本人写的删除按钮代码:
Long li_row,ll_rowcount,i
li_row=dw_1.getrow()
ll_rowcount = dw_1.rowcount()
If li_row > 0 then
If MessageBox('删除询问','真的要删除这条信息么?',question!,YesNo!,2) = 1 Then
dw_1.deleterow(li_row)
If dw_1.update() > 0 Then
//记录号删除后的自动变化
for i = li_row to ll_rowcount - 1
dw_1.object.jlh[li_row] = dw_1.object.jlh[li_row] - 1
li_row = li_row + 1
next
commit;
Else
Rollback;
Messagebox("错误提示","无法删除!")
End IF
li_row = dw_1.getrow()
If li_row < dw_1.rowcount() then
dw_1.selectrow(0,false)
dw_1.selectrow(li_row,true)
end If
end If
else
messagebox("系统提示","没有要删除的数据!")
end if

问题出在该窗口的 记录号(jlh) 字段上
我原本想删除记录后,记录号顺序上移,代码如下

for i = li_row to ll_rowcount - 1
  dw_1.object.jlh[li_row] = dw_1.object.jlh[li_row] - 1
  li_row = li_row + 1
next

这没有问题,但是在删除不关闭窗口,再增加新记录的话,记录号会出现如下问题:
记录号 其它字段





例如删除记录号为2的数据后,数据窗口的数据变为
记录号 其它字段




这时点增加后,应当出现
记录号 其它字段





但是,实际出现的是
记录号 其它字段





我怀疑是数据窗口更新数据库的数据,于是在代码的最下端加了一个retrieve()函数,但是retrieve后数据还是有问题请各位大虾帮忙解决一下

...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyc_0_0_0 2005-08-05
  • 打赏
  • 举报
回复
楼主你的理解有误!不是说commit以后所有的对数据窗口的一些修改都会发送到数据库管理系统,而是dw_1.update()这句语句之前对数据窗口做的修改会提交到数据库!
cumtbrainman 2005-08-05
  • 打赏
  • 举报
回复
谢谢各位,按四楼的方法已经把问题解决了,(如下)

你的代码写的有问题!应该把if dw_1.update() > 0 then
commit;
else
rollback;
messagebox("错误提示","无法删除!")
end if
这段代码放后面!

但是还是不明白,为什么
if dw_1.update() > 0 then
for i = li_row to ll_rowcount - 1
  dw_1.object.jlh[li_row] = dw_1.object.jlh[li_row] - 1
  li_row = li_row + 1
next
commit;
else
rollback;
messagebox("错误提示","无法删除!")
end if
时数据没有更新到数据库呢?
不是说commit;就提交到数据库了?
还有就是用什么方法看四个数据缓冲区的数据?
零上三度 2005-08-05
  • 打赏
  • 举报
回复
两种简单办法,一是倒叙,这样不需要管rowcount
for i = ll_rowcount - 1 to li_row Step -1
  dw_1.object.jlh[li_row] = dw_1.object.jlh[li_row] - 1
next

二是,如果实在愿意改动这些循环值,rowcount-1 作为变量,更改之

推荐第一种,简单
handycyw 2005-08-05
  • 打赏
  • 举报
回复
//记录号删除后的自动变化
ll_rowcount = dw_1.rowcount()
删除记录后,ROWCOUNT()已经改变了
yyc_0_0_0 2005-08-05
  • 打赏
  • 举报
回复
你的代码写的有问题!应该把if dw_1.update() > 0 then
commit;
else
rollback;
messagebox("错误提示","无法删除!")
end if
这段代码放后面!

cumtbrainman 2005-08-05
  • 打赏
  • 举报
回复
怎么看缓冲区
aichangfeng 2005-08-05
  • 打赏
  • 举报
回复
可以看一下數據窗口的四個緩沖區
5544zy 2005-08-05
  • 打赏
  • 举报
回复
if dw_1.update() > 0 then
for i = li_row to ll_rowcount - 1
  dw_1.object.jlh[li_row] = dw_1.object.jlh[li_row] - 1
  li_row = li_row + 1
next
commit;
else
rollback;
messagebox("错误提示","无法删除!")
end if
-----------------------------------------------
我看也可以在commit;这一句前加一个dw_1.accepttext()
qianfl 2005-08-05
  • 打赏
  • 举报
回复
贴也增加按钮的代码

609

社区成员

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

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