VFP查询表单制作 将一张表的内容通过一个表格控件查询出来,输入姓名就可以查询到表单上的其他内容

2025-03-09 10:01:02
推荐回答(2个)
回答1:

cName=alltrim(thisform.txtXM.value)
看你的图,文本框的name应该是text1,所以上面换成
cName=alltrim(thisform.text1.value)
试试

回答2:

你的代码太复杂鸟。 使用 locate for 就不要使用 SELE 了
如果你的表的记录不多, 就不要使用 loca for 和sele sql 直接使用 set filter 命令 简单又直接

1 使用sql 命令是 查询按钮的CLICK 代码
if empty(thisform.txtXM.value)
retu && 如果没有输入姓名, 就直接返回
endif

local cName
cName=alltrim(thisform.txtXM.value)
sele 表1.学号,表1.会计缺勤次数,表1.高数缺勤次数,表1.英语缺勤次数,表1.计算机缺勤次数,表1.微观经济缺勤次数;
from 表1;
where 表1.姓名=cName ;
order by 表1.学号;
into cursor ling &&用sele语句将查询结果放入临时表 (临时表名称不需要引 号)
sele ling
if empty(ling.学号)
messagebox("查无此记录")
retu
endif

thisform.grid1.recordsourcetype=1
thisform.grid1.recordsource="" && 首先要置为空值
thisform.grid1.recordsource="ling" &&表格控件的数据源为temp这个临时表
thisform.grid1.refresh && 刷新一下

2 使用 set filter to

在表单的 INIT 事件中 设置 GRID 和表1的关联
thisform.grid1.recordsourcetype=1
thisform.grid1.recordsource=""
thisform.grid1.recordsource="表1"

查询按钮的CLICK 中的代码
if empty(thisform.txtXM.value)
retu && 如果没有输入姓名, 就直接返回
endif

local cName
cName=alltrim(thisform.txtXM.value)
sele 表1
set filter to allt(表1.姓名)==cName
thisform.grid1.refresh && 刷新一下