主讲老师:韩维良2020年1月二级VFP程序设计教程第五章查询与视图第一节查询一、查询设计器1、查询的概念查询就是预先定义好的一个SQLSELECT语句,在不同的场合可以直接或反复使用,从而提高效率。查询:是从指定的表或视图中提取满足条件的记录,可按照需要定向输出查询结果,以扩展名为qpr的文件保存,是一个文本文件,它的主体是SQLSELECT语句。二级VFP程序设计教程第五章查询与视图2、用查询向导建立查询①、执行“文件”菜单中的“新建”,或单击“常用”工具栏上的“新建”按钮,选择“查询”,再选“向导”——“查询向导”,用查询向导建立查询。例:用查询向导建立查询,显示仓库号、职工号、城市、工资等。二级VFP程序设计教程第五章查询与视图3、用查询设计器建立查询①、执行CREATEQUERY命令。②、执行“文件”菜单中的“新建”,或单击“常用”工具栏上的“新建”按钮。在”新建”对话框中,选择”查询”并单击”新建文件”打开查询设计器建立查询。③、在项目管理器的“数据”选项卡下选择“查询”,单击“新建”命令。还可以直接编辑.qpr文件中SELECT语句建立查询。二级VFP程序设计教程第五章查询与视图二级VFP程序设计教程第五章查询与视图打开查询设计器后,其中的各选项卡内容如下:“字段”选项卡对应于SELECT短语,指定所要查询的数据,这时可以单击“全部添加”选择所有字段,也可以逐个选择字段“添加”;在函数和表达式“编辑框中可以输入或编辑计算表达式,如“职工.工资*12”,再单击添加。“联接“选项卡对应于JOINON短语,用于编辑联接条件。“筛选”选项卡对应于WHERE短语,用于指定查询条件。二级VFP程序设计教程第五章查询与视图“排序依据”选项卡对应于ORDERBY短语,用于指定排序的字段和排序方式。“分组依据”选项卡对应于GROUPBY短语和HAVING短语,用于分组。“杂项”选项卡可以指定是否要重复记录(对应于DISTLNCT)及列在前面的记录(对应于TOP短语)等。例:用查询设计器建立查询,显示仓库号、职工号、城市、工资等。也可以将上章中学习的SQL语句拿来练习。二级VFP程序设计教程第五章查询与视图〖例〗哪些城市至少有一个仓库的职工工资为1250元(工资和城市字段不在一个表中)SELECT城市FROM仓库WHERE仓库号IN;(SELECT仓库号FROM职工WHERE工资=1250)二级VFP程序设计教程第五章查询与视图二、运行查询方法:DO查询文件名.qpr在查询设计器中,右击选“运行查询”。运行查询一般是在浏览器中显示结果,但是设计查询的目的不只是为了完成一种查询功能,因此我们还可以根据需要为查询输出定位查询去向。方法:“查询”菜单→“查询去向”,或者,查询设计器工具栏中的查询去向按钮,或者右击选“查询去向”。二级VFP程序设计教程第五章查询与视图在“查询去向”对话框中有7个按钮:“浏览”:在“浏览”窗口中显示查询结果。“临时表”:将查询结果存储在一个临时只读表中。“表”:将查询结果保存为一个命名的表。“图形”:使查询结果可用于MicrosoftGraph(Graph是包含在VisualFoxPro中的一个独立的应用程序),也可以用查询向导建立查询图表(向导中选择“图形向导”)。二级VFP程序设计教程第五章查询与视图“屏幕”:在VisualFoxPro主窗口或当前活动输出窗口中显示查询结果。“报表”:将输出送到一个报表文件(.FRX)。“标签”:将输出送到一个标签文件(.LBX)。三、查看查询对应的Select语句在查询设计器中,右击选“查看SQL”.也可执行如下命令直接编辑命令:modicommand查询文件名.qpr二级VFP程序设计教程第五章查询与视图第二节视图一、视图的概念视图是从表或其它视图中导出的表,它本身不独立存储在数据库中,数据库中只存放视图的定义(即数据词典)而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。视图并不存放任何真正的数据,只存放查询指令。打开视图时,执行其中的指令,生成虚拟表。视图只能存放在数据库中,并不以一个独立文件的形式存在。二级VFP程序设计教程第五章查询与视图视图兼有“表”和“查询”的特点:与查询类似的地方是:可以用来从一个或多个相关联的表中提取有用的信息;与表类似的地方是:可以用来更新其对应的表中的数据,并将更新结果永久保存在磁盘上;在VisualFoxPro中,视图分为“本地视图”和“远程视图”两种。“本地视图”的数据源来自本地机,而“远程视图”的数据源可以通过Microsoft的ODBC驱动程序从异地机上获取。二级VFP程序设计教程第五章查询与视图二、建立视图1、用视图向导建立视图方法:执行“文件”菜单中的“新建”,或单击“常用”工具栏上的“新建”按钮,选择“视图”,再选“向导”。例:用视图向导建立视图,显示仓库号、职工号、城市、工资等。过程与查询基本类同,只是比查询多了一个更新选项卡。二级VFP程序设计教程第五章查询与视图2、用视图设计器建立视图①、用CREATEVIEW命令打开视图设计器建立视图。②、执行“文件”菜单中的“新建”,或单击“常用”工具栏上的“新建”按钮。打开”新建”对话框,然后选择”视图”并单击”新建文件”打开视图设计器建立查询。二级VFP程序设计教程第五章查询与视图③、在项目管理器的“数据”选项卡中选择“本地视图”或”远程视图”,然后单击“新建”命令按钮打开视图设计器建立视图。还可使用SQLSELECT建立视图。二级VFP程序设计教程第五章查询与视图三、远程视图与连接建立远程视图,必须先定义ODBC数据源,建立远程连接。1、定义数据源和连接数据源一般指ODBC数据源,ODBC是连接数据库的通用标准,为了定义ODBC数据源必须首先安装ODBC驱动程序,利用ODBC驱动程序定义远程数据库中的数据源,也可以定义本地数据源。二级VFP程序设计教程第五章查询与视图本对话框中没有的,需要安装二级VFP程序设计教程第五章查询与视图2、连接连接是VFP中的一种对象,它是根据数据源创建,并保存在数据库中的一个命名连接。建立连接:1)createconnection2)新建“连接”3)在项目管理器的数据库列表中选择“连接”。打开连接设计器。完成上述两项工作后,才可以建立远程视图。二级VFP程序设计教程第五章查询与视图四、视图与数据更新视图是根据基本表派生出来的,被叫做虚拟表,但在VFP中,它已经不完全是操作基本表的窗口,还可通过视图更新表。通过视图更新基本表中的数据,需要在视图设计器中选中“发送SQL更新”。然后再在视图设计器中设置下列属性:a)指定可更新的表,默认“全部表”。b)指定主关键字段(单击指定钥匙列,必须)并指定可更新字段名(单击铅笔列)。c)检查更新合法性,即SQLwhere选项。d)使用更新方式,即是先删除后插入方式,还是直接替换。二级VFP程序设计教程第五章查询与视图二级VFP程序设计教程第五章查询与视图二级VFP程序设计教程第五章查询与视图对允许更新的字段值,在关闭数据库后再查看一次,即可看到更新结果。特殊注意的是:远程表的修改只能通过视图的修改来实现,通过更新对远程表进行修改。五、使用视图1.视图操作在数据库中使用USE命令打开或关闭视图。在“浏览器”窗口显示或修改视图中的记录。使用SQL语句操作视图。在文本框、表格控件表单或报表中使用视图作为数据源。二级VFP程序设计教程第五章查询与视图2.使用视图视图一经建立基本上可以像基本表一样使用,适用于基本表的命令基本都可以用于视图。查询与视图有十分相似的一面,也有显著的不同点,它们的区别是:⑴在VisualFoxPro系统中,视图可以更新数据并将更新结果发送回源数据表,而查询则不能。二级VFP程序设计教程第五章查询与视图⑵在VisualFoxPro系统中,生成的查询将以一个独立的文件形式存储在磁盘上,文件的扩展名为.qpr,而视图虽然具有表的一般特性,但只能存储于数据库中,不能独立存在。⑶由于查询是一个独立的文件,即一个应用程序,所以用户可以“运行”它,而视图只能“浏览”。⑷查询的输出结果可以由用户定制,而视图则不能。⑸在视图设计器中,有“更新条件”选项卡,而查询设计器中没有。