cName=alltrim(thisform.txtXM.value)
看你的图,文本框的name应该是text1,所以上面换成
cName=alltrim(thisform.text1.value)
试试
你的代码太复杂鸟。 使用 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 && 刷新一下