vf子程序、函数与过程

合集下载

VFP常用编程命令及常用函数

VFP常用编程命令及常用函数

VFP常用编程命令及常用函数VFP常用编程命令及常用函数常用编程命令及常用函数注:在语法中如用方括号“[]”括起来的词句,表示可以不用。

常用命令假设(if...endif) 循环(dowhile...enddo)分支(docase...endcase)赋值(store...to) 调用表单(do form) 调用子程序(do)返回调用程序(return) 启动事件处理(readevents)清除事件处理(clearevents)开关命令执行状态(set talkon/off)结束程序(cancel)常用函数数值转换字符(str()) 字符转换数值(val()) 取系统日期(date())取年份(year()) 取月份(month()) 取天日(day())取整(int()) 四舍五入(round()) 删除标记(delete())记录号(recno()) 记录数(reccount()) 找到记录(found())表结尾(eof()) 表开头(bof()) 消除后续空格(trim())消除前导空格(ltrim())假设语句根据一逻辑表达式的值,有条件的执行一组命令。

语法:IF 逻辑表达式 [THEN]程序组1[ELSE程序组2]ENDIF参数:逻辑表达式代表一逻辑值,如果这逻辑值为真,系统执行程序组1,否则不执行程序组1,如果有else及程序组2的话,则执行程序组2,如没有则什么也不执行,直接执行endif后面的语句。

备注:在if...endif之间还可以有if...endif,即该命令是可以嵌套的。

then可以有也可以没有,对程序没有影响。

else及程序组2可以有也可以没有,但如果有的话,在逻辑表达式的值为假时,程序组2将被执行。

if 与 endif 必须配对使用,即有一个 if 必须有一个 endif,否则程序会出错。

举例:例1:假如分数字段的值大于等于90,则让等级字段的值为“优”,并显示该记录。

第5章VFP语言基础-过程和函数

第5章VFP语言基础-过程和函数
.1 程序设计概述 5 .2 结构化程序设计 5 .3 面向对象的程序设计基础
本章重点
结构化程序设计
顺序、选择、循环
过程和函数
面向对象的程序设计
类和对象 属性、方法、事件
2
过程结构(子程序)
某些程序段需要反复执行多次,这些程序段不 在一个固定的位置上,而是分散在程序的许多位置 上重复执行,可将其与嵌入它的程序分开,形成独 立的程序序列,待使用时再调入程序中,以实现不 同位置上的重复操作。这样做增强了程序的可读性 和模块化。我们称这种具有独立功能而且可以被其 它程序调用的程序序列为子程序、过程或函数。
4
2、使用形式
独立的程序文件中:一个UDF独立的保
存为一个文件 过程文件中:多个UDF保存为一个文件 一个具体的应用程序中:位于一个程序 的底部 数据库的存储过程中
5
prg1
(star) … Do gc1 … … ?gc2() … … Do gc1 … … (end) Gc1 (过程) Gc2 (函数)
11
调用注意点2
过程和函数的存在方式
(2)若函数或过程集中保存在某程序 文件中,则应使用如下命令来访问

SET PROCEDURE TO 程序名
12
5、传递参数的方式1
形式参数(形参)
定义时PARAMETERS语句后面所列的参数; 最多可传递27个参数;

实际参数(实参)

调用时使用参数 例: DO Myudf WITH . . . ?Myudf( . . . )

7
3、创建方法
函数
FUNCTION
<函数名> [PARAMETERS <参数列表>] <命令组>

vf第5章课件

vf第5章课件

[例16]有如下程序: *主程序:MAIN.PRG SET TALK OFF CLEAR S=0 DO SUB WITH 10,S ?S RETU *子程序SUB.PRG PARAMETERS D1,D2 D1=D1+D1 D2=D1*2 RETURN 执行主程序后S的值是__________。 分析:DO...WITH语句中的实在参数除了可以是变量外,还可以是任意有数或表达式。当 为常数时, 直接把值传给对应的形参;当为表达式时,先求其值后把其值传给形参。主程序中变量S 的初值为0, S调用子程序SUB,将数值10和0对应传给子程序中的参数D1和D2,执行D1=D1+D1后, D1=20,再执行D2 =D1*2,D2=40,返回到主程序时D2将值回传给S。因此,在主程序执行?S时,屏幕显示40。
(2)编写程序要学会“拿来主义” 已学程序中的部分程序段是可以用到 新的程 序之中的,因此编写新程序时候要注意引用。 因为拿来要比原创省时间。如求和的循环思经学过的程序中找到影子,因此对于已 学程序的改尤其重要,真正做到改的体无完 肤才行。天下文章难免一抄,天下程序难免 一改! 勤练多想是最好的要诀!
[例14]有下列程序: PARAMETER A,B,C,D D=B* B-4*A*C DO CASE CASE D=O CASE D〈O D=O CASE D〉O D=2 CASE D=O D=1 ENDCASE 在主程序中执行如下命令: STORE 2 TO A,C DO SUB WITH A,B,C,D ?D D的值为————— 分析:执行主程序DO SUB WITH A,B,C,D时,把实参1,2,1,2传递给形参A,B,C,D。 在执行过程 SUB中语句D=B*B-4*A*C后的D值为O,然后执行DO CASE/ENDCASE语句,条件CASE D=O 成立,重新赋值D=1, 最后返回主程序时,把形参A,B,C,D的值1,2,1,1传给对应实参A,B,C,D此时D的值 为1。 答案: 1

