看实例学VFP:更复杂的查询

在看实例学VFP:对表中记录进行定位与查找操作及看实例学VFP:用SELECT语句创建查询这两个例子中,我们可以在查询时可以从组合框中选定一个要查询的字段。本例对这种查询方式再做进一步改进,使之在查询时不仅可以从一个组合框中选取要查询的字段,还可以从另一个组合框中选定操作符(如<、=、>等),从而实现更复杂的查询。本例应用到了数据环境,并使用“数据1”数据库中的“人员信息表”作为数据环境的数据源,关于该数据库的情况已经在看实例学VFP:示例数据库一文中给出,这里不再详述。运行界面见本文末尾。

制作步骤如下:

一、新建表单,将其caption属性值设置为“更复杂的查询例子”,AutoCenter属性值设置为.T.,width属性值设置为520,height属性值设置为245,并保存为“更复杂的查询例子.scx”。

二、右击表单空白处,选“数据环境”命令,将“人员信息表”添加到数据环境中。在“数据环境设计器”中拖动“人员信息表”的标题栏到表单上,自动生成一个表格控件。由于是从数据环境中把“人员信息表”拖动过来由系统自动生成的,该表格控件的RecordSource属性及RecordSourceType属性已经由系统设置好了,不用管它,但name属性值系统给出的好长,为了书写代码的方便,我们把这个表格控件的name属性值修改为“grid1”。

三、在表格控件的下方添加一个Label控件,并把它的caption属性值设置为“查询条件”。

四、在label控件的右侧依次添加两个组合框控件、一个文本框控件及两个命令按钮command1和command2,并把这两个命令按钮的caption属性值依次设置为“查找”和“退出”。

五、适当调整各控件在表单上的位置,调整后的表单设计器如下图所示:

六、设置组合框控件的属性:

(一)组合框Combo1:RecordSourceType属性值设置为“8-结构”,RecordSource属性值设置为“人员信息表”。

(二)组合框Combo2:RecordSourceType属性值设置为“1-值”,RecordSource属性值设置为“,>,<,=,>=,<=,<>”。

七、添加事件代码:

(一)表单的unload事件代码:close data

(二)组合框Combo1的InteractiveChange事件代码:

if alltrim(this.displayvalue)="出生日期"
   thisform.text1.value={}
else
   thisform.text1.value=''
endif

(三)“查找”按钮command1的click事件代码:

if thisform.grid1.recordsource='临时人员信息表'
   thisform.grid1.recordsource='人员信息表'
endif'
private CXTJ
if empty(thisform.combo1.displayvalue) or empty(thisform.combo2.displayvalue) ;
   or empty(thisform.text1.value) && 判断列表框和文本框是否为空
    messagebox('请输入完整条件!',16,'系统提示')
   thisform.combo1.setfocus
else
  do case
    case alltrim(thisform.Combo1.Displayvalue)='基本工资'
     CXTJ=alltrim(thisform.combo1.displayvalue);     +' '+alltrim(thisform.combo2.displayvalue);
     +' '+alltrim(thisform.text1.value)
    case alltrim(thisform.Combo1.Displayvalue)='出生日期'
     CXTJ=alltrim(thisform.combo1.displayvalue);     +' '+alltrim(thisform.combo2.displayvalue);
     +' ctod("'+dtoc(thisform.text1.value)+'")'
    otherwise
     CXTJ=alltrim(thisform.combo1.displayvalue);     +' '+alltrim(thisform.combo2.displayvalue);
     +' "'+alltrim(thisform.text1.value)+'"'
  endcase
  Select * from 人员信息表 where &CXTJ. into cursor 临时人员信息表
  thisform.grid1.recordsource='临时人员信息表'
  thisform.grid1.backcolor=rgb(200,224,248)
endif

(四)“退出”按钮command2的click事件代码:thisform.release

八、运行“更复杂的查询例子.scx”,界面见下图:

参考资料:

vfp基础教程:http://bianceng.cnhttp://www.bianceng.cn/vfpjc/index0.htm

vfp初级教程:http://bianceng.cnhttp://www.bianceng.cn/cc/index.htm

vfp中级教程:http://bianceng.cnhttp://www.bianceng.cn/mcc/mcc.htm

vfp高级教程:http://bianceng.cnhttp://www.bianceng.cn/hcc/hcc.htm

VFP网络开发:http://bianceng.cnhttp://www.bianceng.cn/VFPwz/vfpwlkf.htm

vfp调用api函数:http://bianceng.cnhttp://www.bianceng.cn/VFPwz/vfpapi.htm

VFP报表打印:http://bianceng.cnhttp://www.bianceng.cn/VFPwz/vfpreport.htm

VFP常用技术:http://bianceng.cnhttp://www.bianceng.cn/VFPwz/vfpcyjs.htm

VFP经验汇总:http://bianceng.cnhttp://www.bianceng.cn/VFPwz/vfpjyhz.htm

VFP控件使用:http://bianceng.cnhttp://www.bianceng.cn/VFPwz/vfpkjsy.htm

VFP数据处理:http://bianceng.cnhttp://www.bianceng.cn/VFPwz/vfpsjcl.htm

