vfvisual-foxpro教程-第6章-课件_第1页
vfvisual-foxpro教程-第6章-课件_第2页
vfvisual-foxpro教程-第6章-课件_第3页
vfvisual-foxpro教程-第6章-课件_第4页
vfvisual-foxpro教程-第6章-课件_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习要点1、查询向导和查询设计器的使用方法;2、单表查询和交叉表查询;3、查询设计器中各选项卡的功能和使用方法;4、本地视图和远程视图;5、视图向导和视图设计器的使用方法;6、使用视图。第6章查询与视图2020/12/21VisualFoxPro6.0程序设计学习要点1、查询向导和查询设计器的使用方法;第6章查询与第6章查询与视图6.1用查询向导设计查询6.2用查询设计器设计查询6.3创建视图6.4数据库视图的操作小结返回退出6.5利用视图更新数据6.6利用视图处理自由数据2020/12/22VisualFoxPro6.0程序设计第6章查询与视图6.1用查询向导设计查询6.2精品资料3精品资料3你怎么称呼老师?如果老师最后没有总结一节课的重点的难点,你是否会认为老师的教学方法需要改进?你所经历的课堂,是讲座式还是讨论式?教师的教鞭“不怕太阳晒,也不怕那风雨狂,只怕先生骂我笨,没有学问无颜见爹娘……”“太阳当空照,花儿对我笑,小鸟说早早早……”44精品资料5精品资料5你怎么称呼老师?如果老师最后没有总结一节课的重点的难点,你是否会认为老师的教学方法需要改进?你所经历的课堂,是讲座式还是讨论式?教师的教鞭“不怕太阳晒,也不怕那风雨狂,只怕先生骂我笨,没有学问无颜见爹娘……”“太阳当空照,花儿对我笑,小鸟说早早早……”666.1用查询向导设计查询6.1.1设计单表查询6.1.2建立交叉表返回退出2020/12/27VisualFoxPro6.0程序设计6.1用查询向导设计查询6.1.1设计单表查询6.6.1.1设计单表查询

查询向导可以引导用户快速设计一个查询。下面将示例使用查询向导设计一个简单的单表查询:从GXGLXT数据库的Student表中查询系部代号为“04”且是99级的所有学生的信息。操作过程如下:首先从“项目管理器”开始,选择【数据】卡片中的“查询”,然后单击【新建】按钮,则出现设计查询的方式选择对话框。单击2020/12/28VisualFoxPro6.0程序设计6.1.1设计单表查询查询向导可以引导用户快速选择GXGLXT数据库中的Student表,并将该表中的所有字段添加到“选定字段”列表框中。单击查询向导——字段选取2020/12/29VisualFoxPro6.0程序设计选择GXGLXT数据库中的Student表,并将该表从中选择Student.系部代号0在此输入值4取默认值从中选择“包含”在此输入值98单击单击【预览】按钮可以显示查询结果。根据要求,设置条件如上图。其中,虽然表中没有年级字段,但可通过“学号”得到年级(学号的前二位为年级)。

查询向导——筛选记录2020/12/210VisualFoxPro6.0程序设计从中选择Student.系部代号0在此输入值4取默认值从中选选择排序字段单击【添加】选择排序方式调整排序顺序移动按钮单击查询向导——记录排序2020/12/211VisualFoxPro6.0程序设计选择排序字段单击【添加】选择排序方式调整排序顺序移动按钮单击查询向导——限制记录限制查询结果中所包含的记录数说明:查询结果中所包含的记录数限制共有四种方式:1、“部分类型”中选择“所占记录百分比”,“数量”中选择“所有记录”,查询结果集中包含全部记录。2、“部分类型”中选择“所占记录百分比”,“数量”中选择“部分值”,再在“微调框”中设置数值,查询结果集中包含指定数值百分数的记录。3、“部分类型”中选择“记录号”,“数量”中选择“所有记录”,查询结果集中包含全部记录。4、“部分类型”中选择“记录号”,“数量”中选择“部分值”,再在“微调框”中设置数值,查询结果集中包含指定数值的记录数。单击取默认值,查询结果集中包含全部记录2020/12/212VisualFoxPro6.0程序设计查询向导——限制记录限制查询结果中所包含的记录数说明:查询结查询向导——完成将查询以文件的形式(.QPR)保存到一个指定的目录中。将查询保存到一个指定的目录中并运行该文件。

利用查询向导设计的查询功能有限,可以使用查询设计器修改它。单击,可以查看查询结果集中的全部数据打开帮助文件取消所建立的查询返回到向导的上一步结束向导,完成查询设计。单击2020/12/213VisualFoxPro6.0程序设计查询向导——完成将查询以文件的形式(.QPR)保存到一个指定保存设计的查询目录选择下拉列表框文件名输入文本框文件类型选择下位列表框在“文件名输入文本框”中输入“Stud_query”后,单击【保存】按钮,结束查询设计过程。在项目管理器中的“数据”选项中的查询项下产生了一个查询文件返回2020/12/214VisualFoxPro6.0程序设计保存设计的查询目录选择下拉列表框文件名输入文本框文件类型选择6.1.2建立交叉表

如果在上文所述的建立查询的第一步选择“交叉表向导”,则可以建立交叉表。下面通过示例来介绍如何建立交叉表。用Grade表中的数据建立一个交叉表,以显示每个学生所有课程的总成绩。Grade表中的部分数据如:前面的设计过程同以上内容,但是在第二步需要确定交叉表的行和列。2020/12/215VisualFoxPro6.0程序设计6.1.2建立交叉表如果在上文所述的建立查询的第交叉表设计向导——字段选取选择数据库和表选定字段单击单个字段选定按钮全部字段选定按钮单个字段撤消按钮说明:在这一步先在“数据库和表”一选择一个数据库,再选择用以建立交叉表的数据表,然后再从可用字段列表框中选择要用的字段,交叉表只用三个字段,这一步可多选字段。全部字段撤消按钮单击2020/12/216VisualFoxPro6.0程序设计交叉表设计向导——字段选取选择数据库和表选定字段单击单个字段交叉表向导——定义布局说明:(1)行,将要加入到交叉表中的第一个字段名,本示例中选择字段“学号”;(2)列,将要加入到交叉表中的从第二个字段开始的若干个字段的字段名,注意这些从源表中选择的数据不能超过254个。本示例中选择字段“课程代号”;(3)数据,对应行和列的运算结果,本示例中选择“课程成绩”。按提示操作:从可用字段列表框中将“学号”字段拖入“行”框,将“课程代号”拖入“列”框,将“课程成绩”拖入“数据”框。单击2020/12/217VisualFoxPro6.0程序设计交叉表向导——定义布局说明:按提示操作:从可用字段列交叉表查询向导——加入总结信息说明:这一步的操作,决定在生成的交叉表中要加入的一个字段的内容。(1)求和:求出对应行和列的数据字段的和;(2)计数:求出对应行和列的数据字段的数目;(3)平均值:求出对应行和列的数据字段的平均值;(4)最大值:求出对应行和列的数据字段的最大值;(5)最小值:求出对应行和列的数据字段的最小值。

本示例中选择“求和”运算。如果不想加入总结信息,可以在“分类汇总”中选择“无”。单击2020/12/218VisualFoxPro6.0程序设计交叉表查询向导——加入总结信息说明:这一步的操作,决定在生成交叉表向导——完成将交叉表查询以文件的形式(.QPR)保存到一个指定的目录中。将交叉表查询保存到一个指定的目录中并运行该文件。