VFP6-子程序与函数1

VFP6-子程序与函数1

私有属性Private P169例题T4.23
私有属性Private变量变化DEMO
本地属性Local
本地属性的内存变量含义:是指具有既类似私有属 性又不影响下属子程序中同名内存变量属性的内存 变量。本地属性的内存变量必须先特别定义后方能 使用。 本地属性的内存变量特点
定义格式:LOCAL<内存变量列表>] 作用范围:该程序本身。 传递方向:无。 变量寿命:程序运行结束后,该变量被自动删除。 特殊作用:可屏蔽(隐藏)上级(主)程序中与当前程序同 名的变量,即对当前程序中变量的操作,不影响上级( 主)程序中与当前程序同名的变量值。同时也不受下属 子程序中同名内存变量值的影响。
P164例题4.20
set talk off clea ?"同学们!" do p2 ?"晚上好!" set talk on proc p2 ?"早上好!" do p3 ?"下午好!" endproc proc p3 ?"中午好!" endproc

参数传递与作用域
数据库应用(VFP6.0)

计算机教研室

第二节 子程序与参数传递
什么叫子程序、过程和函数? 为什么需要建立? 如何建立? 参数是怎么样传递?
利用参数的内存变量属性 在子程序、过程和函数之间传递
Company Logo
***P3.PRG … … … … … RETURN
Company Logo
DEMO-书P163-图4.16-4.17
Return to master
4.2.1
例题:
子程序
例1:求三个数中的最大数。 ( 子程序例题1.PRG)

VF程序设计基础

VF程序设计基础

Enddo
?“s=”,s cancel
?“s=”,s
cancel
3、“指针”型循环
“指针”型循环控制语句,根据用户设置在表中的当前 记录指针,决定循环体的执行次数。 ⑴格式:SCAN [〈范围〉][for/while 条件表达式] 〈命令序列〉
ENDSCAN
⑵功能:该语句在指定的范围内,依次寻找满足条件的记 录,并对找到的记录执行命令序列。
CASE〈条件表达式N〉 〈命令序列N〉 [ OTHERWISE 〈命令序列N+1〉] ENDCASE
4、注意结构的完整性。
条件1
Y Y
命令序列1 命令序列2

N
条件2 N 条件N N otherwise N
Y Y
命令序列N 命令序列N+1
ENDCASE后
例3: 求Y(X)的值。
1
Y= 0
(x>0)
(x=0)
-1
(x<0)
SET TALK OFF INPUT “请输入X” TO X DO CASE CASE X>0 Y=1 CASE X=0 Y=0 OTHERWISE Y=-1 ENDCASE ? “Y=”,Y SET TALK ON CANCEL
二、循环结构
循环结构是指反复执行某段程序的结构。 1、条件型循环 DO WHILE <条件表达式> 条件表达式 Y 命令序列
一、程序的建立
1、菜单方式
2、MODIFY COMMAND <程序文件名> (也可用于修改)
二、程序的执行
1、菜单方式: “程序”->“运行” 2、命令:do <程序文件名>[.prg] 程序结束常用命令: • Cancel:终止程序,返回命令窗口。 • Return:结束当前程序,返回上级程序。

学习VF基础理论知识

学习VF基础理论知识

我VF课件一个完整的VF数据库系统(DBS)的基本组成部分:1数据库的集合 DB;872 数据库管理系统 DBMS系统软件;3 硬件;4 用户或管理员(应用程序)第二步:认识VF的开发界面界面的组成部分以及每部分的作用注意:(1)每次打开vf必须将输入法调到半角实心的状态(2)命令窗口中只能输入和执行单条命令语句第一讲 1.1数据库及其表操作一: 数据库的操作1:基本概念在VF中数据库是一个逻辑上的概念,通过一组系统文件将相互联系的表统一组织和管理。

(数据库和表之间的关系)文件数据库文件扩展名:DBC数据库备注文件: DCT数据库索引文件: DCXVF中的操作方式:界面操作:通过鼠标操作的过程命令操作:在命令窗口中输入命令完成相关功能的过程2:建立数据库a:通过“新建”对话框建立数据库b:使用命令交互建立数据库CREAT DATABASE [数据库文件名]3:使用数据库(打开、修改)OPEN DATABASE [数据库文件名]MODIFY DATABASE“ SET DATABASE TO 数据库文件名”指定一个打开的数据库为当前数据库。

4:删除数据库用命令删除VF 数据库文件并不真正含有表,只是在数据库文件中登录了表的相关条目信息,表是独立存放在磁盘上的。

所以删除数据库并没有删除数据库中的表等对象,要在删除数据库时同时删除表等对象,要用命令方式。

