2013强化操作第一次讲义.doc_第1页
2013强化操作第一次讲义.doc_第2页
2013强化操作第一次讲义.doc_第3页
2013强化操作第一次讲义.doc_第4页
2013强化操作第一次讲义.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

先对命令窗口加以复习应着重指出在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命令窗口中,所有命令本身在输入时都是不能加引号的。除非用到了字符型常量,而这种情况下很容易区分命令和字符型常量,如”DELETE FOR 城市=”北京”中,最外层的引号,是本文为行文需要加上的,在命令窗口中输入时,最外层的引号请不要输入,但命令中等号后的”北京”两字前后的引号,是该字符型常量自带的“定界符”,输入时必须有,否则数据类型错误,系统会报错,该命令将无法执行,请体会之。故初学者请谨记:命令窗口中,直接输入命令即可,除非必要(字符型常量),否则不要加引号!请读到本文中的带引号命令时,能想到这一点,不要误以为输入时也加引号,只说这一次,请切记!第一套原题目:一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分) 在考生文件夹下完成如下操作: 1. 新建一个名为供应的项目文件。 2. 将数据库供应零件加入到新建的供应项目文件中。 3. 通过零件号字段为零件表和供应表建立永久联系(零件是父表,供应是子表)。4. 为供应表的数量字段设置有效性规则: 数量必须大于0并且小于9999;错误提示信息是数量超范围(注意:公式必须为 数量0.and.数量0.and.数量1230) and (职工.仓库号=仓库.仓库号)select 职工号,城市 from 职工 join 仓库 ;on 职工.仓库号=仓库.仓库号 where 工资1230教材P132例4.7找出工作在面积大于400的仓库的职工的职工号,以及他们工作的城市。select 职工号,城市 from 职工,仓库 ;where (面积 400) and (职工.仓库号=仓库.仓库号)select 职工号,城市 from 职工 join 仓库 ;on 职工.仓库号=仓库.仓库号 where 面积 400P142 页底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 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=J4再加上排序要求(教材P134 排序):select 零件名,颜色,重量 from 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=”J4”;order by 零件.零件名再加上存到指定永久表pp.dbf中:教材P143P144 SQL SELECT 的几个特殊选项永久表:INTO TABLE select 零件名,颜色,重量 from 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=”J4”;order by 零件.零件名 into table pp.dbf实现文本框TEXT1输入任何工程号,均可查:P63 ALLTRIM函数:去除字符串前后空格。P195 文本框的Value属性:实时反映文本框的内容。select 零件名,颜色,重量 from 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=alltrim(thisform.text1.value);order by 零件.零件名 into table pp.dbf请注意此时有了“工程号=alltrim(thisform.text1.value)”,则在命令窗口里已经无法运行,只能在表单事件代码里输入后运行验证了(命令窗口不识别thisform等表单术语)。至此,生成永久表pp.dbf已经完成,下面考虑怎么把此表的内容显示在表格控件grid1中。P207 表6.18 注意RecordSourceType属性为0表与RecordSourceType属性为1(默认值)别名的区别(稍后实际演示区别)保险起见,应选RecordSourceType属性为0表然后在Command1按钮的Click事件中输入:select 零件名,颜色,重量 from 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=alltrim(thisform.text1.value);order by 零件.零件名 into table pp.dbfthisform.grid1.recordsource=pp注意recordsource属性值为字符型,在代码里赋值时应加定界符,此处提供的是永久表pp的名字。关掉改写提示信息命令set safety off加上这一句后,反复执行时将直接改写已有的表,不再提问,如下:set safety offselect 零件名,颜色,重量 from 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=alltrim(thisform.text1.value);order by 零件.零件名 into table pp.dbfthisform.grid1.recordsource=pp下面的代码,加了“USE”指令,关闭了刚生成的表,体会 此时RecordSourceType属性为0表与RecordSourceType属性为1(默认值)别名的不同记住 RecordSourceType属性为1(默认值)别名时需要用到的表先打开,否则调不动该表。而RecordSourceType属性为0表时,不必事先打开所用的表。set safety offselect 零件名,颜色,重量 from 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=alltrim(thisform.text1.value);order by 零件.零件名 into table pp.dbfusethisform.grid1.recordsource=pp体会不含任何参数的use命令将关闭所有已打开的表,这样,刚刚生成的永久表pp便被关闭了。可以看到,分别将RecordSourceType设定为0表和1(默认值)别名时分别执行上述代码,0表时有结果, 1(默认值)别名时无结果,因后者无力打开指定的表。至此,综合应用题分析结束,下面拓展表格控件RecordSourceType属性与RecordSource的配合,依然借用上述题目中的SQL语句和题目环境,但已不再局限于题目的要求,请注意此点!教材P185P187 数据环境 若想要表的内容一开始就显示在表格控件里,可先把用到的表(此处为供应和零件两个表,用谁就添加谁,当然也可都添加上)添加到表单的数据环境中这样在上述RecordSourceType属性为0表与RecordSourceType属性为1(默认值)别名时就都可以直接在表格控件的RecordSource属性对话框里 点开下拉列表框,点选用到的相应表了。此时表单一运行,所选表就直接显示在表格控件里了。建议自己尝试一下。添加到数据环境的表会在表单运行时自动打开。需要指出的是,在数据环境里添加了表后,仍可以不在RecordSource属性对话框里点开下拉列表框,点选用到的相应表。仍可继续在代码中临时提供表名,这并不矛盾,请体会。若用到的是在代码中临时生成的表(如前述题目中临时生成的永久表pp),显然无法事先添加到数据环境中,那就只能在代码中临时给RecordSource属性赋值了。若直接将查询语句作为recordsource的来源,则可令RecordSourceType属性为4SQL说明,然后在Command1按钮的Click事件中输入:set safety offthisform.grid1.recordsource=select 零件名,颜色,重量 from 零件 inner join 供应 ;on 零件.零件号=供应.零件号 where 工程号=alltrim(thisform.text1.value) ;order by 零件.零件名 into table pp.dbf再次强调recordsource属性值为字符型,在代码里赋值时应加定界符。注意:可发现,若直接将前述代码或命令窗口中的SQL语句加双引号放到recordsource后面,会运行不出结果,原因如下:请注意若在双引号之间输入select语句,则续行符之后应该有至少一个空格,虽然在命令窗口或程序代码窗口里不加字符定界符而直接输入select语句时,续行符之后不加空格照样执行,那是因为在命令窗口或程序代码窗口里系统会自动为不加字符定界符的换行指令补上必要的空格。但现在整个查询语句是个字符串,系统会把串内的字符原封不动的理解为命令,从而不会再自动补上必要的空格,请注意这一点。可参见教材P210上的代码中,第一、二、四行的续行符前明显加了空格,而且这三行的注释里也明确指出了此点,请注意此处的这句SQL语句是在双引号里面的。加上必要的空格就解决问题了,为保险起见,可养成任何情况下都在续行符前加一个空格的习惯。在RecordSourceType属性为4SQL说明时,也可在属性对话框里,直接输入SQL语句作为recordsource的属性值,注意此时因recordsource属性值默认就是字符型,故在属性对话框里输入SQL语句时就不能再加双引号等字符定界符了,否则将出错。如可直接在recordsource的属性对话框里输入 select 零件名,颜色,重量 from 零件 inner join 供应;on 零件.零件号=供应.零件号 where 工程号=”J4”;order by 零件.零件名 不加双引号等定界符,如下图:可看到,在属性框里除了不用加定界符外,也不用加半角分号续行,直接按格式完全输入即可。注意:在这里,”into table pp.dbf”被去掉了 (不再考虑此题的要求哈,只是为了能在表格控件grid1中显示此查询语句的结果,不必再去实现题目要求的生成永久表pp.dbf的条件了),虽然带着也不影响结果,只是生成了一个无用的表“pp.dbf“,有些多余。可不加这句也会带来新的不妥,此时的运行结果如下:可以看到查询浏览窗口也同时打开了,因为查询的默认去向就是“浏览“(参见教材P163),当然这并不影响最终的结果。因此是否还加上”into table pp.dbf”,自己抉择吧,只要不影响最终结果,自便。可通过对比观察理解加与不加的区别。建议加 INTO Cursor 临时表文件名 ,这样既不再弹出查询浏览窗口,临时表文件又可及时清除,一举两得。若RecordSourc

温馨提示

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

评论

0/150

提交评论