数据无法保存?

yuanp2001 2010-09-16 05:47:43
string ls_emp_id,ls_emp_nm

long ll_row,ll_newrow
//从dw_1中取值
if dw_1.accepttext() <> 1 then return
ls_emp_id = dw_1.getitemstring(1,'emp_id')
ls_emp_nm = dw_1.getitemstring(1,'emp_nm')

messagebox('',ls_emp_id)

if isnull(ls_emp_id) or trim(ls_emp_id) = '' then
messagebox('提示信息','请输入员工编号!')
dw_1.setcolumn('emp_id')
return
end if
messagebox('',ls_emp_id)
if isnull(ls_emp_nm) or trim(ls_emp_nm) = '' then
messagebox('提示信息','请输入员工姓名!')
dw_1.setcolumn('emp_nm')
return
end if
//数据更新到dw_2
ll_row = dw_2.insertrow(0)
dw_2.setitem(ll_row,"emp_id",ls_emp_id)
dw_2.setitem(ll_row,"emp_nm",ls_emp_nm)
dw_2.setrow(ll_row)
dw_2.scrolltorow(ll_row)

//提交保存的数据
if dw_1.update(true,false) = 1 then
commit;
dw_1.resetupdate()
else
rollback;
end if

ii_status = 0
wf_menu_ctrl()


请问为什么我把dw_2.setrow(ll_row)
...全文
112 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanp2001 2010-09-17
  • 打赏
  • 举报
回复
问题解决,是放在ue_save里面
yuanp2001 2010-09-17
  • 打赏
  • 举报
回复
我就是不知道怎么检查啊~~~

itemchange事件里加这句
select count(*) into:ll_row from new_emp where emp_id = :data;
if ll_row <> 0 then
messagebox('提示','输入的工号重复!')
return 1
end if
可是查询时出问题,不要,保存时重复,请高手指点!~~~
jimwoo 2010-09-17
  • 打赏
  • 举报
回复
奇怪的问题,无法保存是怎么个现象
agx2003 2010-09-17
  • 打赏
  • 举报
回复
码了几年数据窗,就被人尊称高手,巨汗,无地自容了,都。
据我所知,判断数据是否重复一般考虑两种情况:
一是当前数据窗口里是否有重复项。
二是当前数据窗口里是否存在数据库里已存在的数据。

如果多条数据一起更新的话,个人觉得单靠数据库约束有点不太友好,最好有个事先检查。至于是在保存时还是itemchange时检查,看个人爱好吧。




lightsword1 2010-09-17
  • 打赏
  • 举报
回复
说的对,养成良好的习惯,可以避免很多无谓的问题
ahder 2010-09-17
  • 打赏
  • 举报
回复
将关键字段定义为主键,即可避免重复,如身份证号等。
ahder 2010-09-17
  • 打赏
  • 举报
回复
将关键字段定义为键,即可避免重复,如身份证号等
yuanp2001 2010-09-17
  • 打赏
  • 举报
回复
说的很好的,你一定是PB高手了,请问于何在存档时判断,是否有重复数据?

是在itemchanged事件里面判断吗?
请问怎么判断?
agx2003 2010-09-17
  • 打赏
  • 举报
回复
dw_2的rowfoucschanged 事件里有 dw_1.retrieve(emp_id)
保存之前触发的话,因为dw_2当前行的emp_id在数据库里可能不存在(newmodify状态),所以会出现dw_1为空白的现象。
如果在保存之后触发,自然就没有这个问题。
yuanp2001 2010-09-16
  • 打赏
  • 举报
回复
问题已经解决,就是不能先更新dw_2窗口,在提交保存,
只能先保存,在更新dw_2窗口

ll_row = dw_2.insertrow(0)
dw_2.setitem(ll_row,"emp_id",ls_emp_id)
dw_2.setitem(ll_row,"emp_nm",ls_emp_nm)
dw_2.setrow(ll_row)
dw_2.scrolltorow(ll_row)
要加到后面!

1,075

社区成员

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

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