DELETE DATABASE 数据库文件名 [DELETETABLES]DELETE DATABASE <数据库名>只删除数据库文件DELETE DATABASE <数据库名> DELETETABLES删除数据库文件的同时并删除数据库对应的表二:表的操作概念: VF中操作的基本对象,将现实中的数据转换成VF所能识别的文件.与表相关的文件扩展名有:DBF 表文件FPT 表的备注文件BAK 表的备份文件表文件的创建不管是采用界面操作方式还是命令操作方式创建表文件都是首先进入表设计器,在表设计器中主要是完成对表结构的设计。

实验三 VFP表达式、函数的使用

实验三 VFP表达式、函数的使用

实验三 VFP表达式、函数和命令的使用一、实验目的1、掌握VFP各类型数据的运算符和表达式,能正确由数学表达式转换为VFP 表达式;2、掌握常用VFP函数的功能和使用方法;3、知道VFP命令的一般使用格式,掌握命令的书写规则,了解命令各子句的正确书写格式;二、实验操作内容与步骤1、VFP运算符VFP中运算符分为数值运算符、字符运算符、日期运算符、逻辑运算符和关系运算符,数值运算符以数值数据为操作对象且最终运算结果也是数值数据;字符运算符以字符数据为操作对象而其运算结果可以是字符数据,也可以是逻辑数据;日期运算符以日期数据作为操作对象,运算结果可以是日期数据,也可以是数值数据;逻辑运算符以逻辑数据为操作对象,且其运算结果最终也是逻辑数据;关系运算符以数值、字符、日期、货币等为操作对象,运算最终结果只能是逻辑数据。

数值运算符有:(),^或**,*,,/,+,-,%字符运算符有:+,-,日期运算符有:+,-关系运算符有:<,>,<=,>=,<>或#,=,==,$逻辑运算符有: .NOT.或!,.AND.,.OR.2、VFP表达式(1)数值表达式?2004/4-99^0.5+30%2 491.05a=5b=4c=3n=(a+b+c)/2?”S=”,(n*(n-a)*(n-b)*(n-c))^0.5 6?54%7 5 125.00?5^3(2)字符表达式C1=”CHINA ” &&(注意有四个空格)C2=”中国”C3=”610041 ” &&(注意有四个空格)C4=”2004”?C1+C2 CHINA 中国?C3+C4 6100412004?C1-C2 CHINA中国?C2$C1 .F.?”0”$C3.T.(3)日期表达式?DATE()03/25/11D1=DATE()+20D2={^2004-02-26}D3=DATE-10?D1-DATE() 20?D1+30 05/14/11?D2-D1 -2604?D2>D1 .F.(4)关系表达式?a=b .F.?a>b .T.?a+b>=b+c .T.?c1>C2 .F.?d2<D1 .T.(5)逻辑表达式L1=.T.L2=.F.?.NOT.L1 .F.?L1.Or.L2 .T.?1>2.AND.L1 .F.?DATE()={^2004-02-25}.OR.L1.ANDL2.F.3、常用函数(1)数值函数①、绝对值函数——ABS()?ABS(7-2*4),ABS(-3^4),ABS(200-45) 1 81.00 155②、指数函数——EXP()?EXP(0),EXP(1),EXP(-1) 1.00 2.72 0.37③、取整函数——INT()?INT(100/3),INT(1/6),INT(2**2)33 0 4④、平方根函数——SQRT()?SQRT(9),SQRT(60) 3.00 7.75⑤、最大值和最小值函数——MAX()和MIN()?MAX(12,30,40,90),MIN(1,0,-20,45/9) 90 1⑥、求余函数——MOD()?MOD(4,2),MOD(9,2),MOD(20,-3),MOD(-3,20) 0 1 -1 17MOD(A,B)的功能说明:当A*B>0时,MOD(A,B)=B/|B|*MOD(|A|,|B|)当A*B<0时,MOD(A,B)=B/|B|*(|B|-MOD(|A|,|B|))⑦、圆周率函数——PI()?PI() 3.14(2)字符函数①、求子串位置函数——AT()、ATC()、AT-C()和ATCC()?AT(”FOX”,”Visual FOXPro”),ATC(‘FOX’,“FoxPRO”)8 1 ?ATCC(‘技术’,“发展高新技术产业”) 5②、取子串函数——SUBSTR()和SUBSTRC()?SUBS(“我是中国人”,3,4),SUBSTRC(“我是中国人”,2,2)中国是是③、测试字符串长度函数——LEN()和LENC()?LEN(“中国人民”),LENC(“中国人民”)8 4④、英文字母大小写转换函数——LOWER()和UPPER()?LOWER(“ABCdFG”),UPPER(“dir foxpro”)abcdefgDIR FOXPRO(3)日期时间函数——DATE()、YEAR()、MONTH()和DAY()?DATE(),YEAR(DATE()),MONTH(DATE()),DAY(DATE())03/25/11 2011 3 25(4)转换函数①、ASCII码值与字符转换函数——ASC()和CHR()?ASC“A”),ASC“a“) A a?CHR(65),CHR(97)65 97②、日期形式字符数据与日期数据的转换——CTOD()和DTOC()?CTOD(“03-08-04“)+10,”今天是“+DTOC(DATE())03/18/04 今天是03/25/11③、数值与字符数据的转换函数——STR()和VAL()?STR(12345),VAL(“12345“)12345 12345.004、VFP命令的使用方法(1)、命令名称必须位于命令行的开始位置,其余子句间的位置可以任意,子句间用空格分隔,关键词和命令可以缩写为前四字母组成,大小写等效;(2)、命令中的标点符号必须是英文半角状态下的标点符号;(3)、屏幕行输入不完命令行可以断行于下一行输入,但上行行尾必须使用分号“;“。

