《Visual FoxPro程序设计-电子教案-杜春敏 VFP第4章》由会员分享,可在线阅读,更多相关《Visual FoxPro程序设计-电子教案-杜春敏 VFP第4章(51页珍藏版)》请在金锄头文库上搜索。
1、主编 杜春敏,Microsoft,Visual FoxPro 程序设计,第4章 查询与视图,查 询,视 图,掌握利用查询设计器创建查询 了解视图的创建及更新数据的方法 了解查询和视图的相同点和不同点,4.1 查询,在Visual FoxPro中,查询是从指定的表或视图中提取符合条件的记录,然后按照设置的输出类型定向输出查询结果。用户还可以将所查询到的信息进行分组,对记录进行求和、计算平均值等。使用查询就像一个用户定义的函数一样,用它来完成一定的数据检索的功能。 查询是以.QPR为扩展名的文件保存在磁盘中,4.1.1 查询设计器,1启动查询设计器 启动查询设计器,可以使用菜单方式命令方式。 (1
2、)菜单方式。从“文件”菜单中选择“新建”,也可直接单击常用工具栏上的“新建”按钮,系统将显示“新建”对话框;在“新建”对话框中选择“查询”选项,然后单击“新建文件”按钮,打开“查询设计器”。 (2)命令方式 格式:CREATE QUERY 功能:打开“查询设计器”,建立指定名称的查询文件,其扩展名为.QPR。,(1)字段选项卡,用来指定查询结果中输出的字段、SUM或COUNT之类的合计函数或其他表达式。 方法:可通过双击“可用字段”中的字段(或直接双击表窗口中的字段),把它们添加到“选定字段”列表中,也可逐个选定再单击“添加”按钮或用鼠标拖动字段到“选定字段”框中。 可向上或向下拖动字段名左端
3、的移动框改变字段的输出顺序。在“函数和表达式”编辑框中可以输入或编辑表达式,单击“添加”按钮把它添加到“选定字段”中,【例4.1】用函数表达式生成学生的年龄。,(2)联接选项卡,指定联接类型并创建联接条件。,(3)筛选选项卡。,用来指定选择记录的条件,比如在字段内指定值或在表之间定义临时关系的联接条件。,字段名:指定设置条件的字段或表达式 条件:指定比较类型。 实例:指定具体的条件 大小写:选中该按钮,在查询字符串数据时忽略大小写。 否:逻辑取反操作,排除与该条件相匹配的记录 逻辑:在多个条件之间添加AND或OR逻辑连接 “插入”按钮:在所选定条件之上插入一个空条件。 “移去”按钮:从查询中删
4、除选定的条件。,(4)排序依据选项卡。,用来指定字段、函数或其他表达式为排序关键字及输出记录的顺序。,(5)分组依据选项卡,指定字段、SUM 或COUNT之类的合计函数,或用于把有相同字段值的记录合并为一组的其他表达式,对查询结果进行分组,(6)杂项选项卡,设置其他查询选项,4.1.2 建立查询,1筛选、排序记录,【例4.2】利用“XS.DBF”建立“学生年龄”查询,查询院系代号是C的学生学号、姓名、性别、班级、年龄和专业,并按出生日期升序输出。,进入查询设计器。操作过程:单击工具栏“新建”按钮在“新建”对话框中选择“查询”选项单击“新建文件”按钮在“添加表或视图”中选中“XS”表单击“添加”
5、按钮单击“关闭”按钮。 选择字段。在字段选项卡中,双击“可用字段”中的学号、姓名、性别、 班级、年龄、专业,把它们添加到“选定字段”列表。 输入条件。在“筛选”选项卡的字段名选择“院系代号”,条件为“=”,实例中输入C。 排序条件。在“排序依据”选项卡中,双击“选定字段”框中的出生日期字段,使其添加到“排序条件”框中,默认为升序。 运行查询。操作:查询运行查询。,2分组记录查询 【例4.3】利用“XS.DBF”建立“院系年龄”查询,查询每个院系的学生平均年龄和年龄总和。,进入查询设计器。操作过程:单击工具栏“新建”按钮在“新建”对话框中选择“查询”选项单击“新建文件”按钮在“添加表或视图”中选
6、中“XS”表单击“添加”按钮单击“关闭”按钮。 选择字段。在“字段”选项卡中,双击“可用字段”中的“院系代号”,添加到“选定字段”列表;在“函数或表达式”框中输入“AVG(YEAR(DAGE()-YEAR(出生日期) AS 平均年龄”,单击“添加”按钮;在“函数或表达式”框中输入“SUM(YEAR(DATE()-YEAR(XS.出生日期) AS 年龄总和”,单击“添加”按钮。 选择分组字段。在“分组依据”选项卡中,双击“选定字段”框中的“院系代号”字段,使其添加到“分组字段”框中。 运行查询。,3创建多表查询 Visual FoxPro提供了多表查询功能,以查询多个表中的相关信息。在建立多表查
7、询时,首先要将所有有关的表或视图添加到查询中,并按关键字建立联接,再确定显示字段、筛选条件、排序要求等。,【例4.4】利用学生表“XS.DBF”和成绩表“CJ.DBF”建立“学生成绩”查询,查询每个学生的专业、班级和成绩情况。,添加表到查询设计器。单击“文件”菜单选择“新建”选择“查询”选项单击“新建文件”按钮选中“XS.DBF”表单击“添加”按钮选中“CJ.DBF”表单击“添加”按钮,出现“联接条件”对话框。 建立联接条件。在对话框左边的下拉列表框中选择“XS.学号”,右边的下拉列表框中选择“CJ.学号”,联接类型选择“内部联接”单击“关闭”按钮,进入查询设计器。 选择字段。在“字段”选项卡
8、中,双击“可用字段”中的“XS.学号”、“姓名”、“性别”、“专业”、“班级”、 “课程号”、“成绩”,添加到“选定字段”列表。 运行查询。,4输出查询结果,表4.1 查询去向,操作步骤如下: 单击“查询”菜单,选择“查询去向”;或右击“查询设计器”,在快捷菜单中选择“输出设置”,此时系统将显示 “查询去向”对话框,此对话框允许向不同输出地点发送查询结果。 在“查询去向”对话框中选择输出去向,并输入相应参数。如:设置为表,单击“表”按钮,并在“表名”框中输入表的名称。,5运行查询 运行查询一种方法是单击常用工具栏的“运行”按钮执行该查询。 另一种是使用命令:DO 查询文件名.QPR。 注意:若
9、要查看生成的查询程序,即SELECT-SQL语句,可使用“查询”菜单中的“查看SQL”选项,或单击“查询设计器”的按钮。,第4章 查询与视图,查 询,视 图,4.2 视图,视图是从一个或多个表或视图中派生出的“表”,使用它可以从一个或多个相关联的表中提取有用信息,也可以用其更新数据并保存到数据库中。数据库中只保存它的定义,所以称它为虚表(或逻辑表)。 视图可由本地表、其他视图、服务器或远程数据源等来创建。 分为本地视图与远程视图。,4.2.1 创建视图,创建视图,可以使用向导、视图设计器和命令三种方法。 1使用向导创建视图 使用本地视图向导可以创建本地视图。若要在 ODBC 数据源的表上建立可
10、更新的视图,请使用远程视图向导。步骤如下: 在项目管理器中,选定一个数据库; 选定“本地视图”或“远程视图”,选择“新建”按钮; 选择“视图向导”按钮; 按照向导屏幕上的指令操作。,2命令方式创建视图,(1)创建本地视图 命令格式:CREATE SQL VIEW视图名 AS 其中,SELECT 语句可以是不含输出去向的SELECT查询语句,用以说明和限定视图中的数据。,【例4.5】可以使用以下代码创建包含“学生信息管理”数据库中“CJ.DBF”所有字段的视图: CREATE SQL VIEW CJview AS SELECT * FROM 学生信息管理!CJ,(2)创建多表视图,创建多表视图。
11、有以下两种方法。 方法1在项目管理器中选择视图名,再选择“修改”按钮,打开视图设计器。 方法2先打开数据库,再使用带视图名的 MODIFY VIEW 命令。,【例4.6】创建视图,从XS中查找包括学号、姓名、性别、课程号、成绩、籍贯、院系代号的学生信息等。 这里使用XS和CJ两个表。使用下面的命令创建视图,其中WHERE子句指明了视图的连接条件: OPEN DATABASE 学生信息管理 CREATE SQL VIEW XSCJVIEW AS ; SELECT * FROM 学生信息管理!XS,学生信息管理!CJ; WHERE XS.学号=CJ.学号,3使用视图设计器,视图设计器与查询设计器的
12、组成和操作类似,区别在于: 视图设计器有“更新条件”选项卡,而查询设计器没有。 视图可以更新数据源,而查询不能更新数据。 视图没有输出去向设置,而查询可以设置输出去向。 查询设计器设计的结果以扩展名“.QPR”的文件保存在磁盘,而视图的结果保存在数据库中。 打开视图设计器可以使用菜单方式或命令方式。,【例4.7】在“学生信息管理”数据库中,利用XS和CJ生成视图“XSCJVIEW”,要求视图中有学生的基本信息和成绩的详细信息,并按专业排序输出。其操作步骤如下:,(1)打开“学生信息管理”数据库。 (2)启动视图设计器。单击“新建”按钮选择“视图”单击“新建文件”选中“XS”表单击“添加”按钮选
13、中“CJ”表单击“添加”按钮单击“关闭”按钮 (3)选择视图字段。在字段选项卡中,双击“可用字段”中的“XS.学号”、“姓名”、“性别”、“出生日期”、“民族”、“专业”、“班级”、“院系代号”、“是否党员”、“课程号”、“成绩”,添加到“选定字段”列表 (4)设置联接条件。在“联接”选项卡中,输入联接条件“XS.学号=CJ.学号” (5)选定排序字段。在“排序依据”选项卡中,双击“选定字段”框中的专业字段,使其添加到“排序条件”框中,“排序选项”默认为升序。如图4-13所示。 (6)单击“运行”按钮,运行视图。 (7)保存视图。,4.2.2 维护视图,1修改视图命令 格式:MODIFY VI
14、EW 功能:打开“视图设计器”修改视图 2删除视图命令 格式:DELETE VIEW 【例4.8】从数据库中删除 Xsdaview 视图: DELETE VIEW Xsdaview 3重命名视图命令 格式:RENAME VIEW TO 【例4.9】将视图 Xsdaview 重命名为 Xsdaallview: RENAME VIEW Xsdaview TO Xsdaallview,4.2.3 远程视图与连接,使用远程服务器上的数据,可以创建远程视图。为了创建远程视图,必须首先建立远程数据库的连接。 1定义数据源和连接 数据源一般是ODBC数据源,它是一种连接数据库的标准。从Visual FoxP
15、ro内部可以定义数据源和连接。为了定义数据源,首先要安装ODBC驱动程序,并设置ODBC数据源名称,这样就可以利用这个数据源名来访问远程数据库服务器上的数据库资源。 2建立连接 在Visual FoxPro中,建立连接是根据数据源创建并保存在数据库中的一个命名连接,以便在创建远程视图时按其名称进行引用,而且还可以通过设置命名连接的属性来优化Visual FoxPro与远程数据源的通信。,创建命名连接操作步骤如下: 在“项目管理器”中,从“数据库”列表选择“连接”,然后单击“新建”按钮,打开“连接设计器”如图4-14所示。或者先打开数据库,在使用CREATE CONNECTION 命令打开“连接
16、设计器”。,在“连接设计器”中指定“数据源”,并且单击“验证连接”命令按钮验证一下能否成功地连接到远程数据库。 在数据库中,创建命名连接并不会用到任何网络或远程资源,因为Visual FoxPro只有要使用视图时才激活连接。在激活连接之前,命名连接只作为一条连接的定义,在数据库的.DBC文件占据一行。当使用远程视图时,Visual FoxPro根据视图中引用的命名连接,创建一个活动连接与远程数据源相连,然后将此活动连接作为管道向远程数据源发送数据请求。,3创建远程视图 在建立了有效的数据源或命名连接之后,就可以使用“项目管理器”或以编程方式来创建远程视图。在“项目管理器”中选择一个数据库,选择“远程视图”,然后单击“新建”按钮,打开“视图”设计器,远程视图与本地视图类似,只是在定义它时需要加入连接或数据源名称。远程视图的SQL语句使用响应服务器上的语法。 创建了视图后,打开“数据库设计器“,可看到视图在分层结构中与表具有相同的显示方式