将交叉表查询保存到一个指定的目录中并打开“查询设计器”修改它。对于值为空的记录是否以.NULL.填充

说明:系统默认值是“保存交叉表查询”和“显示NULL值”。选择“保存并运行交叉表查询”后单击2020/12/219VisualFoxPro6.0程序设计交叉表向导——完成将交叉表查询以文件的形式(.QPR)保存到交叉表保存及运行结果按上一步的操作完成后,进行到“另存为…”对话框中,将该查询取名为Grad_Query,然后保存在默认的目录中。保存后,系统进入到数据查询过程,稍候系统将查询结果显示出来。如:从中可以看到,凡是没有数据的栏,就被.NULL.值填充,且有许多数据丢失。交叉表可以用数据过滤处理,在下一节中介绍。返回2020/12/220VisualFoxPro6.0程序设计交叉表保存及运行结果按上一步的操作完成后,进行到“另6.2用查询设计器设计查询6.2.1确定各表间的联接关系

退出6.2.2选定查询字段

6.2.3筛选记录

6.2.4查询结果排序

6.2.5建立分组查询

6.2.6杂项的设置

6.2.7定向输出查询结果

6.2.8运行查询返回2020/12/221VisualFoxPro6.0程序设计6.2用查询设计器设计查询6.2.1确定各表间的联接6.2用查询设计器设计查询

前面学习了如何使用VFP6中文版提供的查询向导快速的设计一个查询。但是在实际应用中,查询向导设计的查询往往不能满足需求。这时还可以采用查询设计器方便灵活的设计各种查询,也可以先用查询向导设计一个简单的查询,再在查询向导中打开并修改它。将上一节建立的Grad_Query交叉表查询,用“查询设计器”进行修改,使用之包含尽可能少的空栏。可以通过以下所提供的多种方法之一来打开查询设计器:■从“项目管理器”启动查询设计器1、在“项目管理器”中选择“数据”选项卡,再选取“查询”项,再单击【新建】,进入查询设计方式选择对话框后单击【新建查询】,则启动“查询设计器”。2、在“项目管理器”中选择“数据”选项卡,从“查询”项中选择一个已存在的查询文件,再单击【修改】,也启动“查询设计器”。2020/12/222VisualFoxPro6.0程序设计6.2用查询设计器设计查询前面学习了如何使用V■从【文件】菜单启动查询设计器选择系统菜单中的【文件】|【新建】命令,在“新建”对话框中选中“文件类型”下的“查询”单选项,再单击右边的【新建文件】按钮,也可启动“查询设计器”;■使用CREATEQUERY命令也可启动“查询设计器”现采用新建方式启动“查询设计器”2020/12/223VisualFoxPro6.0程序设计■从【文件】菜单启动查询设计器■使用CREATEQUERY查询设计器下部分的窗口中有几个选项卡,其含义简介如下:(1)“字段”:用来选定包含在查询结果中的字段;(2)“排序依据”:用来决定查询结果输出中记录或行的排列顺序;(3)“联接”:用来确定各数据表或视图之间的联接关系;(4)“筛选”:相当于命令SETFILTERTO,利用过滤的方法查找一个特定的数据子集;(5)“分组依据”:所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可以完成基于一组的计算。要设计一个查询文件,首先必须明确查询的目的是什么,即想要得到哪些数据,并以什么方式存在;或者想要得到满足某些条件的特定记录,或者想要知道某些记录的字段值组合成的表达式按某一方式输出。明确了输出的数据后,就可以开始设计查询了,一般要通过以下几个步骤进行:(1)启动查询设计器;(2)选择出现在查询结果中的字段;(3)设置选择条件来查找可给出所需结果的记录;(4)设置排序或分组选项来组织查询结果;(5)选择查询结果的输出类型:表、报表、浏览等;(6)运行查询。返回2020/12/224VisualFoxPro6.0程序设计查询设计器下部分的窗口中有几个选项卡,其含义简介如下:返回26.2.1确定各表间的联接关系

下面将通过一个示例来介绍创建一个含有多个表中信息的查询。例如在GXGLXT数据库中有三个表:Student、Grade、Courses,现在想知道学号前四位是9904和9804的所有学生考试的成绩。当在多个表或视图间进行查询时,需要指出这些表或视图间的联接关系。如前面所述,启动查询设计器,在“添加表和视图”对话框中从“数据库”中选择GXGLXT库,在“数据库中的表”中选择Student表,单击【添加】按钮,再选择Grade表,再单击【添加】,此时系统自动弹出一个“联接条件”,询问是否根据两表中都有的“学号”字段建立内部联接,单击“确定”,两表间就有了一条连线,代表它们之间的联接。然后再添加Courses表,最后关闭对话框。2020/12/225VisualFoxPro6.0程序设计6.2.1确定各表间的联接关系下面将通过一个示例在“查询设计器”中选择“联接”选项卡,如图:在VFP6中表间的联接有四种类型,分别是:2020/12/226VisualFoxPro6.0程序设计在“查询设计器”中选择“联接”选项卡,如图:在VFP6中表间(1)InnerJoin:内部联接,指定只有满足联接条件的记录包含在结果中,此类型是默认的,也是最常用的;(2)RightOuterJoin:右联接,指定满足联接条件的记录,以及满足联接条件右侧的表中记录(即使不匹配联接条件)都包含在结果中;(3)LeftOuterJoin:左联接,指定满足联接条件的记录,以及满足联接条件左侧的表中记录(即使不匹配联接条件)都包含在结果中;(4)FullJoin:完全联接,指定所有满足和不满足联接条件的记录都包含在结果中。如果想修改各表间的联接,双击查询设计器上部窗口表之间的连线,系统将弹出“连接条件”对话框;或者通过打开查询设计器下部的“联接”选项卡进行。一般不应随便更改连接条件,不然会与实际数据间的关系不符。“条件”列表中包含如下几项:(1)=:指字段值与实例相等;2020/12/227VisualFoxPro6.0程序设计(1)InnerJoin:内部联接,指定只有满足联接条件的(2)LIKE:表示“字段名”栏中给出的字段值与“实例”栏中给出的文本值之间执行不完全匹配,它主要针对字符类型。例如,如设置查询条件为“Student.学号LIKE9904”,那么诸如“学号”字段前四位为9904的记录都满足该条件;(3)==:表示在“字段名”栏中给出的字段值与“实例”栏中给出的文本值之间执行完全匹配检查,它也主要是针对字符类型的。(4)>:即为“字段名”栏中给出的字段的值应大于“实例”栏中给出的值;(5)>=:即为“字段名”栏中给出的字段的值应大于或等于“实例”栏中给出的值;(6)<:即为“字段名”栏中给出的字段的值应小于“实例”栏中给出的值;(7)<=:即为“字段名”栏中给出的字段的值应小于或等于“实例”栏中给出的值;(8)IsNull:指定字段必须包含Null值;(9)Between:即为输出字段的值应大于或等于“实例”栏中的2020/12/228VisualFoxPro6.0程序设计(2)LIKE:表示“字段名”栏中给出的字段值与“实例最小值,而小于或等于“实例”栏中的最大值;(10)IN(在…之中):即为输出字段的值必须是“实例”栏中所给出值中的一个,在“实例”栏中给出的各值之间以逗号分隔。此外,“联接”选项卡中的“否”列用于指定.NOT.条件,“逻辑”列用于设置各联接条件和筛选条件之间的逻辑关系(无、.AND.和.OR.),“大小写”列用于指定是否区分大小写。下方的“插入”和“移去”按钮分别用于增加或移去查询条件。最后,在设置筛选条件时,我们应注意如下几点:(1)备注字段和通用字段不能用于设置查询条件;(2)逻辑值的前后必须使用句点号,如.T.;(3)只有当字符串与查询的表中字段名相同时,要用引号将字符串括起来,否则不需要用引号将字符串括起来;(4)日期不必用花括号括起来。返回2020/12/229VisualFoxPro6.0程序设计最小值,而小于或等于“实例”栏中的最大值;返回2020/126.2.2选定查询字段