VFP命令、函数及程序语句大全

VFP命令、函数及程序语句大全

VFP命令、函数及程序语句大全(2)二、常用函数1、数学函数函数用途ABS(<数值表达式>)绝对值,|x|CEILING(<数值表达式>)>=自变量的最小整数EXP(<数值表达式>)对基E的幂,e=2.71828FLOOR(<数值表达式>)<=自变量的最大整数INT(<数值表达式>)取整(舍尾)自变量LOG(<数值表达式>)自变量的自然对数,ln xLOG10(<数值表达式>)自变量的普通对数,lg xMAX(<表达式1>,<表达式2>)两个值的最大值MIN(<表达式1>,<表达式2>)两个值的最小值MOD(<数值表达式1>,<数值表达式2>)求余数RAND([<数值表达式1>])返回伪随机数ROUND(<数值表达式1>,<数值表达式2>)四舍五入第一个自变量SIGN(<数值表达式>)自变量的符号SQRT(<数值表达式>)平方根(正根)2、字符串操作函数函数用途&<内存变量> 用于代替内存变量内容LEN(<字符串表达式>)返回字符串表达式的字符个数SPACE(<数值表达式>)生成空格SUBSTR(<字符串表达式>,<数值表达式n>[,<数值表达式L>])求子字符串,从指定的字符串表达式第n个开始,总长为L的字符串LOWER(<字符串表达式>)将字符串字母转换成小写字母UPPER(<字符串表达式>)将字符串字母转换成大写字母TRIM(<字符串表达式>)删除字符串尾空格ASC(<字符串表达式>)返回字符串表达式最左边的第一个字符的ASCII码CHR(<数值表达式>)将数值表达式转换成字符AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式n>])确定字符串表达式1在字符串表达式2中的位置,n 为字符串表达式第几次出现STR(<数值表达式>[,<数值表达式L>][,<数值表达式n>)将数值转换为字符串,L为数值表达式总长,n为小数位数VAL(<字符串表达式>)将数字字符串转换为数字TYPE(<表达式>)检测表达式值的数据类型LTRIM(<字符串表达式>)删除字符串左部空格RTRIM(<字符串表达式>)删除字符串右部空格LEFT(<字符串表达式>,<数值表达式n>)取字符串左边部分字符,n为返回的字符个数RIGHT(<字符串表达式>,<数值表达式n>)取字符串右边部分字符,n从右边截取字符个数3、表(.dbf)操作函数函数用途BOF([<工作区号或别名>])查表文件开始函数EOF([<工作区号或别名>])表文件结尾测试函数RECNO([<工作区号或别名>])测试当前或指定工作区表的当前记录号DELETED([<工作区号或别名>])记录删除测试函数FILE(<"字符串">)测试文件是否存在函数DBF([<工作区号或别名>])检测表的文件名函数4、日期、时间函数函数用途DATE()查系统当前日期函数TIME([<数值表达式>])查系统当前时间函数YEAR(<日期型表达式>|<日期时间型表达式>)由日期查年函数MONTH(<日期型表达式>|<日期时间型表达式>)从日期查月份函数CMONTH(<日期型表达式>|<日期时间型表达式>)由日期查月份名函数DAY(<日期型表达式>|<日期时间型表达式>)从日期查当月的日函数DOW(<日期型表达式>|<日期时间型表达式>[,<数值表达式>])由日期查星期函数CDOW(<日期型表达式>|<日期时间型表达式>)从日期查星期名函数DTOC(<日期型表达式>|<日期时间型表达式>)日期转换为字符函数CTOD(<字符串表达式>)字符串转换为日期函数CTOT(<字符串表达式>)返回日期时间值函数TTOC(<日期时间型表达式>)返回字符值5、显示、打印位置函数函数用途ROW()判断光标行位置函数COL()判断光标列位置函数INKEY([<数值表达式>])检测用户所击键对应的ASCII码函数,数值表达式以秒为单位等待击键的时间6、其他函数函数用途DISKSPACE()返回默认磁盘驱动器中可用字节数函数OS()检测操作系统名称的函数VERSION()返回VFP版本号的函数VFP命令、函数及程序语句大全(3)三、主要程序语句1、条件判断语句(1)IF <条件><命令语句组>ENDIF说明:如果条件为真,则执行命令语句组中的各语句,否则跳过这些命令语句不执行,而执行ENDIF后的语句。

VFP命令、函数及程序语句大全解读

VFP命令、函数及程序语句大全解读

VFP命令、函数及程序语句大全(1学过VFP(Microsoft Visual FoxPro的朋友都知道它是微软公司开发的数据库管理系统。

它经历了从dBASE、FoxBASE、FoxPro直到VFP的发展过程。

本文便以VFP 6.0为例介绍它的命令、函数及程序语句,为学习VFP的朋友提供必要的学习参考,也为已经精通VFP的朋友提供复习的好机会。

一、主要命令:1、CREATE作用:建立一个新的表。

格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下同。

说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出对话框,要求用户输入想要建立的表名。

在命令中不加文件名或问号系统也会弹出对话框,要求用户输入想要建立的表名。

2、MODIFY STRUCTURE作用:显示表文件结构,并允许修改此表的结构。

格式:MODIFY STRUCTURE说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。

3、APPEND作用:在当前表的尾部(无论表中有无记录追加记录(在当前表指当前正使用的表。

格式:APPEND [BLANK]说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。

无BLANK 参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。

4、INSERT作用:在表文件中间插入一个新记录。

格式:INSERT [BEFORE] [BLANK]说明:INSERT 在当前记录后插入一记录;INSERT BEFORE 在当前记录前插入一记录;INSERT BEFORE BLANK 在当前记录前插入一空记录。

INSERT - SQL命令追加记录INSERT INTO 表名[(字段1[,字段2…]];VALUES(表达式1[,表达式2…]例:INSERT INTO XS(XH,XM,XB,XIMINGVALUES(“950106”,“高山”,“男”,“”5、UPDATE作用:修改数据update <表名> set <字段1=表达式1>,<字段2=表达式2...> where <条件>例: update <表名> set <字段1,字段2...>=<表达式1,表达式2...> where <条件>6、BROWSE作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。

vf子程序、函数与过程省名师优质课赛课获奖课件市赛课一等奖课件

vf子程序、函数与过程省名师优质课赛课获奖课件市赛课一等奖课件

私有变量
在程序中直接使用(没有预先申明),而 由系统自动隐含建立旳变量都是私有变 量。 私有变量旳作用域是建立它旳模块及其 下属旳各层模块。
*主程序 main.prg r=100 DO sub ?p RETURN
*子程序sub.prg p=2*3.14*r RETURN
*主程序 main.prg r=100 DO sub ?p RETURN
endfunc
modify command main
*main.prg set talk off input "输入x:" to x input "输入y:" to y z=fun2(x,y) ?x,y,z set talk on return
modify command fun2
*fun2.prg parameters a,b c=a*a-b*b return c
7.5.3 调用子程序时旳数据传递
1.利用变量旳作用域实现数据传递
例 计算矩形面积旳程序。 * main.prg主程序 gao=8 kuan=6 c=0 DO sub ?c CANCEL * sub.prg子程序 c=gao*kuan RETURN
2.利用参数实现数据传递
*main.prg set talk off input "输入x:" to x input "输入y:" to y z=fun1(x,y) ?x,y,z set talk on return
*子程序sub.prg PUBLIC p p=2*3.14*r RETURN
628.00
•隐藏变量
当子程序中定义旳变量名与主程序中同名时, 为防止子程序中旳变量值变化主程序中旳变量 值,可在子程序中使用PRIVATE命令隐藏主程 序中可能存在旳变量,使这些变量在子程序中 临时无效。

VFP程序设计子程序过程函数

VFP程序设计子程序过程函数
10
子程序 子程序文件
过程 过程 过程
程序 过程 过程
过程文件 复杂的过程文件
11
三.过程及过程文件-建立
一)建立 1.方法:用MODI COMM命令.
例如: modi comm general 2.过程的结构:
PROCEDURE <过程名> <过程体>
RETURN [TO MASTER/TO <过程名>] 或Endproc
X=M DO jc &&求阶乘 DO sum &&求和 ENDFOR SET PROC TO RETU
*主程序jc.prg
PROC jc T=1 FOR F=1 TO X
T=T*F ENDFOR X=T RETU
PROC sum ?M,S S=S+X
RETU
过程文件:general.prg 16
四、自定义函数
<过程体> RETURN [TO MASTER/TO <过程名>]
13
三.过程及过程文件-打开、关闭、调用
二)过程文件的打开和关闭 打开:SET PROCEDURE TO <过程文件名> 关闭:SET PROCEDURE TO
或:CLOSE PROCEDURE 三)调用
打开过程文件后, 用 DO <过程名>[WITH 参数表]
子程序、过程或自定义函数。
他们在命名方式、存储方法和参数传递 上略有不同。
4
子程序、过程和自定义函数
一、子程序 子程序是一个相对独立的程序段。子程序总
是被其他程序调用,一般不单独执行。
一)建立和修改 用MODI COMM命令 例如:MODI COMM SUM.PRG MODI COMM TJ

vf命令函数程序设计

vf命令函数程序设计
母转换为小写。 3) UPPER(<字符串表达式>) – 将字符串中小写字母转
换为大写。 4) SPACE(<数值表达式>) – 生成包含指定个数空格 符的字符串。 5) TRIM(<字符串表达式>) – 去掉字符串尾部连续空格。 6) LTRIM(<字符串表达式>) – 去掉字符串首部连续空
格。 7) ALLTRIM(<字符串表达式>) – 去掉字符串首尾连续
11. 浏览数据、修改数据
BROWSE [FIELDS <字段名列表>] [NOEDIT] [TITLE <标题>]
LIST STRUCTURE LIST [OFF] [记录范围] [FIELDS <字段名列表>] [FOR <逻辑表达式>]
DISPLAY STRUCTURE DISPLAY [OFF] [记录范围] [FIELDS <字段名列 表>] [FOR <逻辑表达式>]
10. 记录检测函数
函数格式
返回值说明
RECCOUNT([<工作区号> | <"表别名">])
RECNO([<工作区号> | <"表 别名">])
BOF([<工作区号> | <"表别 名">]) EOF([<工作区号> | <"表别 名">]) DELETED([<工作区号> | <" 表别名">]) FOUND([<工作区号> | <"表 别名">])

