dw update 奇怪的问题

rgdxd810810 2016-07-09 01:15:55
好奇怪,相同的两个DW 一个是DW_1 一个是DW_2 dataobject 对应数据库同一张表
先后更新是出现问题,都提示更新成功,但第一个DW更新成功,第二个个DW 显示更新成功但实际未成功 数值显示为DW_1的更新后的数值

点击保存按钮前


点击保存按钮后


刷新后

用的是两个按钮,模拟多用户同时更改相同字段的情况,在公司测试两台电脑同时修改时,出现后修改提交的,显示提交成功,但值还是先提交的那个值

关键问题是,为什么DW2不报错(要修改的那个值已经发生变化)


两个按钮的代码

dw_1.accepttext()

if dw_1.modifiedcount()=0 and dw_1.deletedcount()=0 then return
if dw_1.update(TRUE,FALSE)<>1 then
messageboxex('提示!','数据保存失败! ~r~n 有可能记录重复¸请检查!',stopsign!)
rollback;
else
dw_1.RESETupdate()
commit USING SQLCA;
//messageboxex('提示!','数据保存成功!')
end if

按钮2
dw_2.accepttext()
integer updatecheck
if dw_2.modifiedcount()=0 and dw_2.deletedcount()=0 then return
updatecheck=dw_2.update(true,false)
if updatecheck<>1 then
messageboxex('DW2提示!','数据保存失败! ~r~n 有可能记录重复¸请检查updatecheck!'+string(updatecheck),stopsign!)
rollback USING SQLCA ;
else

commit USING SQLCA;
dw_1.RESETupdate()
messageboxex('DW2提示!','数据保存成功updatecheck!'+string(updatecheck)+ string(sqlca.sqlcode))
end if

我只有10分对不住各位了
...全文
495 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2016-07-15
  • 打赏
  • 举报
回复
看一下数据窗口里的updatestart事件和dberror是不是写的代码有问题,你直接用两个datawindow来试试,不要用继承。
zhangyangziwo 2016-07-11
  • 打赏
  • 举报
回复
用jdbc驱动试试
sbks 2016-07-11
  • 打赏
  • 举报
回复
没留意你已经说明设置了sqlca.autocommit 应该是这个odbc驱动不支持autocommit=false的,我也不知道该在哪里设置了.你可以写个简单的cs程序来验证一下此odbc是支持autocommit=false 如果真的是此odbc驱动不支持,那只有找专用驱动了或换其它驱动试试 我这才想起来,我以前也遇到过Mysql的odbc的问题
sbks 2016-07-11
  • 打赏
  • 举报
回复
引用 5 楼 rgdxd810810 的回复:
谢谢@sbks提醒 ,设置MSQLautocommit值=0 但是还是没有报错信息,我也是没有办法了
不是设置数据库的autocommit参数,而是pb事务对象sqlca的autocommit参数 sqlca.autocommit=false
rgdxd810810 2016-07-09
  • 打赏
  • 举报
回复

谢谢@sbks提醒 ,设置MSQLautocommit值=0
但是还是没有报错信息,我也是没有办法了
rgdxd810810 2016-07-09
  • 打赏
  • 举报
回复
后台是MYSQL / Profile apds12 SQLCA.DBMS = "ODBC" SQLCA.LOCK = "RC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=apds;UID=root;PWD=Autoliv;" sqlca.autocommit 已经设置为 false 是不是MYSQL里面还要设置什么,否则DW好像update()都等于1
rgdxd810810 2016-07-09
  • 打赏
  • 举报
回复
问问题范围应该可是缩小了,后台是MYSQL 我把DW1主健删除保存,也提示成功,但实际值未改变
A啦Dbit 2016-07-09
  • 打赏
  • 举报
回复
在两个dw的sqlpreview事件里弹出sqlsyntax 看看 应该可以看出问题在哪里
sbks 2016-07-09
  • 打赏
  • 举报
回复
检查一下,sqlca.autocommit设置成false没有? update()这个函数帮生成sql语法,并向数据库提交,顺利完成这两件事情就返回1.如果你的sqlca.autocommit被设置成true的话,之后的rollback或commit是没有意义了的,就算你rollback using sqlca也无济于事

397

社区成员

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

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