关于下拉列表框的问题

时间:2022-04-25 10:11:01
我想在表单中实现这样一个功能:
表1:厂商资料.dbf
字段名    类型   宽度   索引   Null
厂商名称  字符型   40   升序   否
联系电话  字符型   14        可
联系人   字符型   8        可

表2:机型资料.dbf
字段名    类型   宽度   索引   Null
机型    字符型   12   升序   否
厂商名称  字符型   40   升序   否

两个表的通过“厂商名称”关联起来,我想在表单中做一个厂商名称下拉列表框“combo厂商”和一个机型下拉列表框“combo机型”,要求选中某个厂商时,只在机型下拉列表框中显示该厂商生产的机型。但是我不知道应该在下拉列表框组件的哪个相关属性中编写相关程序,以及要如何编写才能保证机型下拉列表框显示的内容正确,希望达人告知。
“combo厂商”的数据来源是“厂商资料.厂商名称”
“combo机型”的数据来源是“机型资料.机型”

5 个解决方案

#1


在厂商的下拉数据窗口的ItemChanged事件中写:
String ls_cs

ls_cs=String(data)
DataWindowChild   ldwc_jq

dw_jq.GetChild("机型",ldwc_jq)
ldwc_jq.SetTransObject(SQLCA)
ldwc_jq.Retrieve(ls_cs)
ldwc_jq.InsertRow(0)

#2


建议多加个字段,一个是厂商编码,两个表用编码关联

#3


我以前有加厂商编码,但我觉得下拉数据窗口显示厂商编码来让人选择的话比较不直观,为此我曾考虑在旁边放个文本框,一旦选择了哪个厂商编码,这个文本框就显示哪个厂商名称,但是因为用户不知道哪个厂商编码是代表哪个厂商名称,选择是只能一个个地试,很麻烦。而且当时我连下拉数据窗口的ItemChanged事件都不知道,根本不知道如何实现上述的功能,所以就去掉了厂商编码。现在如果要加上厂商编码,那么有没有办法让下拉数据窗口的数据源虽然是“厂商资料.厂商编码”,但显示的内容却是“厂商资料.厂商名称”,这样我就不需要增加额外的文本框来显示。而且这样一来,我也可以给机型数据表添加机型编码。

#4


combo厂商名称这个下拉数据窗口没有ItemChanged事件啊,只看到一个InteractiveChange事件。而我把下面这段代码复制进去的话,保存时提示:
--------------------------------------------------------------
String ls_cs                         &&提示无法识别的谓语动词

ls_cs=String(data)
DataWindowChild   ldwc_jq            &&提示无法识别的谓语动词

dw_jq.GetChild("机型",ldwc_jq)
ldwc_jq.SetTransObject(SQLCA)
ldwc_jq.Retrieve(ls_cs)
ldwc_jq.InsertRow(0)
--------------------------------------------------------------

#5


有人建议:在表单的init定义一个变量,并在机型资料表设置过滤条件:set filter to 机型资料.厂商名称=变量,在‘combo厂商’的lostfocus及interacivatechange中编写过程:将当前控件的VALUE赋值给变量,然后刷新‘combo机型’即可。 
这个方法似乎可行,但是我不知道如何给数据表设置过滤条件,请问我应该在哪里设置呢?

#1


在厂商的下拉数据窗口的ItemChanged事件中写:
String ls_cs

ls_cs=String(data)
DataWindowChild   ldwc_jq

dw_jq.GetChild("机型",ldwc_jq)
ldwc_jq.SetTransObject(SQLCA)
ldwc_jq.Retrieve(ls_cs)
ldwc_jq.InsertRow(0)

#2


建议多加个字段,一个是厂商编码,两个表用编码关联

#3


我以前有加厂商编码,但我觉得下拉数据窗口显示厂商编码来让人选择的话比较不直观,为此我曾考虑在旁边放个文本框,一旦选择了哪个厂商编码,这个文本框就显示哪个厂商名称,但是因为用户不知道哪个厂商编码是代表哪个厂商名称,选择是只能一个个地试,很麻烦。而且当时我连下拉数据窗口的ItemChanged事件都不知道,根本不知道如何实现上述的功能,所以就去掉了厂商编码。现在如果要加上厂商编码,那么有没有办法让下拉数据窗口的数据源虽然是“厂商资料.厂商编码”,但显示的内容却是“厂商资料.厂商名称”,这样我就不需要增加额外的文本框来显示。而且这样一来,我也可以给机型数据表添加机型编码。

#4


combo厂商名称这个下拉数据窗口没有ItemChanged事件啊,只看到一个InteractiveChange事件。而我把下面这段代码复制进去的话,保存时提示:
--------------------------------------------------------------
String ls_cs                         &&提示无法识别的谓语动词

ls_cs=String(data)
DataWindowChild   ldwc_jq            &&提示无法识别的谓语动词

dw_jq.GetChild("机型",ldwc_jq)
ldwc_jq.SetTransObject(SQLCA)
ldwc_jq.Retrieve(ls_cs)
ldwc_jq.InsertRow(0)
--------------------------------------------------------------

#5


有人建议:在表单的init定义一个变量,并在机型资料表设置过滤条件:set filter to 机型资料.厂商名称=变量,在‘combo厂商’的lostfocus及interacivatechange中编写过程:将当前控件的VALUE赋值给变量,然后刷新‘combo机型’即可。 
这个方法似乎可行,但是我不知道如何给数据表设置过滤条件,请问我应该在哪里设置呢?