COPY TO GZLS2 NEXT 4
&&将GZ01中的5—9号记录复制到GZLS2库中
COPY TO GZLS3 &&将GZ01库复制到GZLS3库中 USE GZLS2 &&观察复制情况 LIST
USE GZLS3 &&观察复制情况 LIST USE
按条件复制
USE ZGDA01
COPY TO DA1 FOR XB=’女’ &&将ZGDA01中的所有女性记录复制到DA1库中 COPY TO DA2 FOR XB=’男’ .AND. KS=’学生科’ &&将ZGDA01中学生科的所有男性记录复制到DA2库中
COPY TO DA3 FIEL KS,XM,JBGZ FOR KS=’实验科’ &&将ZGDA01中实验科人员的KS,XM,JBGZ字段内容复制到DA3库中 USE DA1 && 观察复制情况
LIST
USE DA2 LIST USE DA3 LIST USE
1、 复制库结构 ① 全部复制 USE GZ01
COPY STRU TO GZLS &&将GZ01库结构复制到库GZLS中 USE GZLS LIST
LIST STRU &&观察有无数据:________ USE
RUN DEL GZLS.DBF ② 部分复制
USE GZ01
COPY STRU TO GZLS FIEL XM,JBGZ,SFS
&&将GZ01中的XM,JBGZ,SFS三个字段复制到GZLS库中 USE GZLS LIST STRU USE
! DEL GZLS.DBF 3.从其他库中追加数据
USE GZ01
COPY STRU TO GZ1 &&将GZ01库结构复制到GZ11中 COPY STRU TO GZ2 USE GZ1 LIST
USE GZ2 LIST
APPEN FROM GZ01 FOR KS= ’学生科’ &&将GZ01中满足条件的数据追加到GZ2中 LIST USE
DELE FILE GZ1.DBF DELE FILE GZ2.DBF
4.常用函数练习(仔细观察、记录运行结果) ① 数值型函数的练习
CLEAR &&清屏
? EXP(2) &&指数函数 ? INT(87.26) &&取整函数 ? INT(-87.56)
? ABS(-523) &&取绝对值函数 ? SQRT(16) &&平方根函数
? ROUND(3245.346,2) &&四舍五入函数 ? ROUND(3245.644,2) ? ROUND(3245.644,-2)
? MAX(432,198,234) &&取最大值函数
? MAX(?ABC?,?21?,?WS?) ? MAX(“ABC”,”21”,”WS”) ? MAX([ABC],[21],[WS])
? MOD(52,5) &&取余函数 ② 字符型函数的练习
?LEN(‘计算机等级考试’) &&字符串长度函数
?UPPE(“It is a computer”) &&转换为大写字母函数 ? SUBS(’99计算机等级考试上机辅导教材’,9,8) && 取子串函数 ?AT(‘中心’,“计算机中心”) && 子串位置函数 ?AT(“aa”,“aabbcc”) AA=’五笔字型’ BB=’输入法’ ?AA+BB
? AA+SPACE(2)+BB
③ 日期和时间函数的练习 ?DATE( ) &&系统当前日期 ? TIME( ) &&系统当前时间 ④ 转换函数的练习
?STR(12345.678 ,8 ,1) && 数值转字符 ? STR(12345.678 ,8 ,2) ? STR(435.76 , 4) ? STR(123.56)
? VAL(‘1234.5’) && 字符转数值 ? VAL(?abcd?) ? VAL(12ABCD?)
? CTOD(‘04/18/99’) && 字符转日期
? CTOD(?04/18/99?)+20 ? CTOD(?04/18/99?)-5
? DTOC(date()) && 日期转字符 ⑤宏替换函数“ & ” 的练习 A=12345 B=?A? ? &B ? B
STORE 10 TO B B=?18-8? ? A+&B S=?DIR? ? S &S
⑥复合函数 ? SQRT(VAL(“100”)) ? CTOD(“12/12/98”)+12 M=“今天的日期是:”+DTOC(DATE())
? M
N=“现在的月份是:”+ SUBS(DTOC(DATE()),1,2)+ “月”
? N
1、 多工作区及其使用方法 ①工作区命名及选择 ②数据库的关联 ③ 数据库的更新 ④ 数据库的连接 三、 注意事项
a) 不能删除已打开的数据库文件。 四、 思考题
a) 没有关闭的数据库能否被删除?
b) COPY STRU 在拷贝时,能否将记录一并拷贝? c) 字符串的定界符除了双引号外还有什么?
d) ROUND( )函数中取的位数为负数时表示什么?(例:ROUND(1234.567,-2)
实验十、VFP 6.0程序设计 一、 实验目的及要求
a) 熟悉VFP 6.0建立程序(命令)文件(扩展名: PRG)的方法,掌握程序的三种基本结构。 b) 学习简单的算法。
c) 记录操作程序与数据检索程序设计初步 二、 实验内容及步骤 a) 顺序程序设计:
求一元二次方程的实数解。
在命令窗口中输入命令:MODI COMM PRG01便进入程序文件编辑窗口,输入如下内容: ***PRG01******
SET TALK OFF &&关闭控制命令响应 信息的显示 CLEA
INPUT “A=” TO A &&给方程的二次项系数赋值 INPUT “B=” TO B &&给方程的一次项系数赋值 INPUT “C=” TO C &&给方程的常数项系数赋值 D=B*B—4*A*C E=SQRT(D)
X1=(— B + E)/(2*A) X2=(— B — E)/(2*A)
? “X1=”,X1 ? “X2=”,X2
SET TALK ON &&打开控制命令响应信息的显示
输入完毕检查无误后,按CTRL+W存盘,返回到命令窗口,输入: DO ROG01 运行该程序,计算机提示输入数据时,对A、B、C分别输入2、4、-6,计算机输出结果,用笔验算一下,看结果是否正确。
1、 思考:该程序存在什么问题?
再运行一次该程序,这次分别输入4、2、1,程序运行中止,出现错误信息。:
按回车键后进入PRG01.PRG的编辑窗,可对其进行修改,暂不修改,按ESC键退出,这说明程序不完善,问题出没有对判别式进行判断(负数不能开平方)。
b) 分支程序的设计:
判断并求一元二次方程的实数解
COPY FILE PRG01.PRG TO PRG02.PRG &&PRG01.PRG复制成PRG02.PRG MODI COMM PRG02 按下面内容编辑:
* ****PRG02.PRG******* SET TALK OFF CLEA
INPUT “A=” TO A INPUT “B=” TO B INPUT “C=” TO C D=B*B—4*A*C IF D<0
? “没有实根”
ELSE
D=SQRT(D)
X1=(—B + E)/(2*A) X2=(—B —E)/(2*A)
? “X1=”,X1 ? “X2=”,X2 ENDIF
SET TALK ON
运行该程序两次,分别在命令窗口中输入的两次命令: DO PRG02
第一次分别输入4、2、1 第二次分别输入2、4、—6 观察分析程序的运行结果。
c) 循环程序的设计
以上程序在每次运行中只能解一个方程,下面用DO WHILE / ENDDO循环来解多个方程。首先将PRG02.PRG复制成PRG03.PRG,然后按以下内容编辑修改PRG03.PRG: * ******PRG03.PRG************** SET TALK OFF DO WHILE .T. CLEA
INPUT “A=” TO A INPUT “B=” TO B INPUT “C=” TO C D=B*B—4*A*C IF D<0
? “没有实根”
ELSE
D=SQRT(D)
X1=(—B + D)/(2*A) X2=(—B —D)/(2*A)
? “X1=”,X1 ? “X2=”,X2 ENDIF ANS=”y”
@10,10 SAY“还继续求解吗?(Y/N):”GET ANS PICT “y” READ
IF UPPE(ANS)=”N” EXIT ENDIF ENDDO
SET TALK ON
运行该程序求三次解,在命令窗口中输入命令:DO PRG03 第一次分别输入4、2、1,得出结果后回答“Y”,