VFP命令、函数及程序语句大全

VFP命令、函数及程序语句大全

VFP命令、函数及程序语句大全VFP命令、函数及程序语句大全2008-10-24 16:31:09| 分类: VFP资料 | 标签: |字号大中小订阅VFP命令是一种实现对数据库系统进行操作的动词或短语。

VFP 命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。

¨ VFP常用命令分类表¨命令格式VFP命令一般由命令动词和控制短语构成。

一般格式:命令动词[FROM<源文件>][TO<目标文件>][记录范围][FOR/WHILE<条件>][FIELDS<字段名表>][ ]表示可选,<>表示必选, / 表示或选例如:(1)APPEND FROM C:\RSDA.DBF FOR 基本工资>100 FIELDS 编号,姓名,职称,基本工资。

从C:\RSDA.DBF 表中把基本工资大于100元的记录添加到当前表添加字段为:编号,姓名,职称,基本工资。

(2)COUNT FOR 职称="高工"TO GG 统计高工的记录数到内存变量GG。

控制短语规定了对数据库操作的限制条件:1.指向输入输出目标FROM/TOAPPEND FROM,COPY FILE TO <目标文件>2.限制记录范围(SCOPE)ALL 所有记录NEXT<n> 本记录后的第几个记录RECORD<1> 第1个记录REST 当前记录之后所有记录3.选择字段FIELDS<字段表>选择输入/输出的字段。

