强化操作第一次讲义.docx

上传人:b****8 文档编号:30629207 上传时间:2023-08-18 格式:DOCX 页数:24 大小:247.77KB
下载 相关 举报
强化操作第一次讲义.docx_第1页
第1页 / 共24页
强化操作第一次讲义.docx_第2页
第2页 / 共24页
强化操作第一次讲义.docx_第3页
第3页 / 共24页
强化操作第一次讲义.docx_第4页
第4页 / 共24页
强化操作第一次讲义.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

强化操作第一次讲义.docx

《强化操作第一次讲义.docx》由会员分享,可在线阅读,更多相关《强化操作第一次讲义.docx(24页珍藏版)》请在冰豆网上搜索。

强化操作第一次讲义.docx

强化操作第一次讲义

先对命令窗口加以复习

应着重指出在VF的命令窗口中,

各命令只能“逐条执行”,即打完一条命令,就要敲“回车”键,执行它,若打完多条指令(各指令分别占一行)再敲回车,将只执行最后一条命令,被执行的命令将保留在命令窗口中。

前面若干行命令无效,不被执行(而且不保留,全部消失)。

此外,若在同一行内输入多条指令,再敲回车,系统会报错,无法执行。

同一条指令若要占用多行的话,应在除最后一行外的其他行后,加半角的分号,作为换行符,若输入正确,可将光标点入此命令的任意一行,再敲回车执行之即可。

若要执行此前已经执行过的命令,不用重打,因被执行的命令将保留在命令窗口中,只需将光标点入前面已经执行过的命令里,直接敲回车即可。

同一条命令中,各短语之间、命令短语与命令对象之间,都应有至少一个空格(可多个空格),否则系统报错,命令将得不到执行。

若命令输入正确,则命令短语应显示为蓝色,对象名显示为黑色,如出现命令短语显示为黑色的情况,则很有可能是命令短语拼写错误或缺少了相应的空格,此时应予以检查纠正。

命令中,除必要的汉字外,英文与标点等均为半角字符(字符型数据在其定界符内不受此限制,一般在汉语输入法状态下,标点为全角,在英文输入法状态下,标点为半角,因此,在命令窗口中,请注意及时切换中、英文输入法,以保证英文字母和标点的半角状态),在VF命令中英文不区分大小写,即大小写通用(字符串中除外)。

有些指令执行后可以直接在工作区(主窗口)中看到结果,如在命令窗口输入:

?

123

敲回车后,若命令格式正确则立刻会在工作区(主窗口)中看到显示的数字“123”。

但有些指令执行后是无法直接看到结果的。

如想要调整工作区(主窗口)中的显示字体大小,可在命令窗口输入:

_screen.fontsize=24(后面的数字越大,今后主窗口中的显示字号就越大,最前面为“下划线”,不是“减号”)

敲回车后,若命令格式不正确,系统会弹出对话框报错,这是一目了然的。

但在命令格式正确的前提下,系统只是不报错而已,并不会弹出什么祝贺成功之类的对话框。

此时想要看命令的效果,需要通过执行其他命令来验证,如可再次输入:

?

123

敲回车后,若命令格式正确则又会在工作区(主窗口)中看到显示的数字“123”,只是此时的显示字号会调整为前述设定的大小。

建议今后对无法直观确认执行结果的命令,应设法去验证。

VF中的菜单操作,大多数都会在执行时在命令窗口中同步显示相应命令。

若要用命令方式再次执行与菜单操作等价的操作时,可以在命令窗口中将光标直接点在显示出的命令所在行,直接敲回车即可。

利用“常用”工具栏的“命令窗口”按钮

,通过点击实现显示和隐藏命令窗口的切换。

Ctrl+F4隐藏(窗口→隐藏),Ctrl+F2显示(窗口→命令窗口)。

调整命令窗口字体大小的方法:

光标点入命令窗口中→点“格式”菜单→字体→打开了“字体”对话框,按需要点选相应字体大小后→确定。

初始字号很小,建议调大。

再次强调调整工作区(主窗口)字体大小的方法:

可以再次在命令窗口输入:

_screen.fontsize=36(后面的数字越大,字越大,最前面为“下划线”,不是“减号”)

