综合查询的DDDW问题?

jngxx 2003-04-09 10:36:19
我做了一个综合查询窗口,只要把DW控件传给它,用户可以按datawindow中所有列,自由选择查询条件。现在的问题是,datawindow中有些列是下拉datawindow,我实现不了在综合查询数据窗口,数据值针对用户选择不同列,如果是DDDW,显示display值。
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldq_pb 2003-04-10
  • 打赏
  • 举报
回复
我的查询datawindow有6个列,字段名、比较符、输入值(displayvalue)和关系,淮陰藏了兩列:columntype,columnvalue。其中字段名和输入值是DDDW,我正在做
ldq_pb 2003-04-10
  • 打赏
  • 举报
回复
yes
jngxx 2003-04-10
  • 打赏
  • 举报
回复
我的查询datawindow有4个列,字段名、比较符、输入值和关系。其中字段名和输入值是DDDW。
我是否应该在Itemchanged事件中添加代码,当字段名改变时,判断它的Editstyle,如果是DDDW,取值赋给输入值。
andyzq 2003-04-10
  • 打赏
  • 举报
回复
给你一段代码参考:

if rb_3.checked=true then return


IF dwo.name="vc_fieldname" THEN
string ls_table_name,ls_column_name,ls_column_type,ls_edit_style,ls_dddw_name,ls_temp
string ls_display_value,ls_data_value
long ll_row,ll_position,ll_insertrow

ls_table_name=idw_child.GetItemString(idw_child.getrow(), "tysy_retrieve_define_vc_table_name")
ls_column_name=idw_child.GetItemString(idw_child.getrow(), "tysy_retrieve_define_vc_column_name")
ls_column_type=idw_child.GetItemString(idw_child.getrow(), "tysy_view_table_structure_e_column_type")


idw_child1.retrieve(ls_table_name,ls_column_name)

this.object.vc_tablename[row]=ls_table_name
this.object.vc_fieldtype[row]=ls_column_type
if rb_1.checked=true then
CHOOSE CASE upper(ls_column_type)
CASE "VARCHAR","CHAR"
this.object.vc_operator[row]="like"
CASE "BIGINT","DECIMAL","FLOAT","INT","MONEY","NUMERIC","REAL","SMALLINT","SMALLMONEY","TINYINT"
this.object.vc_operator[row]="="
CASE "DATETIME","SMALLDATETIME"
this.object.vc_operator[row]="="
CASE ELSE
messagebox("提示","不能识别的检索数据类型:"+ls_column_type)
END CHOOSE
end if


this.object.vc_fieldvalue[row] = ''
ls_edit_style = ids_search.describe(ls_column_name + '.edit.style')
ls_edit_style = lower(ls_edit_style)
choose case ls_edit_style
case 'dddw'
ls_dddw_name = ids_search.describe(ls_column_name + '.dddw.name')
if not isnull(ls_dddw_name) and ls_dddw_name <> '' then
this.object.vc_fieldvalue.dddw.name = ls_dddw_name
ls_temp = ids_search.describe(ls_column_name + '.dddw.displaycolumn')
this.object.vc_fieldvalue.dddw.displaycolumn = ls_temp
ls_temp = ids_search.describe(ls_column_name + '.dddw.datacolumn')
this.object.vc_fieldvalue.dddw.datacolumn = ls_temp
this.object.vc_fieldvalue.dddw.allowedit = true
this.object.vc_fieldvalue.dddw.vscrollbar = 'yes'
end if