根据建立查询的目的,选择查询结果中应包含的字段。操作方法与用向导设计查询的方法相同。在本示例中先在“查询设计器”中选择“字段”选项卡,然后从可用字段列表框中选择:Student.学号、Student.姓名、Courses.课程名称、Grade.课程成绩,如图。选择一个字段单击【添加】选定的字段列表重复操作添加Student.姓名、Courses.课程名称、Grade.课程成绩返回2020/12/230VisualFoxPro6.0程序设计6.2.2选定查询字段根据建立查询的目的,选择查6.2.3筛选记录

选择表中符合条件的一部分记录而不是全部记录是查询的重要任务。此例要求从所有学生的成绩信息中选出“学号”前四位为“9904”和“9804”的所有学生的成绩,可以利用查询设计器中的“筛选”选项卡。“筛选”选项卡可确定用于选择记录的字段和比较准则,以及输入与该字段进行比较的示例值。选择筛选字段设置筛选条件输入筛选实例设置条件逻辑是否区分大小写在字段名下的下拉选择框中选择“Grade.开课学期”,在“条件”下的下拉选择框中选择“=”,在“实例”下的文本框中输入“第1学期”,返回2020/12/231VisualFoxPro6.0程序设计6.2.3筛选记录选择表中符合条件的一部分记录而在“逻辑”下的下拉选择框中选择“AND”,然后再在字段名下的下拉选择框中选择“Student.学号”,在“条件”下的下拉选择框中选择“In”,在“实例”下的文本框中输入“9904,9804”(请注意中间的“,”是En状态下输入的)。6.2.4查询结果排序