?

123

然后在工作区(主窗口)中查看显示结果,看对字号大小是否满意。

再次强调每输完一行(也就是一条)指令,请立即敲回车执行,今后不再重复此点。

重点体会命令窗口的工作模式:

输入显示命令(“?

”与“?

?

”都试验一下),输入:

?

123,"hddhd"

?

?

123,"hddhd"

?

123,"hddhd"

?

?

123,"hddhd"

查看主窗口的显示结果,体会两者的区别:

“?

”是换行显示;“?

?

”是不换行,行内紧接着显示。

请逐个输入并敲回车执行DIR、clear、quit等命令,了解命令功能:

Dir:

显示当前目录下表的信息;

Clear:

清理工作区(主窗口);

Quit:

直接退出VF系统。

声明:

本文中,为着重强调和醒目计,对所有命令、对象名等,都加了引号。

而在VF命令窗口中,所有命令本身在输入时都是不能加引号的。

除非用到了字符型常量,而这种情况下很容易区分命令和字符型常量,如”DELETEFOR城市=”北京””中,最外层的引号,是本文为行文需要加上的,在命令窗口中输入时,最外层的引号请不要输入,但命令中等号后的”北京”两字前后的引号,是该字符型常量自带的“定界符”,输入时必须有,否则数据类型错误,系统会报错,该命令将无法执行,请体会之。

故初学者请谨记:

命令窗口中,直接输入命令即可,除非必要(字符型常量),否则不要加引号!

请读到本文中的带引号命令时,能想到这一点,不要误以为输入时也加引号,只说这一次,请切记!

第一套

原题目:

一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分)

在考生文件夹下完成如下操作:

1.新建一个名为"供应"的项目文件。

2.将数据库"供应零件"加入到新建的"供应"项目文件中。

3.通过"零件号"字段为"零件"表和"供应"表建立永久联系("零件"是父表,"供应"是子表)。

4.为"供应"表的数量字段设置有效性规则:

数量必须大于0并且小于9999;错误提示信息是"数量超范围"(注意:

公式必须为数量>0.and.数量<9999)。

考查知识点:

项目文件的建立,添加。

数据库表的永久关系的建立,有效性规则的设立。

解题思路:

1.选择"文件"菜单中的"新建",在类型选择框中选择"项目",单击新建文件按钮,输入项目名:

"供应"。

2.在项目管理器中选择"数据"节点下的"数据库",单击"添加"按钮并选择"供应零件"数据库

3.首先要为两个表建立索引,并且父表必须为主索引或候选索引。

具体方法是:

在项目管理器中选择"供应零件"数据库,单击"修改"按钮,打开数据库设计器,在数据库设计器中选中"零件"表,单击数据库菜单中的修改,在表设计器中的索引选项卡中建立索引,索引名为"零件号",索引表达式为"零件号",索引类型为主索引,保存修改。

用同样的方法为"供应"表建立索引,索引名为"零件号",索引表达式为"零件号",索引类型为"普通索引"。

建立永久联系的方法是:

在数据库设计器中单击"零件"表中的索引"零件号",按住鼠标左键拖动到"供应"表中的相应索引上即可。

4.打开"供应"表的表设计器,先在列表框中选中"数量"字段,然后在字段有效性规则区域中的规则文本框中输入:

数量>0.and.数量<9999(也可以用表达式构造器生成),在信息文本框中输入:

"数量超范围"(双引号不可少)

二、简单应用(2小题,每题20分,计40分)

在考生文件夹下完成如下简单应用:

1.用SQL语句完成下列操作:

列出所有与"红"颜色零件相关的信息(供应商号,工程号和数量),并将检索结果按数量降序排序存放于表sup_temp中。

2.建立一个名为m_quick的快捷菜单,菜单中有两个菜单项"查询"和"修改"。

然后在表单myform中的RightClick事件中调用快捷菜单m_quick。

考查知识点:

SQL查询语句,查询去向,子查询等。

快捷菜单的建立,在表单中调用快捷菜单。

解题思路:

1.在"零件"表中得到所有颜色为"红"的零件号,然后在"供应"表中获得与此零件号相关的零件信息

select供应商号,工程号,数量from供应;