4.限制条件FOR/WHILE<条件>FOR 基本工资>100 .AND.基本工资<200¨命令格式规则命令的行为单位,一行书写不完,在未尾加上“;”第二行接着写。

必须以命令动词开头,动词后的短语顺序不限。

VFP-程序设计-子程序过程函数

VFP-程序设计-子程序过程函数

21
例:编写自定义函数 sum(n)=1+2+3+…+n 方法二 编写自定义函数
set proc to general s=0 do sum with 100 ?s ?sum(100) x=sum(100) ?x Function sum PARA N S=0 I=1 DO WHILE I<=N S=S+I I=I+1 ENDDO RETU S Endfunc
5
子程序、 子程序、过程和自定义函数
调用、 二)调用、返回 调用 1.调用子程序 调用子程序 DO <子程序文件名 [WITH 参数表 子程序文件名> 参数表] 子程序文件名 例如: 例如:DO SUM WITH 100,200 DO TJ 2. 返回 RETURN [TO MASTER] 从子程序返回上一级子程序. 从子程序返回上一级子程序 TO MASTER选项 则返回主控程序. 选项,则返回主控程序 选项 则返回主控程序
VFP程序设计VFP程序设计-子程序过程函数
主讲:杜春敏
[问题 问题] 问题
如果程序中需要多次使用相同或相似的代码段, 如果程序中需要多次使用相同或相似的代码段,有没有更好 的方法来解决? 的方法来解决?
S=0 I=1 一个循环,两次调用 Do while I<=100 s= s+I I=I+1 Enddo I=1 Do while I<=200 s= s+I 并列的两个循环 I=I+1 Enddo Do sum with 100 Do sum with 200 S=0 I=1
4
子程序、 子程序、过程和自定义函数
一、子程序 子程序是一个相对独立的程序段。 子程序是一个相对独立的程序段。子程序总 是被其他程序调用,一般不单独执行。 是被其他程序调用,一般不单独执行。

VF-第五章 程序设计

VF-第五章 程序设计
17
3 保存内存变量
命令格式
SAVE TO <内存变量文件名>/ <MEMO 备注字段名>[ALL LIKE/ EXCEPT <内存 变量名框架>]
功能:它将内存中的部分或全部内存变量以文件的形式存入磁
盘,文件名由<内存变量文件名>指定,文件扩展名的缺省值 为 .MEM。 参数描述:SAVE:命令动词,表示保存内存变量。 <内存变量文件名>:指定保存内存变量和数组的内存变量文件。 <MEMO备注字段名>:指定保存内存变量和数组的备注字段。 ALL LIKE<内存变量名框架>]:将符合<内存变量名框架>的那 些变量存入指定的文件。 ALL EXCEPT <内存变量名框架>]:将不符合<内存变量名框架 >的那些变量存入指定的文件。
23
5.3.2 VFP的交互式输入输出命令
程序的正确运行,必然需要操作人员与系统进行信息交流, 这里主要是与内存变量之间的数据交流。 1、交互式输入命令 (1)字符接收语句 格式:ACCEPT [<提示信息>] TO <内存变量名> 功能:将从键盘上接收的字符串数据存入指定的内存变量中。 参数描述: [<提示信息>]:指定提示信息字符串。 [<内存变量名>]:指定存储字符数据的内存变量或数组元素。如 果没有定义此内存变量,ACCEPT将自动创建。如果没有输入数据 就按Enter键,内存变量或数组元素则为空字符串。
在程序编辑窗口 中输入程序代码
用Ctrl+W存盘退 出编辑窗口,或单 击程序编辑窗口上 的【关闭】按钮, 在弹出的对话窗口 中确定存盘,生成 L501.prg文件。

