变量、作用域子程序数据库与视图_第1页
变量、作用域子程序数据库与视图_第2页
变量、作用域子程序数据库与视图_第3页
变量、作用域子程序数据库与视图_第4页
变量、作用域子程序数据库与视图_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

一、内存变量内存变量是在内存中用于存放数据的临时工作单元,与数据库和表独立。1.创建内存变量格式:STORE<表达式>TO<内存变量表>功能:计算<表达式>的值并赋值给变量表的所有内存变量。Store命令Store0tox,y,z变量格式:<内存变量>=<表达式>功能:计算<表达式>的值并赋值给内存变量。=命令x=0y=0z=0Input

[提示信息]

to

<内存变量>Accept

[提示信息]

to

<内存变量>Wait

[提示信息][to

<内存变量>]2.显示表达式的值格式:?/??

[<表达式1>[AT<列号1>][,<表达式2>[AT<列号2>],……]]功能:计算表达式的值,并在屏幕上指定列显示输出表达式的值。?/??命令?:在下一行的行首显示表达式的值。??:在屏幕的当前位置显示表达式的值。3.

内存变量的保存当退出vfp系统后,用户所建立的内存变量将不会存在,但可以使用命令将用户所建立的有用的内存变量保存到内存变量文件中。格式:SAVETO<内存变量文件名>[ALLLIKE<通配符>/ALLEXCEPT<通配符>]功能:将当前内存中的内存变量存放到内存变量文件中。ALLLIKE<通配符>:只保存符合通配符条件的所有变量;ALLEXCEPT<通配符>:只保存不符合通配符条件的所有变量。4.内存变量的恢复命令格式:RESTOREFROM<内存变量文件名>[ADDITIVE]功能:重新使用已保存在内存变量文件中的内存变量ADDITIVE:省略此项,清除内存所有变量后再恢复文件中变量的信息;加选此项,将变量文件中的变量信息追加到内存现有变量信息中。5.内存变量的删除格式一:CLEARMEMORY格式二:RELEASE<内存变量名表>格式三:RELEASEALL[LIKE/EXCEPT<通配符>]功能:格式1删除内存中所有内存变量;格式2删除内存变量名表中指定的内存变量;格式3利用通配符选择删除内存变量。1.数组的定义格式:DIMENSION<数组名1>(<数值表达式1>[,<数值表达式2>])[,<数组名2>(<数值表达式3>[,<数值表达式4>])……]说明:①数组必须先定义后使用,定义数组是向系统申请数组元素在内存中的存储空间。②下标可以是常数、变量或表达式,下标值的最小值为1。如:A(5),A(i+3)。③定义数组时,数组中元素的初始值为.F.。二、数组(1)一维数组的建立①定义一个名字为a,具有5个数组元素的一维数组。

dimensiona(5)②一维数组a(5)的逻辑结构图:③一维数组a(5)的存储结构图:a(1)a(2)a(3)a(4)a(5)a(1)a(2)a(3)a(4)a(5)2.数组的建立(2)二维数组的建立①定义一个名字为b,具有6个数组元素(2行3列)的二维数组。

dimensionb(2,3)②二维数组b(2,3)的逻辑结构图:③二维数组b(2,3)的存储结构图:b(1,1)b(1,2)b(1,3)b(2,1)b(2,2)b(2,3)b(1,1)b(1,2)b(1,3)b(2,1)b(2,2)b(2,3)在VFP中,可以用一维数组的格式来访问二维数组,其对应关系如下:b(1,1)=b(1)b(1,2)=b(2)……b(2,3)=b(6)3.数组的赋值(1)定义数组时赋值

Dimensiona(5),b(2,3)数组a,b中所有元素被初始化为.F.,数组的存储状态如下所示:.F..F..F..F..F.a(1)a(2)a(3)a(4)a(5)数组ab(1,1)b(1,2)b(1,3)数组b.F..F..F..F..F..F.b(2,1)b(2,2)b(2,3)(2)用store或=命令给数组赋值。①给数组的所有元素赋值◆用store命令给数组a,b赋值store0toa,b◆用=命令给数组a,b赋值a=0b=0数组的存储状态如下所示:00000a(1)a(2)a(3)a(4)a(5)数组ab(1,1)b(1,2)b(1,3)数组b000000b(2,1)b(2,2)b(2,3)②给数组的个别元素赋值◆用store命令给数组a,b的元素赋值store0toa(2),a(3),b(1,2),b(2,1),b(2,3)◆用=命令给数组a,b的元素赋值a(2)=0a(3)=0b(1,2)=0b(2,1)=0b(2,3)=0数组的存储状态如下所示:.F.00.F..F.a(1)a(2)a(3)a(4)a(5)数组ab(1,1)b(1,2)b(1,3)数组b.F.0.F.0.F.0b(2,1)b(2,2)b(2,3)表与数组的数据交换命令说明举例SCATTERTO传送当前记录到数组scattertoa&&将当前记录的值传送到数组aGATHERFROM传送数组到当前记录gatherfroma