where零件号iN(select零件号from零件where颜色="红");

intotablesup_temporderby数量desc

2.首先建立菜单,并生成相应的mpr文件,然后在表单中调用。

具体方法是:

在"文件"菜单中选择"新建",在"新建"对话框中选择"菜单",单击"新建文件"按钮,选择"快捷菜单",在菜单设计器中输入两个菜单项"查询"和"修改",单击"菜单"菜单中的"生成",按提示保存为m_quick,并生成菜单程序文件(MPR)。

打开表单myform,双击表单设计器打开代码窗口,在对象中选择form1,在过程中选择RightClick,输入代码:

dom_quick.mpr,保存表单。

三、综合应用(1小题,计30分)

设计名为mysupply的表单(表单的控件名和文件名均为mysupply)。

表单的形式如下图

表单标题为"零件供应情况",表格控件为Grid1,命令按钮"查询"为Command1、"退出"为Command2,标签控件label1和文本框控件text1(程序运行时用于输入工程号)。

运行表单时,在文本框中输入工程号,单击"查询"命令按钮后,表格控件(名称grid1)中显示相应工程所使用的零件的零件名、颜色和重量(通过设置有关"数据"属性实现),并将结果按"零件名"升序排序存储到pp.dbf文件。

单击"退出"按钮关闭表单。

完成表单设计后运行表单,并查询工程号为"J4"的相应信息。

考查知识点:

表单的建立,控件的使用,SQL查询命令等。

解题思路:

1.选择"文件"菜单中"新建"命令,在文件类型选择框中选择"表单",单击"新建文件"按钮。

2.在表单设计器中设置表单的Name属性为"mysupply",Caption属性为"零件供应情况",从控件工具栏中分别选择一个表格、一个标签、一个文本框和两个命令按钮放置到表单上,分别设置标签label1的Caption属性为"工程号",命令按钮Command1的Caption属性为"查询",Command2的Caption属性为"退出",表格的Name属性为"grid1",RecordSourceType属性为"0-表"。

3.在Command1按钮的Click事件中输入:

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=alltrim(thisform.text1.value);

orderby零件.零件名intotablepp.dbf

thisform.grid1.recordsource="pp"

4.在Command2按钮的Click事件中输入:

Thisform.release。

5.保存表单并运行,在文本框中输入J4,并单击"查询"命令按钮。

教材P113~P114域完整性与约束规则

二、1.

select供应商号,工程号,数量from供应;

where零件号iN(select零件号from零件where颜色="红");

intotablesup_temporderby数量desc

教材P132~P133之嵌套查询注意应用条件

重点参见P132例4.8

2.教材P237~P239快捷菜单设计

三、

教材P140~P143超链接查询

教材P131~P132简单的连接查询

对比体会两种等价做法,以及P142~P143指出的超链接时的书写顺序。

教材P141

例4.31普通连接

select仓库.仓库号,城市,面积,职工号,工资;

from仓库join职工;

on仓库.仓库号=职工.仓库号

等价于:

select仓库.仓库号,城市,面积,职工号,工资;

from仓库innerjoin职工;

on仓库.仓库号=职工.仓库号

即innerjoin等价于join

也等价于:

select仓库.仓库号,城市,面积,职工号,工资;

from仓库,职工;

where仓库.仓库号=职工.仓库号

这是普通连接的另一种写法,即不采用innerjoin或join,而是直接用逗号分隔参与连接的表,功能完全相同,而这种格式已经在§4.2.2中介绍过了。

应注意的是,不采用innerjoin或join时,连接条件便不能用on给出,而是直接放在where后面,请参考上述例题体会。

从而,在VF中,内连接,也简称为连接或普通连接,在连接类型表达上就有了三种格式:

采用innerjoin短语,如:

from仓库innerjoin职工

采用join短语,如:

from仓库join职工

直接用逗号分隔,如:

from仓库,职工

再次强调,当采用格式

时,连接条件用on给出;当采用格式

时,连接条件便不能用on给出,而是直接放在where后面。

实质上,格式

来自SQL,而格式3出自VF自身。

其功能完全相同,可任意灵活选用。

教材P131

例4.6找出工资多于1230元的职工的职工号和他们所

