当前位置: 代码迷 >> PB >> 子数据窗口检索字段相同的有关问题
  详细解决方案

子数据窗口检索字段相同的有关问题

热度:75   发布时间:2016-04-29 10:14:12.0
子数据窗口检索字段相同的问题
主数据窗口中用药品编号,药品名称,价格,子数据窗口设在药品编号上,子数据窗口有药品编号,药品名称,价格,拼音码,我通过在下拉子数据窗口处通过拼音码检索数据,并赋药品编号值给主窗口,同时把子数据窗口所选行的药品名称,价格一并赋值。
出现这样的问题,如果子数据窗口中,药品编号有两个一样的,但价格不同,我想通过向下键选择时,却总不同如愿赋第二条数据的值。
我查了查以前的问题,说这是PB的bug,但我用到PB12.5,怎么还有,大家是如何解决的,请帮忙!!

datachild dwc_i
在回车跳转时赋值:dw_1.setitem(this.getrow(),"price",dwc_i.getitemdecimal(dwc_i.getrow(),"price"))
在itemchange事件中也写过。

------解决方案--------------------
在数据窗口中新建一个事件ue_command,对应Event ID为:pbm_command
在事件中写:
C/C++ code
if this.getcolumnname() = '药品编码' then    datawindowchild ldwc    if getchild(this.getcolumnname(), ldwc) = 1 then        if notificationcode = 2049 then            setitem(this.getrow(), '药品价格', ldwc.getitemdecimal(ldwc.getrow(), '药品价格'))        end if    end ifend if
------解决方案--------------------
8楼说得对,如果你的药品有上百或更多,如何让用户在下拉数据窗口中找?
提个建议,同一种药品可能有不同价格,特别是当前市场,价格不断变化。进货时可能一天一个价,所以在构建数据库表时要仔细考虑,应该见一个药品基本信息表(仅存放药品编码和共性的东西),再建一个药品编码和价格表。然后将这两个表关联起来,或建个视图。在上述输入界面中,可以用拼音作为条件弹出一个符合输入拼音的模糊检索结果的数据窗口,再从中中找到所要输入的药品。
这些工作可以:建一个response类型窗口,里面包含一个dw(用于检索符合拼音的结果),用户可以通过上下箭头键选择所需,回车后,通过closewithreturn,将结果传回主窗口。
上述代码均可在dw的itemchanged事件中实现。

if dwo.name = '药品代码' then
//当用户输入拼音后,打开弹出窗口
openwithparm(w_pop,data)
//用户选中一个代码后,关闭弹出窗口同时通过Message返回代码
ls_code = Message.StringParm
if ls_code<>'' then
this.object.药品代码[row] = ls_code
......
return 2
else
return 1
end if
这儿只是一个思路,传回的数据呀可以是个结构,它就可以包含代码、价格等等信息。





------解决方案--------------------
探讨
...setfilter里是可以通过拼音码或编号模糊查询,但为什么用or连接时总报错,如果是等值查询则没问题,如何解决
  相关解决方案