数据窗口update时的问题

zhaodonglei 2009-12-31 05:07:45
代码的功能是:多选框选中的存入到数据库
出现的问题:点击后到达dw_temp.update()时出错,错误的现象是程序死掉,怀疑是数据库死锁的问题
long ll_i, ll_count, flag
string ls_ksh, ls_sql,ls_syntax
//dw_wrong是所有数据的数据窗口,并且不是直接retrieve出来的,而是通过赋值的方法生成的
//构造一个和dw_wrong一样的dw_temp
ls_syntax = dw_wrong.Object.datawindow.Syntax
dw_temp.create(ls_syntax)
dw_temp.settrans(sqlca)
//s_xz是多选框,选中是1,否则是0
dw_wrong.setfilter("s_xz = 0")
dw_wrong.filter()
//将选中的数据移到dw_temp中
dw_wrong.rowsmove(1, dw_wrong.FilteredCount(), Filter!, dw_temp, 1, primary!)

for ll_i = 1 to dw_temp.RowCount()
ls_no = dw_temp.object.student_no[ll_i]
//先删除本地的数据,因为本地已经有student_no的数据了,student_no是主键
ls_sql = "delete student " where student_no='" + ls_no+ "'"
Execute Immediate :ls_sql;
/*同时修改此学生的姓名*/
dw_temp.object.name[ll_i] = 'aaa'
next
If sqlca.SQLCode <> -1 AND dw_temp.update() = 1 Then
commit using sqlca;
MessageBox('提示', '操作成功')
dw_temp.reset()
else
rollback using sqlca;
MessageBox('警告', '操作失败')
return
end if

谢谢大家能够帮忙解决问题
...全文
152 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
SKY_4K_PPM 2009-12-31
  • 打赏
  • 举报
回复
"delete student " where student_no='" + ls_no+ "'
能 成功吗?
"delete from student".......吧
zhaodonglei 2009-12-31
  • 打赏
  • 举报
回复
如果我delete时提交那和下边的update就不是一个事务了。如果出错会有问题的
xuam 2009-12-31
  • 打赏
  • 举报
回复
delete 那里没提交吧? 这个还没提交,马上要update 不是死锁了?
你设AutoCommit=true 试试
zhaodonglei 2009-12-31
  • 打赏
  • 举报
回复
commit using sqlca;

我已经提交了。还没走到commit using sqlca就已经死了。
xuam 2009-12-31
  • 打赏
  • 举报
回复
需要事务提交!
相关推荐
发帖
DataWindow

603

社区成员

PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
帖子事件
创建了帖子
2009-12-31 05:07
社区公告
暂无公告