在的城市

select职工号,城市from职工,仓库;

where(工资>1230)and(职工.仓库号=仓库.仓库号)

select职工号,城市from职工join仓库;

on职工.仓库号=仓库.仓库号where工资>1230

教材P132

例4.7找出工作在面积大于400的仓库的职工的职工号,以及他们工作的城市。

select职工号,城市from职工,仓库;

where(面积>400)and(职工.仓库号=仓库.仓库号)

select职工号,城市from职工join仓库;

on职工.仓库号=仓库.仓库号where面积>400

 

P142页底~P143页头

注意:

当采用join运算时,在这种格式中join的顺序和on的顺序很重要,具体来讲,各表的join顺序应符合按题目要求进行跨表查找时,各表查找顺序的正序或逆序,只有这两种join顺序是正确的,请切记!

在join顺序正确书写后,on的(即相应连接条件的)书写顺序应该与join的书写顺序恰好相反。

对上述两点举例说明如下:

仍是针对课本P115图3.18中的4个表,要求查询有订单的仓库的仓库号和所在城市,以及该仓库的订单所涉及的供应商的供应商名与地址。

查找顺序:

先在“仓库”表中选中一个仓库号,然后查看在“职工”表中该仓库是否有职工,若有职工,再查看该职工在“订购单”表中是否有订单记录,若有订单记录,再在“供应商”表中查看该订单记录涉及的供应商的供应商名和地址,找到后,再按题目要求将“仓库.仓库号,城市,供应商名,地址”这4列的相应内容选定,留待显示。

重复上述过程,直到查完所有记录为止,并在屏幕上显示最终结果。

上述为按题目要求查找时各表的查看顺序,我们称之为正序,此处为“仓库→职工→订购单→供应商”。

显然逆序则为“供应商→订购单→职工→仓库”

按查找正序书写join条件时select语句如下:

select仓库.仓库号,城市,供应商名,地址;

from仓库join职工join订购单join供应商;

on供应商.供应商号=订购单.供应商号;

on订购单.职工号=职工.职工号;

on职工.仓库号=仓库.仓库号

请体会join的书写顺序为“仓库join职工join订购单join供应商”,为正序,而on的书写顺序与join的书写顺序恰好相反(指的是该表达中三个on体现出的4个表两两连接的次序应与join书写顺序相反,至于每个on后面的具体连接条件,其等号左右的内容可以互换,并不影响结果)。

按查找逆序书写join条件时select语句如下:

select仓库.仓库号,城市,供应商名,地址;

from供应商join订购单join职工join仓库;

on职工.仓库号=仓库.仓库号;

on订购单.职工号=职工.职工号;

on供应商.供应商号=订购单.供应商号

请体会join的书写顺序为“供应商join订购单join职工join仓库”,为逆序,而on的书写顺序与join的书写顺序恰好相反(指的是该表达中三个on体现出的4个表两两连接的次序应与join书写顺序相反,至于每个on后面的具体连接条件,其等号左右的内容可以互换,并不影响结果)。

上述两种表达方式都能得出正确结果,如下图

再次强调除上述正、逆序外,其它join书写顺序都得不出正确结果,切记!

扩展:

在经历了有关连接运算join和on的书写顺序的痛苦折磨之后,来看个喜讯吧,在例3.31的讲解中提到了连接运算还有不用join和on形式,当采用逗号分割各表,用where和and引出连接条件的格式时,逗号分割的各表,顺序任意,同时用where和and引出的连接条件也顺序任意,大家可自行验证。

基于此,强烈建议大家,除非题目指定用join和on来完成连接运算,否则请优先选用逗号分割各表,用where和and引出连接条件的格式,这样出错几率将大大降低。

先考虑只查J4工程的相应情况:

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号="J4"

再加上排序要求(教材P134排序):

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=”J4”;

orderby零件.零件名

 

再加上存到指定永久表pp.dbf中:

教材P143~P144SQLSELECT的几个特殊选项

永久表:

INTOTABLE

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=”J4”;

orderby零件.零件名intotablepp.dbf

 

实现文本框TEXT1输入任何工程号,均可查:

P63ALLTRIM函数:

去除字符串前后空格。

