永发信息网

PB数据窗口保存不重复的数据

答案:3  悬赏:40  手机版
解决时间 2021-02-20 12:20
有class表,bm是主键,在数据窗口中,点“保存”控件,bm不能重复。在保存我写以下代码,但是输入重复时,会提示有重复,却不是我所写的messagebox里的内容,输入不重复的,提示:expression is not valid ,但在数据库里查找却可以找到刚输入的数据。
long ll_row,i,ll_rowcount
string ls_lb_bh, is_status
ls_lb_bh = "bm "

if trim(ls_lb_bh) = "" or isnull(ls_lb_bh) then
messagebox("提示信息","类别编号不能为空,请重新输入!")
tab_1.tabpage_1.dw_1.setcolumn("bm")
tab_1.tabpage_1.dw_1.setfocus()
return
end if

SELECt count(*)
INTO :i
FROM class
WHERe bm = :ls_lb_bh;
//如果是新增并且重复提示
if is_status = "New" and i > 0 then
messagebox("提示信息","输入的编号已经存在,请重新输入!")
return
end if
//更新
if tab_1.tabpage_1.dw_1.update() = 1 then
commit;
if is_status = "New" then

tab_1.tabpage_1.dw_1.rowscopy(1,1,primary!,tab_1.tabpage_1.dw_1, &
1,primary!)
else

ll_row = tab_1.tabpage_1.dw_1.find("Lhhb = '" + ls_lb_bh + "'", &
1,ll_rowcount)
tab_1.tabpage_1.dw_1.deleterow(ll_row)
tab_1.tabpage_1.dw_1.rowscopy(1,1,primary!,tab_1.tabpage_1.dw_1, &
ll_row,primary!)
end if
close(parent)
else
rollback;
messagebox("提示信息","数据保存失败!")
end if
integer ll_row
string ls_lb_bh, is_status

ls_lb_bh=tab_1.tabpage_1.dw_1.getitemstring(1,"Lbbh")
if ls_lb_bh = "" or isnull(ls_lb_bh) then
messagebox("提示信息","类别编号不能为空,请重新输入!")

returnend if
if is_status = "New" then
SELECT count(*)
INTO :ll_row
FROM class
WHERe Lbbh = :ls_lb_bh;
if ll_row > 0 then
messagebox("提示信息","输入的编号已经存在,请重新输入!")
return
end if
end if

if tab_1.tabpage_1.dw_1.update() = 1 then
tab_1.tabpage_1.dw_1.resetupdate()
commit;
else
rollback;
messagebox("提示信息","数据保存失败!")
end if
最佳答案
初步看了下,你整体思路还是可以的,有相应得检查排错代码。运行结果不是你的设想,你可以通过debug一步步排查,看看每一步变量取值、程序转向是不是按你设想的来进行
几个问题供你参考
1、ls_lb_bh = "bm " 这种赋值方法没见过,不知道你这个是不是从数据窗口取数,如果是,这种方法不对,或者是我OUT了。你查查这个数据能不能正常取出
2、你通过select count方法检查是否有重复,这是对的,不过应该在NEW分支里面来做,不然其他类别不需要也运行一次,没意义
3、你的dw提交好像有问题,很复杂的用rowscopy方法,实际上应该用SQL语句处理更直观
没看到你的界面,原则上新增和修改不应该共用一个界面,这样分开处理程序简单清晰
全部回答
debug跟踪。rowscopy()没必要用, 如果不是多表之间切换更新 resetupdate()也没必要用。
不知道你说的这个问题是啥,dw.retrieve(parm1,parm2,...,parmn)是可以带参数检索的,对应数据窗口编辑表达式模式下的arguments菜单 如果你输入什么检索参数都只有同一行参数,那建议你检查一下是否使用了distinct、top等约束语句,另外查清楚查询条件会不会真的会使返回记录只有一行,有些问题查到最后会让你大跌眼镜的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
表结法和账结法的区别有哪些
洗面奶有什么功效
朋友圈手滑点赞后又取消对方会有显示吗
图为2008年我国甲乙丙丁四个省级行政区的用水
林宥嘉 感官世界 封面含义
个子矮的人带皮带手表好看还是刚带手表好看
大钟寺中坤广场C座北门这个地址在什么地方,
球胜青少年篮球训练营地址好找么,我有些事要
天龙八部手游天山英雄试炼怎么打赢战力比自己
我想写首藏头诗给我的古董字画店,哪位高人帮
任军饭馆地址有知道的么?有点事想过去
路虎揽胜出现下图右上角黄色感叹号是什么意思
河南淮阳工商局的电话是多少
车辆违章被扣9分要交多少罚款???
做V型运动,腹部的肉就会变很硬,这是怎么回
推荐资讯
荔波茂兰爽爽农家乐我想知道这个在什么地方
全世界只有日本人会做单反相机吗?为什么我们
黄钻豪华版访问非好友QQ空间隐身么·..?
天增岁月人增寿 下联:______________
天坛距离故宫有多远
あきら 是什么意思
长平之战是白起太厉害还是赵括太无能
一挡土墙高4m,墙背垂直、光滑,墙后填土面水
一篇网王文,男主是忍足侑士,女主是凤的姐姐
nds口袋妖怪白金全国图鉴中201哪捉、
城乡规划专业考公务员考什么内容
哪个地方出产的黑芝麻品质好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?