&&将数组a的值传送到当前记录COPYTOARRAY传送多条记录到数组copytoarraya

&&将所有记录传送到数组aAPPENDFROMARRAY从数组追加多条记录appendfromarraya&&将数组a追加到当前表1.表到数组的数据传递命令SCATTERTO<数组>

[FIELDS<字段表>]功能将当前记录的值依次传送到数组。2.数组到表的数据传递命令GATHERFROM

<数组>

[FIELDS<字段表>]功能将数组的值依次传送到当前记录。一、单条记录的传递[e.g.1-12]从表传递数据到数组。use选课dimensiona(3)go3scattertoafields学号,成绩学号课程号成绩S0201101C13090S0201101C11080S0201102C15066S0201102C12087S0201201C13094.F..F..F.选课.DBF数组Aa(1)a(2)a(3)S020110266.F.[e.g.1-13]从数组传递数据到表。use选课dimensiona(3)a(1)="S0201202"a(2)=100go3gatherfromafields学号,成绩学号课程号成绩S0201101C13090S0201101C11080S0201102C15066S0201102C12087S0201201C13094S0201202100.F.选课.DBF数组Aa(1)a(2)a(3)学号课程号成绩S0201101C13090S0201101C11080S0201202C150100S0201102C12087S0201201C13094二、多条记录的传递1.表到数组的数据传递命令COPYTOARRAY

<数组>

[FIELDS

<字段表>]

[<范围>][FOR<条件1>][WHILE

<条件2>]功能将选定的记录依次传送到数组。默认范围ALL2.数组到表的数据传递命令APPENDFROMARRAY<数组> [FIELDS<字段表>][FOR<条件>]功能将数组的每行作为一条记录依次追加到当前表。[e.g.1-14]从表传递数据到数组。use选课dimensiona(2,3)copytoarraya学号课程号成绩S0201101C13090S0201101C11080S0201102C15066S0201102C12087S0201201C13094选课.DBF数组A.F..F..F..F..F..F.S0201101C13090S0201101C11080[e.g.1-15]从数组传递数据到表。use选课dimensiona(2,3)a(1,1)="S0201202"a(1,2)="C140"a(1,3)=50a(2,1)="S0201202"a(2,2)="C150"a(2,3)=100appendfromarraya学号课程号成绩S0201101C13090S0201101C11080S0201102C15066S0201102C12087S0201201C13094选课.DBF数组AS0201202C14050S0201202C150100学号课程号成绩S0201101C13090S0201101C11080S0201102C15066S0201102C12087S0201201C13094S0201202C14050S0201202C150100?1.阅读下面程序

USECJS=0DOWHILENOTEOF()SCATTERTOXCJFIELDS大学语文,大学英语,法律基础,计算机基础

NG=0

FORI=1TO4

IFXCJ(I)<60NG=NG+1

ENDIF

ENDFOR

IFNG>=2S=S+1DELETE

ENDIFSKIPENDDO?SUSE(1)本程序中记录被逻辑删除的条件是(C)[A]有两门课程成绩低于60的记录[B]1-4号记录[C]有两门及以上课程成绩低于60的记录[D]记录号大于2的记录(2)程序最后输出的S的值是(B)[A]2 [B]3 [C]4 [D]7(3)退出DO-WHILE循环后,NG的值是(A)[A]0 [B]1 [C]2 [D]31、基本概念(1)主程序:被直接执行的程序(也是最早被执行的程序)。(2)子程序:被别的程序调用的程序,每个子程序都保存在一个独立的程序文件中。(3)过程:与子程序相似,但多个过程可保存在同一个过程文件(PRG)中。§子程序、过程、自定义函数及过程文件(PRG)在程序设计过程中,经常把能够完成一个特定功能的程序编写成一个过程,作为一个模块。以便在其它程序中使用该功能时调用该程序。这种可以完成一个特定功能的程序称为子程序、过程或自定义函数。2、程序调用Do<子程序>|<过程>*Main.prg