P195文本框的Value属性:

实时反映文本框的内容。

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=alltrim(thisform.text1.value);

orderby零件.零件名intotablepp.dbf

请注意此时有了“工程号=alltrim(thisform.text1.value)”,则在命令窗口里已经无法运行,只能在表单事件代码里输入后运行验证了(命令窗口不识别thisform等表单术语)。

至此,生成永久表pp.dbf已经完成,下面考虑怎么把此表的内容显示在表格控件grid1中。

P207表6.18

注意

RecordSourceType属性为"0-表"与

RecordSourceType属性为"1-(默认值)别名"

的区别(稍后实际演示区别)

保险起见,应选RecordSourceType属性为"0-表"

然后在Command1按钮的Click事件中输入:

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=alltrim(thisform.text1.value);

orderby零件.零件名intotablepp.dbf

thisform.grid1.recordsource="pp"

注意recordsource属性值为字符型,在代码里赋值时应加定界符,此处提供的是永久表pp的名字。

关掉改写提示信息命令

setsafetyoff

加上这一句后,反复执行时将直接改写已有的表,不再提问,如下:

setsafetyoff

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=alltrim(thisform.text1.value);

orderby零件.零件名intotablepp.dbf

thisform.grid1.recordsource="pp"

 

下面的代码,加了“USE”指令,关闭了刚生成的表,体会此时

RecordSourceType属性为"0-表"与

RecordSourceType属性为"1-(默认值)别名"

的不同

记住RecordSourceType属性为"1-(默认值)别名"时需要用到的表先打开,否则调不动该表。

而RecordSourceType属性为"0-表"时,不必事先打开所用的表。

setsafetyoff

select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=alltrim(thisform.text1.value);

orderby零件.零件名intotablepp.dbf

use

thisform.grid1.recordsource="pp"

体会不含任何参数的use命令将关闭所有已打开的表,这样,刚刚生成的永久表pp便被关闭了。

可以看到,分别将RecordSourceType设定为

"0-表"和

"1-(默认值)别名"时

分别执行上述代码,"0-表"时有结果,"1-(默认值)别名"时无结果,因后者无力打开指定的表。

至此,综合应用题分析结束,下面拓展表格控件RecordSourceType属性与RecordSource的配合,依然借用上述题目中的SQL语句和题目环境,但已不再局限于题目的要求,请注意此点!

 

教材P185~P187数据环境

若想要表的内容一开始就显示在表格控件里,可先把用到的表(此处为供应和零件两个表,用谁就添加谁,当然也可都添加上)添加到表单的数据环境中这样在上述RecordSourceType属性为"0-表"与

RecordSourceType属性为"1-(默认值)别名"时

就都可以直接在表格控件的RecordSource属性对话框里点开下拉列表框,点选用到的相应表了。

此时表单一运行,所选表就直接显示在表格控件里了。

建议自己尝试一下。

添加到数据环境的表会在表单运行时自动打开。

需要指出的是,在数据环境里添加了表后,仍可以不在RecordSource属性对话框里点开下拉列表框,点选用到的相应表。

仍可继续在代码中临时提供表名,这并不矛盾,请体会。

若用到的是在代码中临时生成的表(如前述题目中临时生成的永久表pp),显然无法事先添加到数据环境中,那就只能在代码中临时给RecordSource属性赋值了。

 

若直接将查询语句作为recordsource的来源,则可令

RecordSourceType属性为"4-SQL说明",然后

在Command1按钮的Click事件中输入:

setsafetyoff

thisform.grid1.recordsource="select零件名,颜色,重量from零件innerjoin供应;

on零件.零件号=供应.零件号where工程号=alltrim(thisform.text1.value);

orderby零件.零件名intotablepp.dbf"

再次强调recordsource属性值为字符型,在代码里赋值时应加定界符。

注意:

可发现,若直接将前述代码或命令窗口中的SQL

语句加双引号放到recordsource后面,会运行不出结果,

原因如下:

请注意若在双引号之间输入select语句,则续行符之后应

该有至少一个空格,虽然在命令窗口或程序代码窗口里

不加字符定界符而直接输入select语句时,续行符

之后不加空格照样执行,那

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1