vfp中的过程与作用域

vfp中的过程与作用域
7-5 过程与变量的作用域

一、子程序与主程序的概念
1、结构化程序设计方法:核心思想是程序的模块化,它可把一个大的复杂的应 用程序按功能分解成若干个相对独立的模块,这些模块就叫做子程序(过程)。
使用时可以用一个主程序调用这些过程。
2、模块化程序设计优点: 1)方便开发、调试和调用。 2)子模块本身可以反复被调用,可避免重复输入。 3、主程序 — 程序执行过程中,调用其他程序的称为主程序。
例1:编写一个求1到N的累加和的过程,并在过程中输出和。 clear input "Please input n :" to x do leijia with x Return procedure leijia parameters n sum=0 for i=1 to n sum=sum+i endfor ?sum return
①调用程序:
格式1:do <文件名> with 实参1,实参2……
实参为常量、表达式,把值给形参(按值传递) 实参为变量,把地址给形参,这时形参、实参为同一个变量(按引用(址)传递)
格式2:<文件名>(实参1,实参2……) 默认按值传递,可以通过命令 set udfparms to value | reference 重设参数的传递方式
RETURN
Procedure P2.prg
R=5 S=R*R ? “S=”,S
RETURN
Procedure P3.prg
R=5 V= R*R*R ? “V=”, V
RETURN
例题1 : *把上例的两个过程放在过程文件中。MODIFY COMMAND GCWJ1 procedure GC1 ?"这是过程1" Return procedure GC2 ?"这是过程2" Return *调用上面定义的过程文件中的两个过程。 SET TALK OFF ?"这是主程序" set procedure to gcwj1 DO GC1 DO GC2 close procedure SET TALK ON RETURN
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

