为什么dw_2.update(true,false),仍能保存进数据库???

nthb2001 2003-08-11 05:56:35
为什么?应怎么设置??
...全文
42 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingmu 2003-08-11
  • 打赏
  • 举报
回复
li_return = dw_2.Update(True,False)
第一个参数是用来接收数据窗口的值,第二个参数是用来判断是否清除update标志,是用来回滚的,请参考以下例子:
if dw_1.update(true,false) = 1 then
if dw_2.update(true,false) = 1 then
commit;
if sqlca.sqlcode = 0 then //如果提交成功,那么清除数据窗口的更新标志
dw_1.resetupdate()
dw_2.resetupdate()
else //如果提交失败,那么调用rollback语句来回滚
rollback;
messagebox('错误信息','在提交数据库事务时出现了错误')
end if
//如果两个数据窗口都更新成功,那么提交数据库事务
else
rollback;//第一个数据窗口更新成功而第二个数据窗口更新失败,则回滚
end if
else
rollback; //第一个数据窗口更新失败,则回滚
end if
runsoft 2003-08-11
  • 打赏
  • 举报
回复
我也碰到这种情况,就是主从表保存,从表出问题了,但是主表却保存进去了.GZ
edisonwong 2003-08-11
  • 打赏
  • 举报
回复
SQLCA 的参数设为 autocommit=false
当需要保存时再用 Commit
nthb2001 2003-08-11
  • 打赏
  • 举报
回复
问题是偶这么做了以后,DW_1中的数据就已存进去了,,,为什么???
pjjia 2003-08-11
  • 打赏
  • 举报
回复
如果update时应当同时update,你可以在itemchanged事件中对输入进行有效判断,这样在保存时不会出现错误可以参考一下代码
/******************/
/*保存数据窗口数据*/
/******************/
li_return = dw_1.Update(True,False)
If li_return = -1 Then
ls_sqlerrtext = sqlca.sqlerrtext
ll_sqldbcode = sqlca.sqldbcode
Rollback;
Return -1
End If
li_return = dw_2.Update(True,False)
If li_return = -1 Then
ls_sqlerrtext = sqlca.sqlerrtext
ls_sqlerrtext = sqlca.sqlerrtext
Rollback;

Return -1
End If
dw_1.ResetUpdate()
dw_2.ResetUpdate()
nthb2001 2003-08-11
  • 打赏
  • 举报
回复
tab_1.tabpage_2.dw_2.update(true,false)

偶想实现的是只是预存,如果下面还有保存不成功的,就不保存了,也就是说要两个DW要同时保存与不保存,要保证两个全能保存成功再保存,该如何实现?
xisat 2003-08-11
  • 打赏
  • 举报
回复
?? ??

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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