排序决定了查询输出结果中记录或行的先后顺序,我们可以通过“排序依据”选项卡设置查询的排序次序,方法同在用查询向导设计查询介绍的一样,首先从“选定字段”框中选定要使用的字段,返回2020/12/232VisualFoxPro6.0程序设计在“逻辑”下的下拉选择框中选择“AND”,然后再在字段名下的并把它们移到“排序条件”框中,然后利用“排序选项”(从中选择升序或降序)来设置排序条件。本例中设置Student.学号,升序为排序依据。选择一个字段单击【添加】选定的字段列表如果还需要添加用于排序的字段,可以重复以上的操作步骤。返回2020/12/233VisualFoxPro6.0程序设计并把它们移到“排序条件”框中,然后利用“排序选项”(从中选择6.2.5建立分组查询

所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可完成基于一组记录的计算。分组在与某些累计功能联合使用时效果最好,例如SUM(),COUNT(),AVG()等。如果不想压缩结果记录,则不必设置它。在此例中不设分组查询。如果想求各门课程的平均成绩,可以用“课程名称”进行分类查询。选择一个字段单击【添加】选定的字段列表2020/12/234VisualFoxPro6.0程序设计6.2.5建立分组查询所谓分组就是将一组类似的记录压缩成操作步骤如下:(1)在查询设计器的“字段”选项卡中,单击“函数和表达式”右边的按钮,出现“表达式”生成器;(2)在“数学”下拉式列表框中双击AVG(expN),在“来源于表”下拉框中选择Grade表,在“字段”列表框中双击“课程成绩”,单击【确定】。即在“函数和表达式”框中自动生成了“AVG(Grade.课程成绩)”这个表达式,用以计算Grade表中课程成绩的平均值。(3)单击“添加”按钮,该表达式被添加到“选定字段”列表框中。将来查询结果中就会有一列数据求平均值;(4)单击“分组依据”选项卡,进入“分组依据”窗口,在“可用字段”中选择Grade.课程名称,再单击【添加】按钮,该字段即成为分组字段。运行查询后的结果返回2020/12/235VisualFoxPro6.0程序设计操作步骤如下:运行查询后的结果返回2020/12/235Vi6.2.6杂项的设置

经过以上五个步骤,基本上已生成了一个比较全面的查询。接下来还可以通过查询设计器中的“杂项”选项卡做最后处理。单击“杂项”选项卡,可以看到其间包括“无重复记录”、“交叉数据表”、“全部”、“百分比”这四个复选框和一个微调按钮。选中“无重复记录”复选框表示对于查询结果如果存在重复记录,则只取相同记录中的一个。选中此项,在查询生成器的SQL语句中会自动加上限定词Distinct,表示去掉重复记录。2020/12/236VisualFoxPro6.0程序设计6.2.6杂项的设置经过以上五个步骤,基本上已生成了一个当输出的字段只有三项时,“交叉数据表”复选框为可选状态,否则为不可选状态。选中“交叉数据表”复选框表示将查询的结果以交叉表的形式传递给其它报表或表。三项查询字段分别表示X轴、Y轴和图形的单元值。如,在本示例中,将前面已加入到“选定字段”中的Student.学号字段移去,并按Student.姓名、Courses.课程名称和Grade.课程成绩的顺序调整字段在“选定字段”列表框中的顺序,然后在“杂项”选项卡中选中“交叉数据表”,同时将“分组依据”中的“Grade.课程代号”取消,其它设置不变。从图中可以看到“交叉数据表”成为了可选。现选中“交叉数据表”项,如图:设置返回2020/12/237VisualFoxPro6.0程序设计当输出的字段只有三项时,“交叉数据表”复选框为可选状态,否则6.2.7定向输出查询结果

查询检索的信息,可以输出到不同的目的地,以用作不同的用途。如果没有选定输出的目的地,查询结果将显示在浏览窗口中。查询输出目的可以是浏览窗口、临时表、表、图形、屏幕、报表、标签等。选择结果的去向方法如下:单击“查询设计器工具”中的【查询去向】按钮,或者从【查询】菜单中选择【查询去向】,可看到如图所示的“查询去向”对话框。对话框中的按钮含义如下:2020/12/238VisualFoxPro6.0程序设计6.2.7定向输出查询结果查询检索的信息,可以输出到不同【浏览】:在浏览窗口中显示查询结果,这是查询缺省设置;【临时表】:将查询结果存储在一个临时只读表中。多次查询的结果可放在不同的表内。该表可用于浏览数据,制作报表等,直到用户关闭它们;【表】:将查询的结果保存在一个命名的表(.DBF)中,此时查询的结果是真正的存放到磁盘上的,多次查询的结果可放在不同的表内;【图形】:使查询结果可用于MicrosoftGraph(包含在VFP6中的一个独立的应用程序)中制作图表;【屏幕】:在VFP6主窗口或当前活动输出窗口中显示查询结果;【报表】:将输出送到一个报表文件(.FRX)中;【标签】:将输出送到一个标签文件(.LBX)中。选定一个去向,按一定的步骤设置一些属性,然后单击【确定】按钮,系统就将按意图放置查询结果。假设本例将查询结果保存到临时表中,取临时表名为“查询1”。返回2020/12/239VisualFoxPro6.0程序设计【浏览】:在浏览窗口中显示查询结果,这是查询缺省设置6.2.8运行查询

在完成了查询的设计工作并指定了结果输出去向后,可通过以下五种方式之一运行查询:■在查询设计器区域内单击右键,在弹出菜单中选择“运行查询”;■在“项目管理器”中选定查询的名称,然后选定“运行”按钮;■在“查询”菜单中选择“运行查询”:■在命令窗口中键入DO查询名.qpr。■单击系统常用菜单上的“运行”按钮。本例中按前述步骤设置后,单击系统菜单上的“运行”按钮运行交叉表查询,并将查询结果保存到临时表“查询1”中,然后再在浏览窗口中单击【显示】|【浏览“查询1”】,结果如右表。返回2020/12/240VisualFoxPro6.0程序设计6.2.8运行查询在完成了查询的设计工作并指定了结果输出6.3创建视图

6.3.1创建本地视图6.3.2用已有的SQLSELECT语句创建视图6.3.3创建远程视图返回退出2020/12/241VisualFoxPro6.0程序设计6.3创建视图6.3.1创建本地视图6.3.26.3.1创建本地视图

视图可以通过向导和设计器两种方法来创建。1、利用向导创建本地视图用本地视图向导创建本地视图,可采取以下方式:方式一:(1)在主窗口下打开【工具】菜单,选择【向导】菜单命令。(2)再选择【全部】菜单,出现【向导选取】对话框,如图单击滑动按钮选择“本地视图向导”单击【确定】进入到“本地视图向导‘步骤1——字段选取’”2020/12/242VisualFoxPro6.0程序设计6.3.1创建本地视图视图可以通过向导和设计器两种方法方式二:(1)在主窗口下打开【文件】菜单,选择【新建】菜单命令。(2)选择“视图”,再单击【向导】,将弹出【本地视图向导】对话框。(3)然后按照向导屏幕上的指示操作。方式三:(1)在项目管理器中选定数据库。(2)选定本地视图,单击【新建】按钮。(3)单击【视图向导】按钮(4)然后按照向导屏幕上的指示操作。方式四:(1)打开数据库设计器,打开【数据库】菜单。(2)选择【新建本地视图】,再单击【视图向导】按钮。(3)然后按照向导屏幕上的指示操作。2020/12/243VisualFoxPro6.0程序设计方式二:(4)然后按照向导屏幕上的指示操作。2020/12/本地视图向导:步骤1——字段选取说明:按照上述几种方式,可以快速建立本地视图,但要强调的是,在项目管理器中创建或使用视图时,项目管理器会自动打开数据库。如果要使用项目以外的表或视图,则必须先打开数据库或事先确认数据库在作用范围内。本地视图向导对话框如图,可以看到,创建视图大体要经过以下步骤:(1)字段选取。选择数据库,数据库中的表和表中的字段。如果当前已经打开了一个数据库,则第一步的对话框中显示的2020/12/244VisualFoxPro6.0程序设计本地视图向导:步骤1——字段选取说明:按照上述几种方式,可以是创建当前数据库的视图,也可以选择其它的数据库。(2)关联表。建立数据库中表与表之间的关系。(3)包含记录。指定包含表中的全部记录还是仅匹配的记录。(4)筛选记录。选定符合条件的记录。(5)排序记录。为选定的记录按照某一字段进行排序。(6)限定记录。定制显示一定数量的记录。(7)完成视图。选择保存视图后浏览还是修改。例:创建包含Grade表和Courses表的本地视图“视图1”。选择表Grade单击全部添加按钮选择Courses表单击单个添加按钮,添加课程名、学时数、学分数字段选择完成后,单击【下一步】,步骤2——为表建立关系。2020/12/245VisualFoxPro6.0程序设计是创建当前数据库的视图,也可以选择其它的数据库。选择表Gra本地视图向导:步骤2——为表建立关系父表字段选择下拉选择框子表字段选择下拉选择框说明:在这一步要建立用来建立本地视图的表间的关系。1、先在父表字段选择下拉选择框中选择要用来建立关系的主关键字;2、再在子表字段选择下拉选择框中选择用来建立关系的子表关键字;3、单击【添加】,将设定关系添加到关系列表框中。上面的字段符合要求,单击【添加】关系设置完成后单击【下一步】进入到步骤2a——字段选取对话框。2020/12/246VisualFoxPro6.0程序设计本地视图向导:步骤2——为表建立关系父表字段选择下拉选择框子本地视图向导:步骤2a——字段选取生成的本地视图中只包含表中关系相匹配的记录,对应于关系中的内联接的设置结果。生成的本地视图中包含Grade表中的全部记录和子表中关键字段相匹配的记录,对应于关系中的左联接的设置结果。生成的本地视图中包含Courses表中全部记录和父表中关键字段相匹配的记录,对应于关系中的右联接的设置结果。生成的本地视图中包含表中所有的记录,对应于关系中的完全联接的设置结果。本例中选用默认值:仅包含匹配的行。然后单击【下一步】,进入步骤3——筛选记录。2020/12/247VisualFoxPro6.0程序设计本地视图向导:步骤2a——字段选取生成的本地视图中只包含表中本地视图向导:步骤3——筛选记录说明:本地视图向导的筛选记录与查询向导的筛选记录的方式类似。在本例中不筛选记录。单击【下一步】,进入到本地视图向导的步骤4——排序记录。2020/12/248VisualFoxPro6.0程序设计本地视图向导:步骤3——筛选记录说明:本地视图向导的本地视图向导:步骤4——排序记录

说明:在这一步中设置在本地视图的记录顺序。本例中可先按“学号”排序,学号相同的再按“课程代号”排序。操作方法与建立查询的记录排序方法相同。先在“可用字段”列表框中选择“学号”,然后单击【添加】,再选择“课程代号”,再单击【添加】如上图。排序字段及顺序设置后单击【下一步】,进入本地视图向导:步骤4a——限制记录。2020/12/249VisualFoxPro6.0程序设计本地视图向导:步骤4——排序记录说明:在这一步中设置本地视图向导:步骤4a——限制记录限制记录的方法与建立查询的限制记录的方法完全相同。在本例中仍保持在本地视图中包含所有的记录,因而取默认值,直接单击【下一步】,进入本地视图向导:步骤5——完成。在第5步中的操作方法也与建立查询的方法相同,现选择“保存本地视图并浏览”,然后单击【完成】。弹出“视图名”对话框。在“视图名”文本框中输入“视图1”。输入视图名后单击【确认】按钮,系统显示所建立的本地视图的结果。本地视图向导结束。2020/12/250VisualFoxPro6.0程序设计本地视图向导:步骤4a——限制记录限制记录的方法与建2、利用视图设计器创建本地视图通过本地视图向导建立数据库视图虽然方便,快捷,但这仅对入门者如此,何况用视图向导建立数据库视图最终还要依赖视图设计器。因此,倾向独立进行开发的程序员来说,仅仅学会使用向导是远远不够的,还应学会使用视图设计器的强大功能来创建视图。(1)

进入视图设计器进入视图设计器的方法与进入查询设计器的方法基本相同,下面以新建视图的方式进入视图设计器。2020/12/251VisualFoxPro6.0程序设计2、利用视图设计器创建本地视图图设计器的强大功能来创建视图。启动视图设计器方法新建一个视图可按以下步骤进入视图设计器:■选择【文件】|【新建】命令,单击“视图”单选框,再单击【新建文件】按钮。■在数据库设计器中,选择【数据库】|【新建本地视图】或单击数据库设计器的快捷菜单中的【新建本地视图】|【新视图】按钮。■在项目管理器中,单击“数据”选项卡,在列表框中选定“本地视图”,再单击【新建】按钮,单击【新建视图】按钮。修改一个视图可按以下步骤进入视图设计器:■在数据库设计器窗口中,单击选定需要修改的视图,选择【数据库】|【修改】命令。■在数据库设计器窗口中,右击需要修改的视图,在出现的快捷菜单中选择【修改】命令。■在项目管理器中,单击【数据】选项卡,在列表框中选定需要修改的视图,单击【修改】按钮。2020/12/252VisualFoxPro6.0程序设计启动视图设计器方法新建一个视图可按以下步骤进入视图设计“视图设计器”工具栏说明添加表移去表添加联接显示SQL窗口最大化上部窗格添加表:显示“添加表或视图”对话框,从而可以向设计器窗口添加一个表或视图移去表:从设计器窗口的上窗格中移去选定的表。添加联接:在视图中的两个表之间创建联接条件显示/隐藏SQL窗口:显示或隐藏建立当前视图的SQL语句最大化/最小化上部窗口:放大或缩小视图设计器的上窗格2020/12/253VisualFoxPro6.0程序设计“视图设计器”工具栏说明添加表移去表添加联接显示SQL窗口最(2)从表中选择所需字段在进行本地视图设计器之前,先建立Classzc表和Department表,表结构和数据如下:2020/12/254VisualFoxPro6.0程序设计(2)从表中选择所需字段2020/12/254Visual通过上述方式之一打开视图设计器,在进入设计器之前,需要选定数据库和表,现选定GXGLXT数据库,如右图:从中选定表Classzc并单击【添加】按钮,然后单击【关闭】按钮,启动视图设计器。2020/12/255VisualFoxPro6.0程序设计通过上述方式之一打开视图设计器,在进入设计器之前,需视图设计器进入视图设计器后,第一步先需要选定字段,选定字段可直接通过字段选项卡进行。其操作方法与查询设计器中选择字段的方法相同。2020/12/256VisualFoxPro6.0程序设计视图设计器进入视图设计器后,第一步先需要选定字段,选从“可用字段”列表框里选定Classzc.班级简称字段,单击【添加】按钮或双击该字段,则Classzc.班级简称字段将会出现在右边的“选定字段”列表框中。本次建立的视图里,还需要选定Classzc.学习性质、Classzc.学制二个字段。它们选定的方法与选定Classzc.班级简称字段一样。如果需选定字段是“可用字段”列表框中的所有字段,可以单击【全部添加】按钮,这样就把所有字段添加到了“选定字段”列表框中去了,可以通过【移去】按钮将其移出来。如果需要全部移出,可以利用【全部移去】按钮快速移出。要将表中的字段添加到“选定字段”列表框中,除了上述方法外,还可以将鼠标指向视图设计器上部窗口中的表窗口中的字段上,按住鼠标左键或右键拖动一个字段到“选定字段”列表框,该字段就被加入到了“选定字段”列表框中。还可以通过双击字段名将其加入到“选定字段”列表框。表窗口中的*代表表中的全部字段,它也是可以拖动或双击的。若要从“选定字段”列表框中移去字段,也可以使用鼠标拖动或双击。2020/12/257VisualFoxPro6.0程序设计从“可用字段”列表框里选定Classzc.班级简称字段,单击“字段”选项卡还有一个【属性】按钮和一个“函数和表达式”文本框。只要“选定字段”列表框中有一个值,【属性】命令按钮就成为可选的了。选择【属性】后,出现图:2020/12/258VisualFoxPro6.0程序设计“字段”选项卡还有一个【属性】按钮和一个“函数和表达属性设置可分为五种类型:字段有效性、显示、匹配字段到类、数据匹配和注释。其中字段有效性、显示、匹配字段到类和注释在第3章中介绍数据表设计时已经作过说明,视图设计和数据表设计在字段属性上基本类似。“函数和表达式”文本框及其按钮:“函数和表达式”文本框用于输入一个函数和表达式,具体操作只需单击“函数和表达式”文本框后的对话按钮,在随后出现的表达式生成器中书写函数或表达式。此选项的功能是为了生成一个虚拟的字段。后面的创建步骤与本章前述的用查询设计器设计查询相似,在此不一一阐述。(3)建立多表关联前面主要是针对单一的本地表建立视图,虽然很容易,但它的实际功能不大。因为在实际开发中,系统的数据库很复杂,表的关联性很强,用户关心的往往是一些复杂的数据,因此需要建立多表视图。2020/12/259VisualFoxPro6.0程序设计属性设置可分为五种类型:字段有效性、显示、匹配字段到类、数据从定义上讲,多表视图指的是:视图中的字段来源于两个或两个以上的表。但是,在视图中表间的关系既不像数据库中的关系是永久的,也不像表中的关系是暂时的,它不靠索引字段进行联接,而是通过定义一个联接表达式来进行联接,表间的关系是松散的。可以按如下办法建立表间的联接:■在视图设计器中单击“联接”选项卡即可设置多表间的关联。■在“添加表或视图”对话框中,选定表后,单击【添加】按钮,当视图设计器中的表在两个及以上时,视图设计器就会为选定的表建立关联。说明:用以上的方法建立多表关联,必须有多个表添加到了视图设计器中。后续的操作方法与设计多表查询相似,除不同点外,相同的部分这里不再讲述。下面我们来建立表Department、Classzc、Student、Courses和Grade五表之间的关联的视图,起名为视图3。2020/12/260VisualFoxPro6.0程序设计从定义上讲,多表视图指的是:视图中的字段来源于两个或两个以上(4)与设计多表查询不相同的部分——更新条件视图的最大特点在于能用视图更新数据,这也是建立视图与建立查询的主要区别,也是视图的重点所在。视图设计器中的“更新条件”选项卡可以用来设置允许视图更新表字段的条件。2020/12/261VisualFoxPro6.0程序设计(4)与设计多表查询不相同的部分——更新条件2020/12/“更新条件”选项卡选项包括如下内容:■“表”:指定视图所使用的哪些表可以修改。选择这个下拉列表框中的选项,可以确定哪些表中的字段可以在“字段名”列表框中,以便设置更新条件。此列表中所显示的表都包含了“字段”选项卡“选定字段”列表中的字段。■【重置关键字】:这个按钮作用是从每个表中选择主关键字字段作为视图的关键字字段。每个主关键字字段是在“字段名”列表中的、在钥匙符号下面打一个对钩的字段,关键字字段可2020/12/262VisualFoxPro6.0程序设计“更新条件”选项卡选项包括如下内容:■“表”:指定视图所使用可用来使视图中的修改与表中的原始记录相匹配。■【全部更新】:可以从字段名文本框中看到一些字段前的铅笔符号下打了一个对钩,这表明这些字段可以更新。在这个按钮中可以选择除了关键字字段以外的所有字段来进行更新,并在“字段名”列表的铅笔符号下打一个对钩。■“发送SQL更新”:指定是否将视图记录中的修改传送给原始表。如果选择了这个复选框,将把在视图中对记录字段的修改返回到源表中。■“字段名”列表框:显示了从“表”列表框中所选的表中的字段、并用来输出这些字段,不过这些字段都是可以更新的。在字段文本框中共有下列3种方式字段:●关键字段(使用钥匙符号作标记),指定该字段是否为关键字段。●可更新字段(使用铅笔符号作标记),指定该字段是否为可更新字段。●字段名,显示可标志为关键字字段或可更新字段的输出字段名。2020/12/263VisualFoxPro6.0程序设计可用来使视图中的修改与表中的原始记录相匹配。2020/12/

■“SQLWHERE子句包括”:●“关键字段”:如果在原始表中有一个关键字字段被改变,设置WHERE子句来检测冲突,对于由另一用户对表中原始记录的其他字段所做修改不进行比较。●“关键字和可更新字段”:设置WHERE子句来检测由某一用户修改了任何可更新的字段的冲突。●“关键字和已修改字段”:如果从视图首次检索(默认)以后,关键字字段或原始表记录的已修改字段中,某个字段做过修改,设置WHERE子句来检测冲突。●“关键字段和时间戳”:如果自原始表记录的时间戳首次检索以后,它被修改过,设置WHERE子句来检测冲突。只有当远程表有时间戳列时,此选项才有效。■“使用更新”:此单选按钮组用于指定字段如何在后端服务器上进行更新。●“SQLDELETE然后INSERT”:指定先删除原始表记录后,再创建一个新的在视图中被修改的记录。●“SQLUPDATE”:指定用视图字段中的内容来修改原始表中的字段。具体说明如何设置更新条件详见6.5在视图中更新数据。返回2020/12/264VisualFoxPro6.0程序设计■“SQLWHERE子句包括”:返回2020/16.3.2用已有的SQLSELECT语句创建视图

同查询一样,可用SELECT—SQL语言创建视图。若用SELECT—SQL建立视图,则可用下列SELECT—SQL语句:格式:SELECT[ALL|DISTINCT][TOPnExpr[PERCENT]][Alias.]Select_Item[ASColumn_Name][,[Alias.]Select_Item[ASColumn_Name]...]

FROM

[FORCE][DatabaseName!]Table[[AS]Local_Alias]

[[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOINDatabaseName!]Table[[AS]Local_Alias][ON

Join-Condition…]

[[INTO

Destination]|[TOFILE

[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][PREFERENCEPreferenceName][NOCONSOLE][PLAIN][NOWAIT]

[WHEREJoinCondition[.AND.JoinCondition...][.AND.|.OR.FilterCondition[.AND.|.OR.FilterCondition...]]][GROUPBY

GroupColumn[,GroupColumn...]][HAVINGFilterCondition][UNION[ALL]SELECTCommand][ORDERBY

Order_Item[ASC|DESC][,Order_Item[ASC|DESC]...]]2020/12/265VisualFoxPro6.0程序设计6.3.2用已有的SQLSELECT语句创建视图同功能:从一个或多个表中检索数据。参数描述:SELECT:用SELECT子句指定在查询结果中包含的字段、常量和表达式。[ALL]:在查询结果中包含所有的行(包括重复值)。它是系统的默认设置。[DISTINCT]:在查询结果中删除重复行。[TOPnExpr[PERCENT]]:在符合查询条件的所有记录中,选取指定数量或百分比的记录。TOP子句必须与ORDERBY子句同时使用。ORDERBY子句指定按哪个字段排序,TOP子句根据此排序选定开始的nExp个或nExp%的记录。可以指定选取1~32767条记录。[Alias.]:限定匹配项的名称。Select-Item指定的每一项在查询结果中都生成一列,如果多个项具有相同的名称,则应在这些项前加上表的别名和一个句点号,以防止出现重复的列。Select_Item:指定包含在查询中的一个项。一个项可以是:2020/12/266VisualFoxPro6.0程序设计功能:从一个或多个表中检索数据。2020/12/266Vis①FROM子句中所包含的表中的字段名称。②一个常量,查询结果中的每一行都出现这个常量值。③一个表达式,可以是用户自定义函数名。[ASColumn_Name]:指定查询结果中的列标题。当Select-Item是一个表达式或一个字段函数时,如果要给此列取一个有意义的名称可用这个子句。它可以是一个表达式。FROM:列出所有从中检索数据的表。如果没有打开表,VFP会显示“打开”对话框以便指定文件位置,表打开以后直到查询结束才关闭。[FORCE]:如果包含了此子句,VFP在建立查询时会严格按照在FROM子句中申明的顺序建立联接,否则会试图对查询进行优化。避免优化过程,可能会加快查询执行的速度。[DatabaseName!]:当包含表的数据库不是当前的数据库时,此子句指定数据库的名称。如果数据库不是当前数据库,就必须指定包含表的数据库名称,注意其后应加上“!”号。Table[[AS]Local_Alias]:为Table中的表指定一个临时名称。2020/12/267VisualFoxPro6.0程序设计①FROM子句中所包含的表中的字段名称。2020/12/26如果指定了本地别名,那么在整个Select语句中都必须用这个别名代替表名。INNERJOIN:只有在其它表中包含对应记录(一个或多个)的记录才出现在查询结果中。LEFT[OUTER]JOIN:在查询结果中包含JOIN左侧表中的所有记录,以及右侧表中匹配的记录。这是左联接。RIGHT[OUTER]JOIN:在查询结果中包含JOIN右侧表中的所有记录,以及左侧表中匹配的记录。这是右联接。FULL[OUTER]JOIN:在查询结果中包含JOIN两侧表中的所有记录,这是完全联接。[DatabaseName!]Table[[AS]Local_Alias]:指定和当前表建立联接的表所在的数据库及表名或本地表别名。ONJoinCondition:指定联接条件。[INTODestination]:指定在何处保存查询结果。如果在同一个查询中同时包含了INTO子句和TO子句,则TO子句不起作用。如果没有包含INTO子句,查询结果显示在“浏览”窗口中。2020/12/268VisualFoxPro6.0程序设计如果指定了本地别名,那么在整个Select语句中都必须用这个Destination可以是下列子句之一:①ARRAYArrayName:将查询结果保存到数组中。如果查询结果中不包含任何记录,则不创建这个数组。②CURSORCursorName:将查询结果保存到临时表中。如果指定了一个已打开表的名称,则VFP产生错误信息。执行完SELECT语句后,临时表仍然保持打开、活动,但只读。一旦关闭临时表,则自动删除它。③DBFTableName|TABLETableName:将查询结果保存到一个表中,如果指定的表已经打开,并且SETSAFETY设置为OFF,则VFP在不给出任何警告信息的情况下改写该表。执行完SELECT语句后,临时表仍然保持打开活动状态。[TOFILE[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]:如果命令中包含了TO子句,但没有包括INTO子句,则查询结果定向输出到名为的ASCII码文件、打印机或主窗口。包含ADDITIVE子句使查询结果追加到所指定的文本文件的内容后面。2020/12/269VisualFoxPro6.0程序设计Destination可以是下列子句之一:2020/12/2[PREFERENCEPreferenceName]:如果查询结果送往浏览窗口,就可以使用该子句保存浏览窗口的属性和选项以备后用。[NOCONSOLE]:不显示送到打印机、文件、或VFP主窗口的查询结果。[PLAIN]:防止列标题出现在显示的查询结果中。[NOWAIT]:打开浏览窗口并将结果输出到这个窗口后继续程序的执行。WHERE:告诉VFP只在查询结果中包含一定的记录。从多表检索中查找数据时需要用到该子句。JoinCondition:指定一个字段,该字段联接FROM子句中的表。如果查询中包括不止一个表就应该为第一个表后的每一个表指定联接条件。联接多个查询条件必须使用.AND.。每个联接都是这样的形式:FieldName1ComparisonFieldName2其中:FieldName1是一个表的字段名,FieldName2是另一个表的字段名。Comparison是下列的某一操作符:2020/12/270VisualFoxPro6.0程序设计[PREFERENCEPreferenceName]:如果=、==、LIKE、<>,!=,#、>、>=、<、<=FilterCondition:指定包含在查询结果中的记录必须满足条件。筛选条件的数目没有限制,只要将它们用.AND.或.OR.操作符连接起来即可。也可以使用操作符.NOT.对逻辑表达式取反,或使用EMPTY()函数检查字段是否为空等。[GROUPBYGroupColumn]:按列的值对查询结果进行分组。GroupColumn可以是常规的表字段名,也可以是一个包含SQL字段函数的字段名,还可以是一个数值表达式指定查询结果表中的列位置。[HAVINGFilterCondition]:指定包含在查询结果中的组必须满足的条件。它应和GROUPBYGroupColumn一起使用。[UNION[ALL]SELECTCommand]:把一个SELECT语句的最后查询结果同另一个SELECT语句最后的查询结果组合起来。ALL防止UNION删除组合结果中的重复行。[ORDERBYOrder_Item]:根据列的数据对查询结果进行排序。每个Order_Item都必须对应查询结果中的一列。2020/12/271VisualFoxPro6.0程序设计=、==、LIKE、<>,!=,#、>、>=、<、<=202用SELECT—SQL命令完成上节的设计任务:SELECTDepartment.系部名称,Classzc.班级名称,Student.学号,;Student.姓名,Course.课程名,Grade.课程成绩;

FROMgxglxt!departmentINNERJOINgxglxt!classzc;INNERJOINgxglxt!student;INNERJOINgxglxt!grade;INNERJOINgxglxt!course;ONGrade.课程代号=Course.课程代号;ONStudent.学号=Grade.学号;ONClasszc.班级代号=Student.班级代号;ONDepartment.系部代号=Classzc.系部代号;WHEREClasszc.系部代号="04";.AND.Grade.开课学期="第1学期";

ORDERBYStudent.学号;INTOCURSOR视图12020/12/272VisualFoxPro6.0程序设计用SELECT—SQL命令完成上节的设计任务:2020/12运行该SELECT语句后,选择【显示】|【浏览“视图1”】屏幕显示如图:返回2020/12/273VisualFoxPro6.0程序设计运行该SELECT语句后,选择【显示】|【浏览“视图6.3.3创建远程视图

1、用视图向导创建远程视图创建使用远程数据(ODBC)的视图,必须存在一个数据库来保存视图,同时还需要存在数据源或命名连接。如果没有打开数据库,系统将提示打开数据库或创建数据库。在运行“远程视图向导”之前,可以在“选项”对话框的“远程数据”选项卡上设置远程视图和连接的默认选项。也可以在“连接设计器”中创建连接。如果要利用远程视图向导创建远程视图,则选择【文件】|【新建】命令,在弹出的新建对话框中选中远程视图,然后单击【向导】按钮。就会进入远程视图向导对话框中。或者在数据库设计器工具栏中单击【新建远程视图】按钮,选择使用向导。2020/12/274VisualFoxPro6.0程序设计6.3.3创建远程视图1、用视图向导创建远程视图创建远程视图主要有以下步骤:1、

数据源选取2、字段选取3、为表建立关系4、包含记录5、排序记录6、筛选记录7、完成在第一步数据源选取中,可以在可用的数据源列表框中选择一种ODBC数据源或者一个已经建立的连接。如果选择的是一种未连接任何数据源的ODBC数据源,系统将显示一个“确认连接”对话框,从中选择一个数据源。当选择的VFPTables或VFP2020/12/275VisualFoxPro6.0程序设计创建远程视图主要有以下步骤:在第一步数据源选取中,可以在可用Databases时,会打开建立数据源对话框。在此对话框中为数据库选择一种类型,同时在Path中输入远程数据源的文件名或者使用【Browse】按钮选择一个文件作为远程数据源。选择数据源以后,向导就会进入下一步,以后的步骤与本地视图及创建查询没有太大的差别,在此不再赘述。2020/12/276VisualFoxPro6.0程序设计Databases时,会打开建立数据源对话框。在此对话框中为2、利用视图设计器创建远程视图创建新的远程视图首先必须要有同数据源的连接。在数据库设计器中单击鼠标右键选择【新建远程视图】或者在【文件】下的【新建】命令,在新建对话框中选择远程视图,并单击【新建文件】按钮。此时会显示选择连接或数据源对话框,在此对话框中选择连接或者可用的数据源。如图。2020/12/277VisualFoxPro6.0程序设计2、利用视图设计器创建远程视图2020/12/277Visu如果已经存在定义的连接,该对话框中就显示所定义的连接。如果要定义新的连接,可单击【新建】按钮,出现图示的“连接设计器”。2020/12/278VisualFoxPro6.0程序设计如果已经存在定义的连接,该对话框中就显示所定义的连接。如果要在数据源下面的下拉选项框中选择VisualFoxProDatabase项,其它项均采用系统默认设置,然后选择【验证连接】按钮。如果为这个连接指定了一个数据库,则会出现“连接成功”的提示信息,否则,将出现如图所示的连接配置(ConfigureConnection)对话框。在该对话框中选择【Browse】后将出现图示的“选择数据库”(SelectDatabase)对话框。2020/12/279VisualFoxPro6.0程序设计在数据源下面的下拉选项框中选择VisualFoxP在此对话框中可以选择本地存在的数据库或网上邻居中设置为共享的数据库。然后选择【打开】,就会在“连接配置ConfigureConnection”对话框中“Path”后的文本框中加入所添加的数据库文件名及其所在的路径,如“\\092\FOXPRO上机操作\Visualfp.dbc”。然后按【OK】,系统会告诉“连接成功”。然后再在“连接设计器”中单击【确定】,接着弹出“保存对话框”,默认的连接名为“连接1”,可以采用默认的连接名,也可以重命名连接名,再单击【确定】。2020/12/280VisualFoxPro6.0程序设计在此对话框中可以选择本地存在的数据库或网上邻居中设置为共享的在保存连接后,“远程视图设计器”进入“打开”对话框。在视图设计器中对加入的表创建远程视图的操作与建立本地视图的操作一样,此处不再赘述。2020/12/281VisualFoxPro6.0程序设计在保存连接后,“远程视图设计器”进入“打开”对话框。3、控制如何检查更新冲突如果在一个多用户环境中工作,服务器上的数据也可以被别的用户访问,也许别的用户也在试图更新远程服务器上的记录,为了让VFP检查用视图操作的数据在更新之前是否被别的用户修改过,可使用更新条件选项卡上的选项。在更新条件选项卡中,SQLWHERE子句包括框中的选项可以帮助管理遇到多用户访问同一数据时应如何更新记录。在允许更新之前,VFP先检查远程数据源表中的指定字段,看看它们在记录被提取到视图中后有没有改变,如果数据源中的这些记录被修改,就不允许更新操作。在“更新条件”选项卡中可以设置SQLWHERE子句。这些选项决定哪些字段包含在UPDATE或DELETE语句的WHERE子句中,VFP正是利用这些语句将在视图中修改或删除的记录发送到远程数据源或源表中,WHERE子句就是用来检查自从提取记录用于视图中后,服务器上的数据是否已改变。2020/12/282VisualFoxPro6.0程序设计3、控制如何检查更新冲突2020/12/282Visua关键字段:当源表中的关键字段被改变时,使更新失败。关键字和可更新字段:当远程表中任何标记为可更新的字段被改变时,使更新失败。关键字和已修改字段:当在本地改变的任一字段在源表中已被改变时,使更新失败。关键字和时间戳:当远程表上记录的时间戳在首次检索之后被改变时,使更新失败(仅当远程表有时间戳列时有效)。4、定制视图同本地视图一样,可以在远程视图中包含表达式,设置提示输入值,也可以设置高级选项来协调与服务器交换数据的方式(1)控制更新方法若要控制关键字段的信息实际上在服务器上更新的方式,可使用视图设计器中更新条件选项卡中“使用更新”中的选项。如图2020/12/283VisualFoxPro6.0程序设计关键字段:当源表中的关键字段被改变时,使更新失败。2020/当记录中的关键字更新时,这些选项决定发送到服务器或源表中的更新语句使用什么SQL命令。可指定先删除记录,然后使用在视图中输入的新值取代原值(SQLDELETE然后INSERT),也可指定使用服务器支持的SQLUPDATE函数来改变服务器的记录。(2)在远程视图中添加表达式若要在视图中添加表达式,可在“筛选”选项卡中,从“字段名”框中选择“表达式”。当视图基于远程数据源时,在“表达式设计器”中显示的函数反映了服务器所支持的函数。可以查看服务器文档中列出的该服务器所支持的函数列表,VFP不对构造的表达式作语法分析,而是将它们发送到远程服务器上。2020/12/284VisualFoxPro6.0程序设计当记录中的关键字更新时,这些选项决定发送到服务器或源表中的更5、建立连接使用远程视图,无需将所有记录下载到本地计算机上即可提取远程ODBC服务器上的数据子集。可以在本地机上操作这些选定的记录,然后把更改或添加的值返回到远程数据源中。有两种连接远程数据源的方法,可以直接访问在机器上注册的ODBC数据源,也可以用连接设计器设计自定义连接。在安装VFP时,选择VFP的“完全”或“自定义”安装选项,就可以把ODBC安装在系统中。如果想为服务器创建定制的连接,可以使用连接设计器,创建的连接将作为数据库的一部分保存起来,并含有如何访问特定数据源的信息。使用连接设计器能够创建并修改命名连接。因为连接是作为数据库的一部分存储的,所以仅在有打开的数据库时才能使用连接设计器。连接设计器对话框中有如下选项:(1)指定的数据源2020/12/285VisualFoxPro6.0程序设计5、建立连接2020/12/285VisualFoxP■数据源、用户标识、密码指定VFP显示以下三个框:●数据源:允许从已安装的ODBC数据源列表中选择一个数据源。●用户标识:如果数据源需要用户名称或标识,允许键入。●密码:如果数据源需要密码,允许键入密码。●数据库:可以选择一个数据库,作为所选数据源连接的目标。■连接串:指定VFP显示连接串文本框,可在其中键入连接串。选择对话按钮,显示选择连接或数据源对话框,如图所示。可以选择现有文件或机器数据源。■【验证连接】:可以对那些刚输入了内容的连接进行检查。如果连接成功,则显示对话框提示此消息;如果连接失败,则出现错误信息。如果没有对话指定内容,则显示选择2020/12/286VisualFoxPro6.0程序设计■数据源、用户标识、密码指定VFP显示以下三个框:可以选择现数据库对话框,从中选择数据源。前文已作介绍。■【新建数据源】:显示“DataSources”对话框,可以在其中添加、删除或配置数据源。前文已作介绍。(2)显示ODBC登录提示●未指定登录信息时显示:如果在命名连接定义中未存储用户标识和密码,则VFP用“ODBC数据源注册”对话框提示用户。●总显示:指定VFP总是使用“ODBC数据源注册”对话框提示用户,该框允许用户使用与存储在命名连接中不同的注册ID和密码。●从不显示:指定VFP从不提示用户。此选项确保更高的安全性。(3)数据处理此选项与用户用DBSETPROP()函数设置的连接属性相对应。■异步执行:指定异步连接。此选项与Asynchronous连接属性相对应。■显示警告信息:指定显示不可捕获警告。此选项与Disp2020/12/287VisualFoxPro6.0程序设计数据库对话框,从中选择数据源。前文已作介绍。2020/12/warning连接属性相对应。■批处理:指定以批处理方式进行连接操作。此选项与BatchMode连接属性相对应。■自动事务处理:指定自动执行事务处理。此选项与Transactions连接属性相对应。■包大小:当和远程数据位置之间传送信息时,可以指定传送信息网络包的大小(以字节为单位)。在下拉列表中选择或键入一个值。(4)超时间隔这些选项设置连接属性的值,也可用DBSETPROP()函数设置。■连接(秒):以秒为单位指定连接超时时间间隔。此选项与ConnectTimeout连接属性相对应。■查询(秒):以秒为单位指定查询超时时间间隔。此选取项与QueryTimeout连接属性相对应。■空闲(分钟):以分钟为单位指定空闲超时时间间隔。在指定的时间间隔后,活动连接变为不活动。此选项与IdleTimeout连接属性相对应。■等待时间(毫秒):以毫秒为单位指定在VFP确定SQL语句是否执行完毕之前经过的时间。此选项与WaitTime连接属性相对应。返回2020/12/288VisualFoxPro6.0程序设计warning连接属性相对应。返回2020/12/288Vi6.4数据库视图的操作6.4.1使用视图退出6.4.2、显示视图结构6.4.3、重新命名视图6.4.4删除视图6.4.5创建视图索引6.4.6创建参数化视图返回2020/12/289VisualFoxPro6.0程序设计6.4数据库视图的操作6.4.1使用视图退6.4.1使用视图

建立视图后,不但可以用它来显示和更新数据,而且还可以通过调整它的属性来提高性能。处理视图类似处理表,可以:■使用USE命令并指定视图名来打开一个视图。■使用USE命令关闭视图。■在【浏览】窗口中显示视图。■在【查看】窗口中显示已打开的视图的别名。■将视图作为数据源,供表单或表格控件使用。若要使用一个视图,可采取如下方法:■在项目管理器中先选择一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论