……

dos1……*S1.prg

……

dos2……Return*S2.prg

……

……Return子程序调用演示图:*Main.prg

……

dos1……*S1.prg

……

dos2……Return*S2.prg

……

……Returntomaster子程序调用演示图:6、过程文件(1)定义由多个过程组成的文件称为过程文件。(2)基本格式Procedure<过程名1><语句序列1>Return[tomaster|<过程名>]

:::Procedure<过程名n><语句序列1>Return[tomaster|<过程名>](3)使用①打开过程文件命令格式:Setprocedureto<过程文件名>②调用过程命令格式:Do<过程名>

Do<过程名>with<实参表>③关闭过程文件格式一:Setprocedureto格式二:Closeprocedure说明:系统在任何时候只能打开一个过程文件,当打开新的过程文件时将关闭原来的打开过程文件。?总结:(子程序与过程的使用)子程序:Sub.prg

::Return过程文件:Proc.prgProcedurep1

:ReturnProcedurep2

:Return主程序:Main.prg

:Dosub

:Setproceduretoproc

:Dop1

:Dop2

:Setprocedureto★变量的作用域、参数的传递变量的作用域(黑板)1、主从性2、全局变量:PUBLIC3、私有变量(变量屏蔽)局部变量:PRIVATE4、本地变量:LOCALMainA=“人民”B=1Dosub1?A,B,CSub1?A,BA=date()B=B+BC=.t.?A,B,CRETUMainA=“人民”B=1Dosub1?A,BSub1?A,BA=date()B=B+B?A,BRETUSub2?A,BA=“QQ”B=.F.?A,BRETUMainA=“人民”B=1Dosub1?A,BSub1?A,BA=date()B=B+B?A,BRETUSub2?A,BA=“QQ”B=.F.Dosub3?A,BRETUSub3?A,BA=6B=.F..and.B?A,BRETU参数的传递性

*主程序main.prg*子程序sub.prgclearallparan,facs=0/i=1forj=1tondowhilei<=5fac=fac*jtemp=1nextdosubwithi,temps=s+temp/i=i+2enddoenddo/?s子程序sub.prg被主程序main.prg调用的次数为(34)34(A)5(B)4(C)3(D)2执行主程序main.prg输出的结果S为(35)35(A)120(B)127(C)9(D)3

⒊阅读下面的程序:*主程序ABC.PRG*过程文件SUB1.PRGCLEARPARAMETERSE,F,GA=”PARA”E=E+”METERS”B=CTOD(“08/20/09”)F=YEAR(F)C=.T.G=GAND.T./RETUDOSUB1WITHA,B,C*过程SUB2.PRGDOSUB2PRIVATEA?A,B,C/RETUA=”CALL”/C=.NOT.C?A,B,C/RETU过程SUB2的输出“?A,B,C”为(31)31(A)CALL2009.F.(B)CALL2009.T.(C)PARA2009.F.(D)PARA2009.T.主程序ABC的输出“?A,B,C”为(32)32(A)PARA2009.F.(B)PARA2009.T.(C)PARAMETERS2009.F.(D)PARAMETERS2009.T.

数据库与视图§数据库一、数据库在VisualFoxPro中,数据库主要用于管理:表、视图、存储过程和连接。除表外,其他对象必须存储于数据库中。数据库表存放在数据库中的表称为数据库表,数据库表可以设置字段属性、记录规则、永久关系以及参照完整性。视图视图是一种虚拟表,利用视图可以把分散在相关表中的数据收集到一起。存储过程存储过程用于创建用户自定义函数,在数据库表的字段级有效性规则和记录级有效性规则可以引用这些函数。连接使用连接对象可以通过ODBC(开放式数据库互连)与远程数据库相连,创建远程视图,使用后台数据库。二、数据库的基本操作创建数据库CREATEDATABASE

<数据库文件名>打开数据库OPENDATABASE

<数据库文件名>修改数据库MODIFYDATABASE

<数据库文件名>关闭数据库CLOSEDATABASES[ALL]添加数据库表ADDTABLE<表文件名>移除数据库表REMOVETABLE

<表文件名>

[DELETE]§数据库表的关联一、永久关系永久关系是保存在数据库中的、数据库表之间的一种关系,只有在数据库表中创建了索引,才能建立永久关系。一对一关系父表与子表都使用主索引或侯选索引。一对多关系父表使用主索

温馨提示

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

评论

0/150

提交评论