注册 登录
编程论坛 VFP论坛

怎样能让在文本框中输入数据时能让另一个表格控件中的数据依据文本框中输入的数据而显示对应的数据以供选择?

sanhuankeji 发布于 2023-04-16 18:36, 1121 次点击
我设计了一个进货表单,数据环境有两个表,一个是进货表,一个是物品表(包含了进货表中的物品编号、规格、型号等等)
物品表作为一个表格控件显示在表单上,现在是想要在录入进货表的物品名称时,让物品表中的数据依据我录入的数据而变化,以便我能快速找到我要录入的这个物品。
不知道我说清楚了没有?

[此贴子已经被作者于2023-4-16 18:41编辑过]

11 回复
#2
sdta2023-04-16 18:53
上传相关文件,方便大家帮助你
#3
sam_jiang2023-04-16 19:12
在文本框的InteractiveChange事件中,对表格用set filter to 命令,可以快速筛选出你要的结果。
#4
sanhuankeji2023-04-16 19:14
只有本站会员才能查看附件,请 登录

像这样,在物品名称里输入字符时,右边的表格中只显示出与我输入的内容相匹配的数据。
比如说我输入CPU后,右边的表格中只显示前三个字符是CPU的所有数据。然后我在右边表格中双击其中的数据,表格中对应的数据就自动添加到左边的表中了。

[此贴子已经被作者于2023-4-16 19:16编辑过]

#5
sanhuankeji2023-04-16 19:21
回复 3楼 sam_jiang
我试了好多次了,
temp_mc=ALLTRIM(this.value)
temp_cd=LEN(temp_mc)
IF temp_cd>0
    SELECT wp
    SET FILTER TO LEFT(ALLTRIM(wp.mc),temp_cd)=temp_mc
    GO TOP
    thisform.grid1.Refresh
    SELECT jh
ENDIF
右边表格中的数据不会随着我输入的数据而发生变化,甚至是右边的表格中居然会没有任何数据显示
#6
sanhuankeji2023-04-16 19:22
回复 3楼 sam_jiang
只有本站会员才能查看附件,请 登录
#7
sdta2023-04-16 19:33
SET FILTER TO LEFT(ALLTRIM(wp.mc),temp_cd)=temp_mc
改为下面代码试下
SET FILTER TO temp_mc $ wp.mc
#8
sdta2023-04-16 19:43
代码应该放在文本框(名称)的lostfocus中
#9
sanhuankeji2023-04-16 20:11
回复 7楼 sdta
改用$是模糊匹配,我采用的是精确匹配。

问题找到了,其实我的代码完全没有问题,只是我调试的时候,应该是看物品名称,我却一直在看物品编号的变化。哈哈,走进阴沟里了。

感谢版主的鼎立相助!致敬!致敬!致敬!
#10
sanhuankeji2023-04-16 20:13
回复 8楼 sdta
你说的是全部输入完毕后在文本框失去焦点前才发生,达不到实时改变表格中显示数据的目的。
非常感谢回复!致敬!致敬!致敬!
#11
hdx602023-04-18 21:30
我也来个回答。本人一直用的。请仿照。
ccfilter=Alltrim(This.Value)
Select qdtz
If !Empty(ccfilter)
    Set Filter To ((Occurs(Upper(ccfilter),qdtz.pyzt)>0  Or Occurs(Upper(ccfilter),qdtz.mc)>0)  &&筛选包含当前输入拼音的记录
    Thisform.list1.Requery  &&重新查询数据源
Else
    Set Filter To  &&当前输入为空时清除筛选条件
    Thisform.list1.Requery
Endif
**这是拼音字头 或 名称(汉字)搜索
#12
hdx602023-04-18 21:33
只有本站会员才能查看附件,请 登录
1