case 'ddlb'
ids_display_value.reset()
ls_temp = ids_search.GetValue(ls_column_name,1)
ll_row = 1
DO WHILE not isnull(ls_temp) and (ls_temp <> '')
ll_position = pos(ls_temp,'~t')
if ll_position = 0 then
ls_display_value = ls_temp
ls_data_value = ls_temp
else
ls_display_value = left(ls_temp,ll_position - 1)
ls_data_value = mid(ls_temp,ll_position + 1)
end if
ll_insertrow = ids_display_value.insertrow(0)
ids_display_value.setitem(ll_insertrow,'code',ls_data_value)
ids_display_value.setitem(ll_insertrow,'value',ls_display_value)
ll_row ++
ls_temp = ids_search.GetValue (ls_column_name,ll_row)
LOOP
this.object.vc_fieldvalue.dddw.name = 'dddw_display_value'
this.object.vc_fieldvalue.dddw.displaycolumn = 'value'
this.object.vc_fieldvalue.dddw.datacolumn = 'code'
this.getchild('vc_fieldvalue',idw_child_value)
ids_display_value.sharedata(idw_child_value)
this.object.vc_fieldvalue.dddw.vscrollbar = 'yes'
this.object.vc_fieldvalue.dddw.allowedit = true
this.object.vc_fieldvalue.dddw.vscrollbar = 'yes'
case 'checkbox'
ids_display_value.reset()
ls_temp = ids_search.getvalue(ls_column_name,1)
ll_position = pos(ls_temp,'~t')
ls_data_value = mid(ls_temp,ll_position + 1)
ls_temp = wf_get_item(ls_column_type,ls_column_name,idw_child_value)
ll_insertrow = ids_display_value.insertrow(0)
ids_display_value.setitem(ll_insertrow,'code',ls_data_value)
ids_display_value.setitem(ll_insertrow,'value',ls_temp)
this.object.vc_fieldvalue.dddw.name = 'dddw_display_value'
this.object.vc_fieldvalue.dddw.displaycolumn = 'value'
this.object.vc_fieldvalue.dddw.datacolumn = 'code'
this.getchild('vc_fieldvalue',idw_child_value)
ids_display_value.sharedata(idw_child_value)
this.object.vc_fieldvalue.dddw.vscrollbar = 'yes'
this.object.vc_fieldvalue.dddw.allowedit = true
this.object.vc_fieldvalue.dddw.vscrollbar = 'yes'
case 'radiobuttons'
ids_display_value.reset()
ls_temp = ids_search.GetValue(ls_column_name,1)
ll_row = 1
DO WHILE not isnull(ls_temp) and (ls_temp <> '')
ll_position = pos(ls_temp,'~t')
if ll_position = 0 then
ls_display_value = ls_temp
ls_data_value = ls_temp
else
ls_display_value = left(ls_temp,ll_position - 1)
ls_data_value = mid(ls_temp,ll_position + 1)
end if
ids_display_value.insertrow(0)
ids_display_value.setitem(ll_row,'code',ls_data_value)
ids_display_value.setitem(ll_row,'value',ls_display_value)
ll_row ++
ls_temp = ids_search.GetValue (ls_column_name,ll_row)
LOOP
this.object.vc_fieldvalue.dddw.name = 'dddw_display_value'
this.object.vc_fieldvalue.dddw.displaycolumn = 'value'
this.object.vc_fieldvalue.dddw.datacolumn = 'code'
this.getchild('vc_fieldvalue',idw_child_value)
ids_display_value.sharedata(idw_child_value)
this.object.vc_fieldvalue.dddw.vscrollbar = 'yes'
this.object.vc_fieldvalue.dddw.allowedit = true
this.object.vc_fieldvalue.dddw.vscrollbar = 'yes'
end choose




END IF
jngxx 2003-04-10
  • 打赏
  • 举报
回复
PFC太复杂了,我看不懂!
青藤1111 2003-04-09
  • 打赏
  • 举报
回复
我不知道你有没有用过pfc,在里面的pfcdwsrv.pbl中的pfc_w_filtersimple窗口中有你所要的东东
xirumin 2003-04-09
  • 打赏
  • 举报
回复
dw.describ(evaluate....) loockupdisplay可以解决你的问题

我也有综合查询窗口,是在www.pdriver.com上下载的。
pbtech 2003-04-09
  • 打赏
  • 举报
回复
关注~~
bxcsoft 2003-04-09
  • 打赏
  • 举报
回复
up
888888888888 2003-04-09
  • 打赏
  • 举报
回复
关注

609

社区成员

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

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