当前位置: 代码迷 >> PB >> 数据窗口update时的有关问题
  详细解决方案

数据窗口update时的有关问题

热度:101   发布时间:2016-04-29 10:03:33.0
数据窗口update时的问题
代码的功能是:多选框选中的存入到数据库
出现的问题:点击后到达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

谢谢大家能够帮忙解决问题

------解决方案--------------------
delete 那里没提交吧? 这个还没提交,马上要update 不是死锁了?
你设AutoCommit=true 试试
  相关解决方案