私有变量
在程序中直接使用(没有预先声明),而 由系统自动隐含建立的变量都是私有变 量。 私有变量的作用域是建立它的模块及其 下属的各层模块。
*主程序 main.prg r=100 DO sub ?p RETURN *子程序sub.prg p=2*3.14*r RETURN
*主程序 main.prg r=100 DO sub ?p RETURN *子程序sub.prg PUBLIC p p=2*3.14*r RETURN
子程序: z2.prg x3=x3+1 return to master
例建立函数,计算N!
function jc &&自定义jc函数 parameters jcn &&将n的值传给参数jcn f=1 &&阶乘初值 for k=1 to jcn f=f*k &&计算阶乘,结果存入f endfor return f &&将f的值返回调用函数
DO <子程序名> [WITH <实参表>] DO <子程序名> <子程序名> (实参表) <子程序名> ( ) 说明: 1、执行子程序,子程序结束后返回到上级调用该子程 序命令的下一条命令处。子程序可嵌套调用。 2、实参表:指定传递到子程序的参数,实参可以是表达 式、内存变量、常量、字段名或用户定义函数等。各 参数之间用逗号分隔。传递给一个子程序的参数最多 为24个。实参与形参的个数、类型、顺序要匹配。
一、子程序定义形式:
[PROCEDURE|FUNCTION<子程序名>] [PARAMETERS <形参>] <命令序列> [RETURN[<表达式>]] [ENDPROC|ENDFUNC]
说明: 2、ENDPROC或ENDFUNC 表示一个子程序的结束。 如果缺省,子程序自动结束于文件结尾或下一条 PROCEDURE 或 FUNCTION命令。 3、如果调用子程序时需引用参数,则在子程序的第一 行使用PARAMETERS <形参>命令,否则可省略。
628.00
•隐藏变量
当子程序中定义的变量名与主程序中同名时, 为避免子程序中的变量值改变主程序中的变量 值,可在子程序中使用PRIVATE命令隐藏主程 序中可能存在的变量,使这些变量在子程序中 暂时无效。
PRIVATE<内存变量表>
该命令并不建立内存变量,它只是隐藏指定的 在上层模块中可能已经存在的内存变量,但是 当模块程序返回到上层模块时,被隐藏的变量 就自动恢复有效性,保持原值。
7.5.2 内存变量的作用域
变量的作用域指的是变量在什么范 围内是有效或能够被访问的。 Visual FoxPro中,分为公共变 量、私有变量和局部变量3类。
公共变量
在任何程序模块中都可使用的变量称为公共 变量。公共变量必须先定义后使用。 PUBLIC <内存变量名表> 该命令是建立公共的内存变量,并赋以初值 逻辑假.F.。建立好的公共变量一直有效, 即使程序结束返回命令窗口也不会消失,只 有执行CLEAR MEMORY,RELEASE或 QUIT等命令后,才能被释放。
modify command main
*main.prg set talk off input "输入x:" to x input "输入y:" to y z=fun1(x,y) ?x,y,z set talk on return function fun1 parameters a,b c=a*a-b*b return c endfunc
局部变量
局部变量只能在建立它的模块中使用, 不能在上层或下层模块中使用。程序结 束时,自动释放局部变量。
LOCAL<内存变量表>
该变量同样给建立的内存变量赋以初值 逻辑假.F.,也必须先定义后使用。
7.5.3 调用子程序时的数据传递
1.利用变量的作用域实现数据传递
例 计算矩形面积的程序。 * main.prg主程序 gao=8 kuan=6 c=0 DO sub ?c CANCEL * sub.prg子程序 c=gao*kuan RETURN
一、子程序定义形式:
[PROCEDURE|FUNCTION<子程序名>] [PARAMETERS <形参>] <命令序列> [RETURN[<表达式>]] [ENDPROC|ENDFUNC]
说明: 4、子程序执行到RETURN命令,控制权转回到上级调 用程序。需要返回一个值,则选用RETURN <表达式> 命令;使用 RETURN TO MASTER 转回到最上级主 程序;缺省RETURN命令,子程序结束处自动执行一 条隐含的RETURN命令;若RETURN命令不带表达式, 则返回逻辑真.T. 。
形参为子程序中的局部
变量,这些局部变量可以 接收上级程序中实参传 递来的参数,也可以回送 子程序运行的结果。 实参可以是常量、变量或 一般表达式,调用模块程 序时,形参的数目不能少 于实参的数目,当形参数 目多于实参数目时,多余 的形参取初值逻辑假.F.。
值传递和地址传递 (实参与形参之间的数据传递) 值传递方式:则子程序中参数变化后的值不 回传给上级调用程序。 地址传递方式:则子程序中参数变化后的值 要回传给上级调用程序 如果不允许子程序改变传递参数变量的值, 应该使用值传递方式。如果允许子程序改变 传递参数变量的值,则要使用地址传递方式。
modify command main
*main.prg set talk off input "输入x:" to x input "输入y:" to y z=fun2(x,y) ?x,y,z set talk on return
modify command fun2
*fun2.prg parameters a,b c=a*a-b*b return c
modify command main
*main.prg set talk off input “输入圆半径" to r do area with r return
modify command area
*area.prg para cr s=pi()*cr*cr ?cr,s return
二、子程序的调用
值传递和地址传递
(实参与形参之间的数据传递)
常量和表达式只能使用值传递方式
内存变量既可以使用值传递方式,又可以使 用地址传递方式。使用值传递方式的变量要 用括号括起来,使用地址传递方式的变量不 加括号。
采用 子程序名(实参) 方式调用时,默 认按值传递方式传递参数。

写出下列程序的输出
set talk off x=1 y=3 do sub with x,(y),5 ? x,y return procedure sub parameter a,b,c a=a+b+c b=a+b-c return
一、子程序定义形式:
[PROCEDURE|FUNCTION<子程序名>] [PARAMETERS <形参>] <命令序列> [RETURN[<表达式>]] [ENDPROC|ENDFUNC]
说明: 1、 PROCEDURE或FUNCTION 命令表示一个子程 序的开始,并命名子程序名。通常称PROCEDURE为 过程,FUNCTION为自定义函数。 如果缺省该命令表明子程序是一个独立的程序文件;若 写上该命令,表明子程序通常要放在某程序文件代码后 面。独立的子程序文件同样用MODIFY COMMAND命 令来建立、修改和保存,扩展名默认为 .PRG。
子程序: z1.prg x2=x2+1 do z2 x1=x1+1 return
子程序: z2.prg x3=x3+1 return
主程序: z.prg
set talk off store 2 to x1,x2,x3 x1=x1+1 do z1 ?x1+x2+x3 return 9
子程序: z1.prg x2=x2+1 do z2 x1=x1+1 return
SET TALK OFF area=0 CLEAR INPUT "请输入第一边大小:" TO x INPUT "请输入第二边大小:" TO y INPUT "请输入第三边大小:" TO z DO sub WITH x,y,z ? "Area="+STR(area,6,2) RETURN PROCEDURE sub PARAMETER a,b,c p=(a+b+c)/2 area=SQRT(p*(p-a)*(p-b)*(p-c)) RETURN
*exa.prg r=100 p=10 do sub ?p return procedure sub p=2*3.14*r return
628.00
*exb.prg r=100 p=10 do sub ?p return
10
procedure sub private p p=2*3.14*r return
主程序
… DO A …子程Fra bibliotekA… DO B …
子程序B

RETURN
RETURN
主程序
… DO A …
子程序A
… DO B …
子程序B

RETURN
RETURN TO MASTER
主程序
… DO A …
子程序A
… DO B …
子程序B

RETURN … …
RETURN
相关文档
最新文档