收藏 分销(赏)

VFP查询与视图PPT.ppt

上传人:天**** 文档编号:10250881 上传时间:2025-04-30 格式:PPT 页数:107 大小:2.78MB
下载 相关 举报
VFP查询与视图PPT.ppt_第1页
第1页 / 共107页
VFP查询与视图PPT.ppt_第2页
第2页 / 共107页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,主讲:杜春敏,第,3,章 数据库、查询与视图,第,3,章 数据库、查询与视图,1,学习要点,1,、查询向导和查询设计器的使用方法;,2,、单表查询和交叉表查询;,3,、查询设计器中各选项卡的功能和使用方法;,4,、本地视图和远程视图;,5,、视图向导和视图设计器的使用方法;,6,、使用视图。,查询与视图,2,第,3,章 查询与视图,3.2,用查询向导设计查询,3.3,用查询设计器设计查询,3.4,创建视图,3.5,数据库视图的操作,小 结,返回,退出,3.6,利用视图更新数据,3.7,利用视图处理自由数据,3,3.2,用查询向导设计查询,3.2.1,设计单表查询,3.2.2,建立交叉表,返 回,退 出,4,3.2.1,设计单表查询,查询向导可以引导用户快速设计一个查询。下面将示例使用查询向导设计一个简单的单表查询:从,XGGL,数据库的,Student,表中查询系部代号为“,04”,且是,99,级的所有学生的信息。,操作过程如下:首先从“文件”开始,选择,【,新建,】-“,查询”,然后单击,【,向导,】,按钮,则出现设计查询的方式选择对话框。,单击,5,选择,XGGL,数据库中的,Student,表,并将该表中的所有字段添加到“选定字段”列表框中。,单击,查询向导,字段选取,6,从中选择,Student.,系部代号,0,在此输入值,4,取默认值,从中选择“包含”,在此输入值,9,8,单击,单击,【,预览,】,按钮可以显示查询结果。根据要求,设置条件如上图。其中,虽然表中没有年级字段,但可通过“学号”得到年级(学号的前二位为年级)。,查询向导,筛选记录,7,选择排序字段,单击,【,添加,】,选择排序方式,调整排序顺序,移动按钮,单击,查询向导,记录排序,8,查询向导,限制记录,限制查询结果中所包含的记录数,说明:查询结果中所包含的记录数限制共有四种方式:,1,、“部分类型”中选择“所占记录百分比”,“数量”中选择“所有记录”,查询结果集中包含全部记录。,2,、“部分类型”中选择“所占记录百分比”,“数量”中选择“部分值”,再在“微调框”中设置数值,查询结果集中包含指定数值百分数的记录。,3,、,“部分类型”中选择“记录号”,“数量”中选择“所有记录”,查询结果集中包含全部记录。,4,、“部分类型”中选择“记录号”,“数量”中选择“部分值”,再在“微调框”中设置数值,查询结果集中包含指定数值的记录数。,单击,取默认值,查询结果集中包含全部记录,9,查询向导,完成,将查询以文件的形式(,.QPR,)保存到一个指定的目录中。,将查询保存到一个指定的目录中并运行该文件。,利用查询向导设计的查询功能有限,可以使用查询设计器修改它。,单击,可以查看查询结果集中的全部数据,打开,帮助文件,取消所建立的查询,返回到向导的上一步,结束向导,完成查询设计。,单击,10,保存设计的查询,目录选择下拉列表框,文件名输入文本框,文件类型选择下位列表框,在“文件名输入文本框”中输入“,Stud_query”,后,单击,【,保存,】,按钮,结束查询设计过程。,在项目管理器中的“数据”选项中的查询项下产生了一个查询文件,返回,11,3.2.2,建立交叉表,如果在上文所述的建立查询的第一步选择“交叉表向导”,则可以建立交叉表。下面通过示例来介绍如何建立交叉表。用,Grade,表中的数据建立一个交叉表,以显示每个学生所有课程的总成绩。,Grade,表中的部分数据如:,前面的设计过程同以上内容,但是在第二步需要确定交叉表的行和列。,12,交叉表设计向导,字段选取,选择数据库和表,选定字段,单击,单个字段选定按钮,全部字段选定按钮,单个字段撤消按钮,说明:在这一步先在“数据库和表”一选择一个数据库,再选择用以建立交叉表的数据表,然后再从可用字段列表框中选择要用的字段,交叉表只用三个字段,这一步可多选 字段。,全部字段撤消按钮,单击,13,交叉表向导,定义布局,说明:,(,1,)行,将要加入到交叉表中的第一个字段名,本示例中选择字段“学号”;,(,2,)列,将要加入到交叉表中的从第二个字段开始的若干个字段的字段名,注意这些从源表中选择的数据不能超过,254,个。本示例中选择字段“课程代号”;,(,3,)数据,对应行和列的运算结果,本示例中选择“课程成绩”。,按提示操作:从可用字段列表框中将“学号”字段拖入“行”框,将“课程代号”拖入“列”框,将“课程成绩”拖入“数据”框。,单击,14,交叉表查询向导,加入总结信息,说明:,这一步的操作,决定在生成的交叉表中要加入的一个字段的内容。,(,1,)求和:求出对应行和列的数据字段的和;,(,2,)计数:求出对应行和列的数据字段的数目;,(,3,)平均值:求出对应行和列的数据字段的平均值;,(,4,)最大值:求出对应行和列的数据字段的最大值;,(,5,)最小值:求出对应行和列的数据字段的最小值。,本示例中选择“求和”运算。如果不想加入总结信息,可以在“分类汇总”中选择“无”。,单击,15,交叉表向导,完成,将交叉表查询以文件的形式(,.QPR,)保存到一个指定的目录中。,将交叉表查询保存到一个指定的目录中并运行该文件。,将交叉表查询保存到一个指定的目录中并打开“查询设计器”修改它。,对于值为空的记录是否以,.NULL.,填充,说明,:,系统默认值是“保存交叉表查询”和“显示,NULL,值”。,选择“保存并运行交叉表查询”后单击,16,交叉表保存及运行结果,按上一步的操作完成后,进行到“另存为,”,对话框中,将该查询取名为,Grad_Query,,然后保存在默认的目录中。,保存后,系统进入到数据查询过程,稍候系统将查询结果显示出来。如:,从中可以看到,凡是没有数据的栏,就被,.NULL.,值填充,且有许多数据丢失。,交叉表可以用数据过滤处理,在下一节中介绍。,返回,17,3.3,用查询设计器设计查询,3.3.1,确定各表间的联接关系,退 出,3.3.2,选定查询字段,3.3.3,筛选记录,3.3.4,查询结果排序,3.3.5,建立分组查询,3.3.6,杂项的设置,3.3.7,定向输出查询结果,3.3.8,运行查询,返 回,18,3.3,用查询设计器设计查询,在实际应用中,查询向导设计的查询往往不能满足需求。这时还可以采用查询设计器方便灵活的设计各种查询,也可以先用查询向导设计一个简单的查询,再打开并修改它。,将上一节建立的,Grad_Query,交叉表查询,用,“,查询设计器,”,进行修改,使用之包含尽可能少的空栏。,可以通过以下所提供的多种方法之一来打开查询设计器:,从“项目管理器”启动查询设计器,1,、在,“,项目管理器,”,中选择,“,数据,”,选项卡,再选取,“,查询,”,项,再单击,【,新建,】,,进入查询设计方式选择对话框后单击,【,新建查询,】,,,则启动“查询设计器”,。,2,、在,“,项目管理器,”,中选择,“,数据,”,选项卡,从,“,查询,”,项中选择一个已存在的查询文件,再单击,【,修改,】,,也,启动“查询设计器”,。,19,从,【,文件,】,菜单启动查询设计器,选择系统菜单中的,【,文件,】|【,新建,】,命令,在“新建”对话框中选中“文件类型”下的“查询”单选项,再单击右边的,【,新建文件,】,按钮,也可启动“查询设计器”;,使用,CREATE QUERY,命令,也可启动“查询设计器”,20,查询设计器下部分的窗口中有几个选项卡,其含义简介如下:,(,1,),“,字段,”,:用来选定包含在查询结果中的字段;,(,2,),“,排序依据,”,:用来决定查询结果输出中记录或行的排列顺序;,(,3,),“,联接,”,:用来确定各数据表或视图之间的联接关系;,(,4,),“,筛选,”,:相当于命令,SET FILTER TO,,利用过滤的方法查找一个特定的数据子集;,(,5,),“,分组依据,”,:所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可以完成基于一组的计算。,返回,查询设计器窗口,21,查询文件设计与创建步骤,要设计一个查询文件,首先必须明确查询的目的是什么,即想要得到哪些数据,并以什么方式存在;或者想要得到满足某些条件的特定记录,或者想要知道某些记录的字段值组合成的表达式按某一方式输出。明确了输出的数据后,就可以开始设计查询了,一般要通过以下几个步骤进行:,(,1,)启动查询设计器;,(,2,)选择出现在查询结果中的字段;,(,3,)设置选择条件来查找可给出所需结果的记录;,(,4,)设置排序或分组选项来组织查询结果;,(,5,)选择查询结果的输出类型:表、报表、浏览等;,(,6,)运行查询。,22,3.3.1,确定各表间的联接关系,示例,:创建一个含有多个表中信息的查询。在,XGGL,数据库中有三个表:,Student,、,Grade,、,Courses,,现在想知道学号前四位是,9904,和,9804,的所有学生考试的成绩。,当在多个表或视图间进行查询时,需要指出这些表或视图间的联接关系。,操作方法如下:,启动查询设计器,在,“,添加表和视图,”,对话框中从,“,数据库,”,中选择,GXGLXT,库,在,“,数据库中的表,”,中选择,Student,表,单击,【,添加,】,按钮,再选择,Grade,表,再单击,【,添加,】,,,23,此时系统自动弹出一个,“,联接条件,”,,询问是否根据两表中都有的,“,学号,”,字段建立内部联接,单击,“,确定,”,,两表间就有了一条连线,代表它们之间的联接。然后再添加,Courses,表,最后关闭对话框。,24,在“查询设计器”中选择“联接”选项卡,如图:,25,(,1,),Inner Join:,内部联接,指定只有满足联接条件的记录包含在结果中,此类型是默认的,也是最常用的;,(,2,),Right Outer Join,:右联接,指定满足联接条件的记录,以及满足联接条件右侧的表中记录(即使不匹配联接条件)都包含在结果中;,(,3,),Left Outer Join:,左联接,指定满足联接条件的记录,以及满足联接条件左侧的表中记录(即使不匹配联接条件)都包含在结果中;,(,4,),Full Join,:完全联接,指定所有满足和不满足联接条件的记录都包含在结果中。,如果想修改各表间的联接,双击查询设计器上部窗口表之间的连线,系统将弹出“连接条件”对话框;或者通过打开查询设计器下部的“联接”选项卡进行。一般不应随便更改连接条件,不然会与实际数据间的关系不符。,在,VFP6,中表间的联接有四种类型,分别是:,26,“,条件”列表中包含如下几项:,(,1,),=,:指字段值与实例相等;,(,2,),LIKE,:表示“字段名”栏中给出的字段值与“实例”栏中给出的文本值之间执行不完全匹配,它主要针对字符类型。例如,如设置查询条件为“,Student.,学号,LIKE 9904”,,那么诸如“学号”字段前四位为,9904,的记录都满足该条件;,(,3,),=,:表示在“字段名”栏中给出的字段值与“实例”栏中给出的文本值之间执行完全匹配检查,它主要是针对字符型。,(,4,),:即为“字段名”栏中给出的字段的值应大于“实例”栏中给出的值;,(,5,),=,:即为“字段名”栏中给出的字段的值应大于或等于“实例”栏中给出的值;,(,6,),:即为“字段名”栏中给出的字段的值应小于“实例”栏中给出的值;,27,(,7,),、,=,、,、,=,FilterCondition,:指定包含在查询结果中的记录必须满足条件。筛选条件的数目没有限制,只要将它们用,.AND.,或,.OR.,操作符连接起来即可。也可以使用操作符,.NOT.,对逻辑表达式取反,或使用,EMPTY(),函数检查字段是否为空等。,GROUP BY GroupColumn,:按列的值对查询结果进行分组。,GroupColumn,可以是常规的表字段名,也可以是一个包含,SQL,字段函数的字段名,还可以是一个数值表达式指定查询结果表中的列位置。,HAVING FilterCondition,:指定包含在查询结果中的组必须满足的条件。它应和,GROUP BY GroupColumn,一起使用。,UNION ALL SELECTCommand,:把一个,SELECT,语句的最后查询结果同另一个,SELECT,语句最后的查询结果组合起来。,ALL,防止,UNION,删除组合结果中的重复行。,ORDER BY Order_Item,:根据列的数据对查询结果进行排序。每个,Order_Item,都必须对应查询结果中的一列。,72,用,SELECTSQL,命令完成上节的设计任务:,SELECT,Department.,系部名称,Classzc.,班级名称,Student.,学号,;,Student.,姓名,Course.,课程名,Grade.,课程成绩,;,FROM,gxglxt!department INNER JOIN gxglxt!classzc;,INNER JOIN gxglxt!student;,INNER JOIN gxglxt!grade;,INNER JOIN gxglxt!course;,ON Grade.,课程代号,=Course.,课程代号,;,ON Student.,学号,=Grade.,学号,;,ON Classzc.,班级代号,=Student.,班级代号,;,ON Department.,系部代号,=Classzc.,系部代号,;,WHERE,Classzc.,系部代号,=04;,.AND.Grade.,开课学期,=,第,1,学期,;,ORDER BY,Student.,学号,;,INTO CURSOR,视图,1,73,运行该,SELECT,语句后,选择,【,显示,】|【,浏览“视图,1”】,屏幕显示如图:,返回,74,3.4.3,创建远程视图,1,、用视图向导创建远程视图,创建使用远程数据(,ODBC,)的视图,必须存在一个数据库来保存视图,同时还需要存在数据源或命名连接。如果没有打开数据库,系统将提示打开数据库或创建数据库。,在运行“远程视图向导”之前,可以在“选项”对话框的“远程数据”选项卡上设置远程视图和连接的默认选项。也可以在“连接设计器”中创建连接。,如果要利用远程视图向导创建远程视图,则选择,【,文件,】|【,新建,】,命令,在弹出的新建对话框中选中远程视图,然后单击,【,向导,】,按钮。就会进入远程视图向导对话框中。或者在数据库设计器工具栏中单击,【,新建远程视图,】,按钮,选择使用向导。,75,创建远程视图主要有以下步骤:,1,、,数据源选取,2,、,字段选取,3,、,为表建立关系,4,、,包含记录,5,、,排序记录,6,、,筛选记录,7,、,完成,在第一步数据源选取中,可以在可用的数据源列表框中选择一种,ODBC,数据源或者一个已经建立的连接。如果选择的是一种未连接任何数据源的,ODBC,数据源,系统将显示一个“确认连接”对话框,从中选择一个数据源。当选择的,VFP Tables,或,VFP,76,Databases,时,会打开建立数据源对话框。在此对话框中为数据库选择一种类型,同时在,Path,中输入远程数据源的文件名或者使用,【Browse】,按钮选择一个文件作为远程数据源。,选择数据源以后,向导就会进入下一步,以后的步骤与本地视图及创建查询没有太大的差别,在此不再赘述。,77,2,、利用视图设计器创建远程视图,创建新的远程视图首先必须要有同数据源的连接。,在数据库设计器中单击鼠标右键选择,【,新建远程视图,】,或者在,【,文件,】,下的,【,新建,】,命令,在新建对话框中选择远程视图,并单击,【,新建文件,】,按钮。此时会显示选择连接或数据源对话框,在此对话框中选择连接或者可用的数据源。如图。,78,如果已经存在定义的连接,该对话框中就显示所定义的连接。如果要定义新的连接,可单击,【,新建,】,按钮,出现图示的“连接设计器”。,79,在数据源下面的下拉选项框中选择,Visual FoxPro Database,项,其它项均采用系统默认设置,然后选择,【,验证连接,】,按钮。如果为这个连接指定了一个数据库,则会出现“连接成功”的提示信息,否则,将出现如图所示的连接配置(,Configure Connection,)对话框。,在该对话框中选择,【Browse】,后将出现图示的“选择数据库”(,Select Database,)对话框。,80,在此对话框中可以选择本地存在的数据库或网上邻居中设置为共享的数据库。然后选择,【,打开,】,,就会在“连接配置,Configure Connection”,对话框中“,Path”,后的文本框中加入所添加的数据库文件名及其所在的路径,如“,092FOXPRO,上机操作,Visualfp.dbc”,。然后按,【OK】,,系统会告诉“连接成功”。,然后再在“连接设计器”中单击,【,确定,】,,接着弹出“保存对话框”,默认的连接名为“连接,1”,,可以采用默认的连接名,也可以重命名连接名,再单击,【,确定,】,。,81,在保存连接后,“远程视图设计器”进入“打开”对话框。,在视图设计器中对加入的表创建远程视图的操作与建立本地视图的操作一样,此处不再赘述。,82,3,、,控制如何检查更新冲突,如果在一个多用户环境中工作,服务器上的数据也可以被别的用户访问,也许别的用户也在试图更新远程服务器上的记录,为了让,VFP,检查用视图操作的数据在更新之前是否被别的用户修改过,可使用更新条件选项卡上的选项。,在更新条件选项卡中,,SQL WHERE,子句包括框中的选项可以帮助管理遇到多用户访问同一数据时应如何更新记录。在允许更新之前,,VFP,先检查远程数据源表中的指定字段,看看它们在记录被提取到视图中后有没有改变,如果数据源中的这些记录被修改,就不允许更新操作。,在“更新条件”选项卡中可以设置,SQL WHERE,子句。,这些选项决定哪些字段包含在,UPDATE,或,DELETE,语句的,WHERE,子句中,,VFP,正是利用这些语句将在视图中修改或删除的记录发送到远程数据源或源表中,,WHERE,子句就是用来检查自从提取记录用于视图中后,服务器上的数据是否已改变。,83,关键字段:当源表中的关键字段被改变时,使更新失败。,关键字和可更新字段:当远程表中任何标记为可更新的字段被改变时,使更新失败。,关键字和已修改字段:当在本地改变的任一字段在源表中已被改变时,使更新失败。,关键字和时间戳:当远程表上记录的时间戳在首次检索之后被改变时,使更新失败(仅当远程表有时间戳列时有效)。,4,、定制视图,同本地视图一样,可以在远程视图中包含表达式,设置提示输入值,也可以设置高级选项来协调与服务器交换数据的方式,(,1,)控制更新方法,若要控制关键字段的信息实际上在服务器上更新的方式,可使用视图设计器中更新条件选项卡中,“,使用更新,”,中的选项。如图,84,当记录中的关键字更新时,这些选项决定发送到服务器或源表中的更新语句使用什么,SQL,命令。,可指定先删除记录,然后使用在视图中输入的新值取代原值(,SQL DELETE,然后,INSERT,),也可指定使用服务器支持的,SQL UPDATE,函数来改变服务器的记录。,(,2,)在远程视图中添加表达式,若要在视图中添加表达式,可在“筛选”选项卡中,从“字段名”框中选择“表达式”。,当视图基于远程数据源时,在“表达式设计器”中显示的函数反映了服务器所支持的函数。可以查看服务器文档中列出的该服务器所支持的函数列表,,VFP,不对构造的表达式作语法分析,而是将它们发送到远程服务器上。,85,5,、,建立连接,使用远程视图,无需将所有记录下载到本地计算机上即可提取远程,ODBC,服务器上的数据子集。可以在本地机上操作这些选定的记录,然后把更改或添加的值返回到远程数据源中。,有两种连接远程数据源的方法,可以直接访问在机器上注册的,ODBC,数据源,也可以用连接设计器设计自定义连接。,在安装,VFP,时,选择,VFP,的“完全”或“自定义”安装选项,就可以把,ODBC,安装在系统中。,如果想为服务器创建定制的连接,可以使用连接设计器,创建的连接将作为数据库的一部分保存起来,并含有如何访问特定数据源的信息。,使用连接设计器能够创建并修改命名连接。因为连接是作为数据库的一部分存储的,所以仅在有打开的数据库时才能使用连接设计器。,连接设计器对话框中有如下选项:,(,1,)指定的数据源,86,数据源、用户标识、密码指定,VFP,显示以下三个框:,数据源:允许从已安装的,ODBC,数据源列表中选择一个数据源。,用户标识:如果数据源需要用户名称或标识,允许键入。,密码:如果数据源需要密码,允许键入密码。,数据库:可以选择一个数据库,作为所选数据源连接的目标。,连接串:指定,VFP,显示连接串文本框,可在其中键入连接串。选择对话按钮,显示选择连接或数据源对话框,如图所示。,可以选择现有文件或机器数据源。,【,验证连接,】,:可以对那些刚输入了内容的连接进行检查。如果连接成功,则显示对话框提示此消息;如果连接失败,则出现错误信息。如果没有对话指定内容,则显示选择,87,数据库对话框,从中选择数据源。前文已作介绍。,【,新建数据源,】,:显示“,Data Sources”,对话框,可以在其中添加、删除或配置数据源。前文已作介绍。,(,2,)显示,ODBC,登录提示,未指定登录信息时显示:如果在命名连接定义中未存储用户标识和密码,则,VFP,用“,ODBC,数据源注册”对话框提示用户。,总显示:指定,VFP,总是使用“,ODBC,数据源注册”对话框提示用户,该框允许用户使用与存储在命名连接中不同的注册,ID,和密码。,从不显示:指定,VFP,从不提示用户。此选项确保更高的安全性。,(,3,)数据处理,此选项与用户用,DBSETPROP(),函数设置的连接属性相对应。,异步执行:指定异步连接。此选项与,Asynchronous,连接属性相对应。,显示警告信息:指定显示不可捕获警告。此选项与,Disp,88,warning,连接属性相对应。,批处理:指定以批处理方式进行连接操作。此选项与,BatchMode,连接属性相对应。,自动事务处理:指定自动执行事务处理。此选项与,Transactions,连接属性相对应。,包大小:当和远程数据位置之间传送信息时,可以指定传送信息网络包的大小(以字节为单位)。在下拉列表中选择或键入一个值。,(,4,)超时间隔,这些选项设置连接属性的值,也可用,DBSETPROP(),函数设置。,连接(秒):以秒为单位指定连接超时时间间隔。此选项与,ConnectTimeout,连接属性相对应。,查询(秒):以秒为单位指定查询超时时间间隔。此选取项与,QueryTimeout,连接属性相对应。,空闲(分钟):以分钟为单位指定空闲超时时间间隔。在指定的时间间隔后,活动连接变为不活动。此选项与,IdleTimeout,连接属性相对应。,等待时间(毫秒):以毫秒为单位指定在,VFP,确定,SQL,语句是否执行完毕之前经过的时间。此选项与,WaitTime,连接属性相对应。,返回,89,3.5,数据库视图的操作,3.5.1,使用视图,退 出,3.5.2,、显示视图结构,3.5.3,、重新命名视图,3.5.4,删除视图,3.5.5,创建视图索引,3.5.6,创建参数化视图,返 回,90,3.5.1,使用视图,建立视图后,不但可以用它来显示和更新数据,而且还可以通过调整它的属性来提高性能。处理视图类似处理表,可以:,使用,USE,命令并指定视图名来打开一个视图。,使用,USE,命令关闭视图。,在,【,浏览,】,窗口中显示视图。,在,【,查看,】,窗口中显示已打开的视图的别名。,将视图作为数据源,供表单或表格控件使用。,若要使用一个视图,可采取如下方法:,在项目管理器中先选择一个数据库,再选择视图名,然后单击,【,浏览,】,按钮,在,【,浏览,】,窗口中显示视图。,使用编程的方式访问视图。,下面的代码在,【,浏览,】,窗口中显示存放在,c:gxglxt,目录下,gxglxt,数据库中的视图,1,:,open database c:gxglxtgxglxt,use,视图,1,91,browse,在使用一个视图时,视图将作为临时表在自己的工作区打开。如果此视图基于本地表,则,VFP6,会在另一个工作区同时打开基表。如果没有打开任何表,或先执行,Close All,命令后再执行以上命令,则视图,1,在工作区,1,打开,而其基表则在工作区,2,打开。要查看基表,可以通过选择系统菜单上的,【,窗口,】|【,数据工作期,】,打开“数据工作期”窗口。但有一个例外,如果视图是基于远程表,则基表将不在工作区中打开。而只在,【,查看,】,窗口中显示远程视图的名称。,返回,92,有时用户只想了解视图的结构,而不关心视图中的数据。这样可以使用带,NODATA,子句的,USE,命令来快速显示视图的结构。例如:,open database c:gxglxtgxglxt,use,视图,1 nodata in 0,Select,视图,1,browse,通过运行上面的命令语句,将在,【,浏览,】,窗口中看到没有记录的视图,1,。因为使用,NODATA,子句时,,VFP6,为视图,1,创建一个永远返回,.F.,值的,WHERE,子句,而数据源上没有记录匹配,WHERE,子句的条件,所以没有记录被选择。,3.5.2,、显示视图结构,返回,93,3.5.3,、重新命名视图,建立一个视图以后,还可以为其重新命名视图,进行视图的重新命名,可以使用项目管理器或用,RENAME VIEW,命令。,在项目管理器中先选择一数据库,再右击要重新命名的视图。单击,【,重命名,】,按钮,出现一对话框后即可为视图输入新的名称。,使用,RENAME VIEW,命令。,例如,下面的代码将视图,2,重新命名为视图,1,:,rename view,视图,1,to,视图,2,说明:,在重新命名视图之前,必须打开包含要命名视图的数据库,。,返回,94,使用,DELETE VIEW,命令。,例如,如果要删除数据库,xsglxt,中的视图,2,,可以键入以下的命令语句:,delete view,视图,2,说明:,在删除视图之前,必须打开包含要删除视图的数据库并设置其为当前数据库。,返回,3.5.4,删除视图,视图同表一样也是可以删除的,删除视图可以使用项目管理器或使用,DELETE VIEW,命令。,在项目管理器中选择一个数据库,再选择要删除的视图,然后用鼠标右击,单击,【,移去,】,按钮,即可删除所选的视图。,95,3.5.5,创建视图索引,同为表建立索引一样,也可以为视图建立索引。但与表不同的是,在视图上创建的本地索引不能永久保存,它们随着视图的关闭而消失。为视图建立本地索引,,可以使用,INDEX ON,命令。关于该命令的参数,在创建表的索引时已有介绍。,另有一点需要注意的是,在决定是否在视图上建立索引时,要考虑视图结果集合的大小。对于一个大的结果集合来说,索引要花费很长的时间,并可能降低视图的性能。因此,要根据实际情况处理。,96,3.5.6,创建参数化视图,VFP,可以创建具有提示输入值来查询信息的视图,称为参数化视图,这样的视图具有更大的灵活性和更强的适应性。可避免每取一部分记录值就要建立视图的情况。,可用以下方法创建参数化视图:,(,1,)打开视图设计器,从,【,查询,】,菜单中选择,【,视图参数,】,命令,此时系统弹出视图参数对话框,如图,97,(,2,)在视图参数对话框中输入参数名及其数据类型。此例中建立一个名为“系部代号”的视图参数,此视图参数可以任意取,但数据类型要和所要查询的记录类型一致。参数名可以是字母字符、数字和单引号的任意组合。,(,3,)按下确定按钮,就为此视图建立了一个视图参数了。,下面设计一个带参数的视图(视图,4,):,(,1,)打开“视图设计器”,选定表,Classzc,、,Student,、,Course,和,Grade,四个表,并选取,.Classzc.,系部代号、,Classzc.,班级名称、,Student.,学号、,Student.,姓名、,Course.,课程名、,Grade.,开课学期、,Grade.,课程成绩这,7,个字段名作为输出字段。,(,2,)在“筛选”选项卡中的“字段名”下拉列表框中选择,Classzc.,系部代号,在“条件”列表框中选定“,=”,,在“实例”文本框中输入“,?,系部代号”。这个问号表示引用一个表达式所需要的参数。问号后的文字标识了这个参数的名称。同时还可以设定如“,Grade.,开课学期,=?,开课学期”。,(,3,)选择,【,查询,】|【,视图参数,】,,进入“视图参数”对话框,,98,在“参数名”文本框中输入参数名称“系部代号”,在“类型”下拉列表框中选定参数的类型为“字符型”,同样还输入“开课学期”、“字符型”,然后单击,【,确定,】,按钮。,(,4,)通过选择,【,查询,】|【,运行查询,】,命令,或通过单击鼠标右键再选择,【,运行查询,】,命令,系统弹出如图所示的视图参数对话框。,在此对话框中可以输入将要查询的参数的某一具体数值,在此输入“,05”,;在后面弹出的“输入一个字符型值,供开课学期使用”对话框中输入,第,1,学期,。,单击确定按钮,查询的结果即显示在屏幕上。,返回,99,3.6,利用视图更新数据,在项目管理器中选择“视图,3”,,单击,【,修改,】,,在视图设计器中选择“字段”选项卡,如图。,返回,100,在上图中,请注意,Grade,表中的字段。,选择“更新条件”选项卡,进行如图设置:,设定关键字段和可修改字段。,注意:因为表,Grade,中每个字段的值都不唯一,所以要用组合关键字(学号,+,课程代号,+,开课学期),存档并显示结果。选,【,文件,】|【,保存,】,或从工具栏中单击保存按钮保存此视图。选取菜单,【,查询,】|【,运行查询,】,查看结果,为视图参数输入“,04”,(带定界符)、“第,1,学期”后的运行结果如图:,101,修改视图数据。既然我们已经为视图,3,视图文件设定关键字段与可更新字段,也就是设定了视图文件中哪些字段可以经过修改而自动更正原始数据文件内容,现在就来验证这些设定是否生效。,将视图中最后一条记录的“课程成绩”由,62,改为,99,。,102,99,在视图中更改此处数据,更改完毕后操作光标离开这条记录,观察,Grade,表中相关记录变化的情形。,从结果可以看出:,Grade,表中的学号和课程成绩已随着视图文件的更改而自动修正了。表示我们设定的可更新字段生效。,99,返回,103,3.7,利用视图处理自由数据,我们经常需要将一些数据从主数据库中分离出来进行操作,比如在下面的一些情况中:,(,1,)数据大量的存放在一个地方(大型数据库主要由,MIS,服务器维护),而我们却只对其中某方面的数据感兴趣,比如我们只想了解,990520,班的学生,就可以构造一个包含相关信息的视图,然后将数据从主数据库中分离出来,使之成为游离数据,允许对其数据进行更新,最后把变动过的数据提交给来源数据库;,(,2,)用于地理位置较远的情况,若条件不允许与数据库相连,则可事先将有用的数据子集装在便携机上,独立于主数据库操作这些数据,以后再用这些调整后的数据更新主数据库。,在这样的情况下,我们可以使用,Visual FoxPro,提供的处理游离数据的功能,用与主数据库相连的视图建立数据的子集,这样就脱离了主数据库对游离数据进行操作,可以直接访问视图,也可以通过应用程序访问。最后,还可以将数据上载回主数据库。,下面我们就介绍如何创建游离视图。,返回,104,3.7.1,创建游离视图,经过需求分析确定了脱机使用的数据子集之后,就可以使用已有的视图或是创建新视图。如果已有视图返回的记录正是脱机操作时想要的,可直接使用它,否则需要以编程的方式创建视图。游离视图中包含的数据存储在本地机数据库中的一个,.DBF,文件中。,如果要在游离视图中修改数据,则要在使之游离前确认视图可更新。由于视图是游离的,只能以设置它的更新属性,不能在“视图设计器”中修改游离视图。,可使用,CREATE SQL VIEW,命令,跟之以,CREATEOFFLINE(),命令来创建游离视图。例如,以下代码创建一个游离视图,用于显示来自联机数据库中“,student”,和“,grade”,表中的数据。由于没有指定更新条件,因此视图是只读的。,CREATE SQL VIEW test1,CONNECTION,连接,1,AS SELECT*FROM student INNER JOIN grade;,ON student.,学号,=grade.,学号,;,CREATEOFFLINE(“test1”),返回,105,3.7.2,显示和修改游离视图,为游离数据创建了视图后,就可以在应用程序中像使用其他视图一样使用这些视图:添加、修改、删除记录。多个用户可以以共享模式同时访问同一数据库中的游离数据。,1,、使用游离数据,使用游离数据视图,可以像使用联机视图那样使用表单、报表或应用程序来显示和更新数据。例如以下代码用于打开,test1,视图:,USE test1,2,、管理游离数据,在一些情况下,尤其在多用户环境下,很多人同时操作相同的数据。在把游离数据更新到源数据库之前,可能希望检查一下那些被改动过的数据。使用带有,ADMIN,字句的,USE,命令可以查看对游离数据的所有修改,还可以有选择的放弃一些还没有与数据源相连的那些修改。例如,以下代码在管理员模式下打开,test1,视图:,USE test2 ADMIN,返回,106,小 结,1,、查询和视图是,VFP6,的重要组成部分,是非常相似的一种查询数据库中数据的方法。,2,、查询是以磁盘文件形式存放的程序,其扩展名为,.QPR,,它通过,DO,命令来执行。,3,、视图是一种定制的虚拟表,是依附于基表上的寄生表。,4,、建立查询分为单表查询、多表查询和交叉表查询三种。,5,、可以通过菜单、命令、项目管理器建立查询,通过菜单还可以使用查询向导,但查询向导的功能有限。,6,、视图分为本地视图和远程视图二种。,7,、建立本地视图的方法与建立查询的方法相似。,8,、建立远程视图需要有远程连接。,9,、可以通过视图更新源表中的数据,这是视图与查询的本质区别。,10,、查询和视图都可以通过,SQL-SELECT,语句实现,查询和视图的,SQL,语句可以通过显示,SQL,窗口按钮查看。,返回,107,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服