本例代码在Win2003+VFP6.0环境下调试通过。

查看全套“菜鸟也学VFP”教程

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 控件
, 表单
, 查询
, 属性
, 复杂查询
, 组合
, 属性查询
#属性查询
,以便于您获取更多的相关知识。

时间: 2024-09-20 16:26:05

看实例学VFP:更复杂的查询的相关文章

看实例学VFP:对查询结果进行统计计算

本例对看实例学VFP:更复杂的查询一文做了进一步的改进,在满足查询功能的同时,还可以对查询结果进行统计计算.本例也应用到了数据环境,并使用"数据1"数据库中的"人员信息表"作为数据环境的数据源,关于该数据库的情况已经在看实例学VFP:示例数据库一文中给出,运行界面见本文末尾. 制作步骤如下: 一.新建表单,将其caption属性值设置为"对查询结果进行统计计算",AutoCenter属性值设置为.T.,width属性值设置为520,height属

看实例学VFP:对查询结果进行排序

本例是一个显示包括各记录的自然情况及实发工资的"工资排行榜".本例在表单的init事件中首先使用select语句对"工资表"的奖金.补助等进行计算,并将查询结果输出为一个包含"实发资金"和"员工编号"的名为lsJJ的临时表:然后对"人员信息表"和临时表lsjj进行表连接查询并对查询结果进行排序后输出为临时表lsb,查询结果中包括所需显示的字段及工资(这是经过计算后的实发工资),最后将lsb设为表格控件的数据

看实例学VFP:用SELECT语句创建查询

vfp中可以使用sql语句操作表,并且在使用sql语句操作表时不需要打开数据库.本例介绍的是select查询语句(数据检索),关于select语句的格式请参考:select SQL 命令 或sql语言教程. 在看实例学VFP:对表中记录进行定位与查找操作一文中,我们是使用locate语句作记录定位并同时使用了eof()函数,如果该函数返回真值,说明数据表中不存在所查询的记录并给出提示信息.本例用sql语句对这一部分进行了改写.与上例的区别大致的如下: 1.本例依然使用表格控件作为数据显示控件,表

看实例学VFP:去除查询结果中的重复记录

在看实例学VFP:将查询结果输出为表或文本文件以及之前的几个关于select语句应用的例子中,组合框控件Combo1的数据方面的属性我们是这样设置的:RowSourceType属性值设置为"1-值",RowSource属性值设置为"部门,性别,学历",即在设计时已经将组合框控件的数据源固定了.但这种处理方式在有的情况下是不合理的,比如本文要做这样一个例子:希望在运行时可以在组合框控件里选择"部门",按"部门"来查询.我们已经知

看实例学VFP:将查询结果输出为表或文本文件

在看实例学VFP:对查询结果进行汇总这个例子中,汇总结果是显示在表格控件中的.本文对这个例子再做进一步的改进,可以在运行时选择"数据表"或"文本文件",使之在把汇总结果显示到表格控件中的同时,将查询结果输出为"查询结果.DBF"或"查询结果.txt". 本例应用到了select语句中的Group By子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例应用到了数据环境,并使用"数

看实例学VFP:对查询结果进行汇总

本例应用到了select语句中的Group By子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例应用到了数据环境,并使用"数据1"数据库中的"人员信息表"作为数据环境的数据源,关于该数据库的情况已经在看实例学VFP:示例数据库一文中给出,运行界面见本文末尾. 制作步骤: 一.新建表单,将其caption属性值设置为"对查询结果进行汇总",AutoCenter属性值设置为.t.,width属性值设置为375

看实例学VFP:对时间段进行查询的例子

这个例子应用到了select语句中的between...and子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程. 本例运行时如下图: 本例用到了"数据1"数据库中的"人员信息表",关于该数据库的情况已经在看实例学VFP:示例数据库一文中给出,这里不再详述.   制作步骤如下: 一.新建表单,将其caption属性值设为"对时间段进行查询的例子",width属性值设为290,height属性值设为195,Auto

看实例学VFP:页框控件的使用

页框(pageframe) 也是vfp的一个基本控件,使用它可以制作出类似于windows对话框的效果,关于这个控件的常用属性和方法请参考vfp基础教程-页框和页一文. 页框控件本身是一个容器,其中可以包含若干个页(page):而页也是容器,可以在其中添加各种对象,因此无论是在设计时添加对象或者是代码引用,都要比别的控件麻烦些.在使用这个控件时需要注意:如果设计时要向某个页中添加对象,一定要在页框的编辑状态下选中该页的标签,然后再向该页中添加控件:另外在不同页之间切换时,需要处理好数据源的问题.

看实例学VFP:对组合框控件的再探索

组合框控件(combobox)在vfp中也是一个常用的控件,组合框兼具文本框和列表框的功能,它的名称大概也由此而来.在vfp基础教程-组合框控件(combobox) 中已经比较详细地给出了组合框的常用属性和方法. 在组合框控件的应用中,很重要的一个环节是它的RowSourceType及RowSource这两个属性的组合.比如在看实例学VFP:对表中记录进行定位与查找操作这个例子中是把组合框的RowSourceType属性值设为"1-值",而在看实例学VFP:去除查询结果中的重复记录这个