请教VFP表格保存SQL查询结果问题 ?(在线等待)

mm45 2004-05-02 01:11:56
我做了一个查询表单

其中有:
一个字段选择下拉列表框(COMBO1),里面保存一个学生信息表的字段(如:学号,姓名,性别,年龄等)
一个关系选择下拉列表框(COMBO2),里面保存了查询关系(文字信息:等于,大于,小于...)
一个查询值输入文本框(TEXT1)

然后下面是一个表格(RECORDSOURCETYPE 属性已设置为4 SQL说明) 右边有一个查询按钮

我对其的处理:
在表单的INIT事件里
PUBLIC F1,H1,T1

一 字段选择处理 COMBO1
Click事件
FOR CT =1 TO THIS.LISTCOUNT
IF THIS.SELECTED(CT)
F1=THIS.LIST(CT)
EXIT
ENDIF
ENDFOR

二 关系选择处理
Click事件
FOR CT=1 TO THIS.LISTCOUNT
IF THIS.SELECTed(CT)
EXIT
ENDIF
ENDFOR

DO CASE
CASE CT=1
H1=""
CASE CT=2
H1="="
CASE CT=3
H1=">"
CASE CT=4
H1=">="
CASE CT=5
H1="<"
CASE CT=6
H1="<="
CASE CT=7
H1="!="
ENDCASE

这样选择字段与关系后 就可以通过SQL设置条件查询了.
然后想在那个查询按钮的Click事件中这样设置:
THISFORM.GRID1.RECORDSOURCE="一条上述的条件查询语句"
就这里我做不出来,请各位高手帮助


看我的做法
THISFORM.GRID1.RECORDSOURCE="SELECT * FROM 学生 WHERE &F1 &H1 THISFROM.TEXT1.VALUE INTO CURSOR GRID1"
可是不对呀 愁死了... 请帮我修改


谢谢...
...全文
124 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
myfoxprox 2004-05-05
关键是查询条件:
XFILTER=F1+H1+IIF(VARTYPE(THISFORM.TEXT1.VALUE)="N",ALLTRIM(STR(THISFORM.TEXT1.VALUE)),THISFORM.TEXT1.VALUE) &&我不知你年龄是不是数字类型?!是否还有其它类型?但都可以用VARTYPE()函数

SELECT * FROM 学生 INTO DBF TEMP.DBF WHERE &XFILTER

THISFORM.GRID1.RECORDSOURCE="TEMP.DBF"
THISFORM.REFRESH


  • 打赏
  • 举报
回复
mm45 2004-05-03
我写的那个在数值型数据查询时好使。。。 字符不能用 不知道为什么,还请各位多多帮助啊
  • 打赏
  • 举报
回复
Sunboyjava 2004-05-03
哪位还有高见啊 我觉得我做这种查询很常见啊 ,大哥们帮帮小妹吧
  • 打赏
  • 举报
回复
lina000 2004-05-03
这是我做的图书管理系统的按作者查询,原来跟你的问题差不多,下面的可做参考:
首先设置表格的columncount=你查询结果中总字段数 象我的表格中columncount=11


*指定与表格控制相绑定的数据源。设计时可用,运行时只读写。

open database C:\WINDOWS\DESKTOP\myfile\图书管理.dbc
sele bookinfo
THISFORM.grid1.RECORDSOURCE=''


SELE * FROM bookinfo where allt(author)==allt(thisform.text1.value) into cursor stable

IF _TALLY>0 &&&_TALLY是select等一些对表记录操作的数量或结果集的记录数
thisform.grid1.recordsourcetype=1


THISFORM.grid1.RECORDSOURCE='stable'

thisform.grid1.column1.header1.caption= "出版社ID"
thisform.grid1.column2.header1.caption= "ISBN号"
thisform.grid1.column3.header1.caption= "书名"
thisform.grid1.column4.header1.caption= "出版日期"
thisform.grid1.column5.header1.caption= "作者"
thisform.grid1.column6.header1.caption= "字数(千字)"
thisform.grid1.column7.header1.caption= "出版社ID"
thisform.grid1.column8.header1.caption= "印刷册数"
thisform.grid1.column9.header1.caption= "价格"
thisform.grid1.column10.header1.caption= "关键字"
thisform.grid1.column11.header1.caption= "摘要"


thisform.grid1.column1.controlsource= "bookid"
thisform.grid1.column2.controlsource= "isbn"
thisform.grid1.column3.controlsource= "tit"
thisform.grid1.column4.controlsource= "publishdate"
thisform.grid1.column5.controlsource= "author"
thisform.grid1.column6.controlsource= "words"
thisform.grid1.column7.controlsource= "publisherid"
thisform.grid1.column8.controlsource= "num"
thisform.grid1.column9.controlsource= "price"
thisform.grid1.column10.controlsource= "keywords"
thisform.grid1.column11.controlsource= "abstract"

else
MESSAGEBOX('没有符合要求的记录!')
ENDIF
THISFORM.GRID1.REFRESH
  • 打赏
  • 举报
回复
dfwxj 2004-05-02
错了,我看错了命令转行,正确的做法:

根据选择的条件,将合符条件的记录查询到一个临时表,表格的数据源类型设置为别名,数据源设置为临时表名

在查询前将表格的数据源置空,查询后设置为相应的临时表名,然后刷新表格
  • 打赏
  • 举报
回复
dfwxj 2004-05-02
正确的应该是:

THISFORM.GRID1.RECORDSOURCE="SELECT * FROM 学生 WHERE &F1 &H1 thisform.text1.value
  • 打赏
  • 举报
回复
dfwxj 2004-05-02
肯定错了

THISFORM.GRID1.RECORDSOURCE="SELECT * FROM 学生 WHERE &F1 &H1

&F1是字段,&H1是逻辑运算符,那逻辑运算的值呢?你这条命令不完整!
  • 打赏
  • 举报
回复
相关推荐
发帖
VFP
加入

2533

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
申请成为版主
帖子事件
创建了帖子
2004-05-02 01:11
社区公告
暂无公告