insert into T2 values(?ZH971023?,?500130?,20) insert into T2 values(?ZH971023?,?300124?,15) insert into T2 values(?MY971115?,?200205?,200)
四、思考问题
1. VFP中LOCATE、SEEK和SELECT三个命令有什么关系?
seek和locate都是查询语句,与SQL中的SELECT类似,但它们是用来在表中定位记录,SQL中的SELECT用于实现关系的选择操作。
2. 数据库表和自由表有什么不同?
数据库表可以使用长表名,在表中可以使用长字段名; 可以为数据库表中的字段指定标题和添加注释; 可以为数据库表中的字段指定默认值和输入掩码; 数据库表中的字段有默认的控件类;
可以为数据库表规定字段级规则和记录级规则; 数据库表支持主关键字、参照完整性和表之间的联系;
数据库表支持INSERT、UPDATE和DELETE事件的触发器
3. 什么是参照完整性(RI)?
参照完整性 (RI) 这是指控制相关的表 (主/外键) 之间的数据完整性规则。除了使用引擎级别强制实施的主键中,可以创建存储的过程的更新、 删除,或插入行时执行某些操作。
26
实验四 程序设计初步
一、目的和要求
1. 掌握顺序结构、分支结构、循环结构。 2. 掌握子程序、过程、函数的区别和具体应用。
二、实验原理
VFP中包括三种基本控制结构:顺序结构、分支结构与循环结构。常见的分支和循环结构如下所示。
分支语句格式:
IF <逻辑表达式>
[ELSE
多分支语句格式:
<语句序列1> <语句序列2>] ENDIF
DO CASE
CASE <逻辑表达式1> <语句序列1> CSAE <逻辑表达式2> <语句序列2> ?
CASE <逻辑表达式n> <语句序列n> [OTHERWISE
<语句序列n+1>] ENDCASE
WHILE循环语句格式: DO WHILE <逻辑表达式> <语句序列>
ENDDO
FOR循环语句格式:
FOR <内存变量>=<数值表达式1> TO <数值表达式2> [STEP <数值表达式3>] <语句序列> ENDFOR
SCAN循环语句格式:
SCAN [<范围>] [FOR< 逻辑表达式1>] [WHILE< 逻辑表达式2>] <语句序列>
ENDSCAN
应用程序一般包含多个模块,模块是可以命名的一个程序段,可以指主程序、子程序和
27
自定义函数。各种调用形式如下所示。
类型 格式 调用命令 DO <程序名1> [WITH <参数表>] [IN <程序名2>] 自定义函数主要在表达式中调用 [ PARAMETERS <参数表>] <命令序列> 子程序 [RETURN] PROCEDURE <过程名> 过程 [PARAMETERS <参数表>] <命令序列> [RETURN] [FUNCTION <函数名>] 自定义函数 [PARAMETERS <参数表>] <语句序列> [RETURN <表达式>]
三、实验内容及步骤
1. 编一个程序,能根据记录号修改某设备的价格和部门。 命令:MODIFY COMMAND E4-1 程序: *e4-1.prg
clear use sb
@10,5say\修改设备价格\?
input\请输入记录号:\display 价格 record jlh
input\请输入第\个记录价格:\to jp
replace 价格 with jp display 价格 use
28
2. 编一个程序,能打开任意表浏览。 BROWSETABLE.PRG
@5,10 SAY”请输入表名:”GET BM DEFAULT SPACE(10) READ
BM=ALLTRIM(BM)
IF FILE(“&BM..DBF”) USE &BM BROWSE ELSE
WAIT”该文件不存在”WINDOW ENDIF
3. 编一个计算s=1+2+3+?+100的程序。
s=0
for i=1 to 100 s=s+i next ?\
29
4. 设计一个计算圆面积的子程序,并在主程序中带参数调用它。
*e4-13.prg
ymj=0
input\请输入半径:\do js with bj,ymj ?\return 子程序: *js.prg parameters r,s s=pi()*r*r return
5. 将上题改为过程调用。 *e4-5.prg
Set decimals to 2 Ymj=0
Input”请输入半径为:”to bj Do js with bj,ymj ?”ymj=”,ymj Return
Produce js Parameter r,s S=pi()*r*r return
6. 完成习题4练习6(使用SCAN命令)
30