最好别这样做。建议采用智能一点的办法,即文本框输入数据的该条件有用,没有输入数据的该条件不考虑。 cExprL=".T." IF !EMPTY(THISFORM.TEXT1.VALUE) cExprL=cExprL+".AND.学号='"+THISFORM.TEXT1.VALUE+"'" ENDIF *......其他条件仿照上述进行操作,主要是为了产生FOR条件的表达式。 *如果学号等字段不是字符型,那就需要进行数据转换了。 *如年龄为数值型,对应第2个文本框,则 IF !EMPTY(THISFORM.TEXT2.VALUE) cExprL=cExprL+".AND.年龄="+ALLTRIM(STR(THISFORM.TEXT2.VALUE)) ENDIF *...... SET FILTER TO &cExprl
use c:\xsgl\xs excl Cserch=" " For i=1 to 3 Cno=alltrim(str(i)) Cserch="ThisForm.Text"+allt(str(&Cno))+".value()" ?Cserch set filt to left(xh,2)=left(Cserch,2) i=i+1 EndFor
专门针对你的特定字段学号,且进行逻辑或运算的查询程序片段: cExprL="" FOR nCnt=1 TO 30 cCnt=ALLTRIM(STR(nCnt)) IF !EMPTY(THISFORM.TEXT&cCnt..VALUE) cExprL=cExprL+".OR.学号='"+ALLTRIM(THISFORM.TEXT&cCnt..VALUE+"'" ENDIF ENDFOR IF EMPTY(cExprL) SET FILTER TO ELSE cExprL=".F."+cExprL SET FILTER TO &cExprL ENDIF