TO pbworm(PB菜鸟)

HCCRM_2001 2002-01-05 09:13:42
照你的方法,
if dw_1.update()>0 then
commit;
messagebox("提示","保存成功1!")

else
rollback;
messagebox("提示","保存失败1!")
end if


tab_1.tabpage_1.dw_2.setitemstatus(li_row,0,primary!,datamodified!)
tab_1.tabpage_1.dw_2.getitemstring(1,"ygbh")
if tab_1.tabpage_1.dw_2.update()>0 then
commit;
messagebox("提示","保存成功2!")
else
rollback;
messagebox("提示","保存失败2!")
end if
结果新增一条记录的时候保存一成功


然后报错
Row changed between retrieve and update.

No changes made to database.

DELETE FROM hr_ygxx WHERE ygbh IS NULL



但是修改一条记录可以成功保存

请继续指教


...全文
100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
spawnwind 2002-01-06
  • 打赏
  • 举报
回复
看来你真的应该好好看书了!
spawnwind 2002-01-06
  • 打赏
  • 举报
回复
hehe!解决了吗?HCCRM_2001(剑走偏锋) 
pbworm 2002-01-06
  • 打赏
  • 举报
回复
实际使用sharedata是简单的
你应该好好看看书的了。
pbworm 2002-01-06
  • 打赏
  • 举报
回复
long ll_currentRow
If dw_1.update()=1 Then
//il_rowBeforeInsert是数据窗口检索出来的数据,大于它的应该是新增加的数据
//这里没有考虑用户删除数据的情况
for ll_currentRow = il_rowBeforeInsert To dw_1.rowCount()
dw_2.setItemStatus(ll_currentRow,0,primary!,datamodified!)
Next
If dw_2.update()=1 Then
Commit Using sqlca;
messageBox('','ok')
Else
Rollback Using sqlca;
messageBox('','fasle1:'+sqlca.sqlerrtext)
End If
Else
Rollback Using sqlca;
messageBox('','fasle2:'+sqlca.sqlerrtext)
End If

在保存中写的语句
il_rowBeforeInsert是instance变量,il_rowBeforeInsert=dw_1.retrieve()//在窗口的open语句中写的
pbworm 2002-01-05
  • 打赏
  • 举报
回复
没有,参数0表示的是当前行的所有列的状态都更改啊!
HCCRM_2001 2002-01-05
  • 打赏
  • 举报
回复
取新增加行的YGBH是对的
HCCRM_2001 2002-01-05
  • 打赏
  • 举报
回复
li_row就是当前行,我已经在setitemstatus中取参数为0了啊,应该已经是增加行的状态都为DATAMODIFIED了啊,,,,我的OICQ为5488184
我们可以在QQ中交流一下吗,谢谢
pbworm 2002-01-05
  • 打赏
  • 举报
回复
将你所有新增加行的ygbh取出来看一下,怎么看错误得到的好象是null啊?
HCCRM_2001 2002-01-05
  • 打赏
  • 举报
回复
ygbh就相当于上文中的num(unique index)
li_row是用GETROW()取的当前值
pbworm 2002-01-05
  • 打赏
  • 举报
回复
你将所有新增加行的状态都更改一下。
你程序中的li_row和ygbh都是什么啊?

401

社区成员

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

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