pb数据窗口多表更新

zcl1206 2011-07-25 10:47:15
我是这样写的,但是当dw_2失败时,dw_1却更新了,大侠们帮帮忙
if dw_1.update(true,false)=1 then
if dw_2.update(true,false)=1 then
dw_1.ResetUpdate()
dw_2.ResetUpdate()
commit;
messageBox("系统提示","成功!")
else
rollback;
messageBox("系统提示","失败d!")
end if
else
rollback;
messageBox("系统提示","失败!")
end if
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyoinge 2011-08-02
  • 打赏
  • 举报
回复
从2011年7月23日开始,到了每天凌晨,7月22日以后发的帖子和回复的帖子都会被CSDN恶意的沉掉。每天早上上论坛,帖子列表中能看到的帖子的最后更新日期最晚是7月22日。这无疑让很多提问者的帖子无法被大家浏览,进而无法及时给予解答。

希望 版主:lzp_lrp 能够帮忙反映问题!!!

从“我的社区 → 我回复的帖子”中,可以正常的看到自己回复过的帖子,所以我决定每天手动将我回复过得帖子重新顶起来,希望大家理解并支持我的做法。

最近回复过的帖子,被CSDN给沉了,重新顶起
yyoinge 2011-08-01
  • 打赏
  • 举报
回复
最近回复过得帖子,被CSDN给沉了,重新顶起
zcl1206 2011-07-27
  • 打赏
  • 举报
回复
我把sqlca.AutoCommit=false 写在更新前面了 还是dw_1 提交了
yyoinge 2011-07-27
  • 打赏
  • 举报
回复
PowerBuilder  These statements coordinate the update of two DataWindow objects:

int rtncode

CONNECT USING SQLCA;

dw_cust.SetTransObject(SQLCA)

dw_sales.SetTransObject(SQLCA)

rtncode = dw_cust.Update(TRUE, FALSE)

IF rtncode = 1 THEN

rtncode = dw_sales.Update(TRUE, FALSE)

IF rtncode = 1 THEN

dw_cust.ResetUpdate() // Both updates are OK

dw_sales.ResetUpdate()// Clear update flags

COMMIT USING SQLCA; // Commit them

ELSE

ROLLBACK USING SQLCA; // 2nd update failed

END IF

END IF

这是pb帮助中的Examples,你的写法跟这个其实是一样的,你出现问题的原因应该不是写法,而是sqlca的AutoCommit属性被设置为true了
zcl1206 2011-07-27
  • 打赏
  • 举报
回复
怎么写update才能实现级联更新的问题呢?
灰色轨迹 2011-07-25
  • 打赏
  • 举报
回复
update(true,false)
第一个参数用于在保存前接受用户在DW中作出的更改.
第二个参数说明在保存时不自动设置更新标志.
说白就是,保存用户的修改,自动执行AcceptText()操作,不清除更新标记,若被更改的数据没有通过有效性验证,取消保存.另外由于第二个参数为false,下次调用update()时本次所有的修改会被再次提交给数据库.dw_2失败时,而dw_1却成功了主要在于第二个参数设置成了false了。

609

社区成员

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

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