VF知识点

  • 格式:docx
  • 大小:34.13 KB
  • 文档页数:14

*****"课程浏览"菜单命令的过程代码*****

MAINFORM.GRID1.RECORDSOURCE="课程"

*****"选课统计浏览"菜单命令的过程代码*****

MAINFORM.GRID1.RECORDSOURCE="XKVIEW"

步骤3:通过"菜单级"下拉框返回主菜单项设计界面,以同样的方法,设计"打印"菜单项的下级子菜单"报表预览",注意选择"报表预览"的"结果"项为"命令",然后在后面的文本框中输入命令代码:

REPORT FORM XKREPO PREVIEW

步骤4:再次返回主菜单项设计界面,选择"退出"菜单命令的"结果"项为"命令",并输入命令语句:

MAINFORM.RELEASE

表单中

DO MAINMENU.MPR WITH THIS,"TTT"

6THISFORM.GRID1.RECORDSOURCE=";

SELECT * FROM X_T;

WHERE 年度=ALLTRIM(THISFORM.SPINNER1.TEXT);

&&

年度等于微调器中显示的数值

INTO CURSOR TEMP"

12SET TALK OFF

USE 学生 && 打开"学生"表

LOCATE FOR 政治面目="团员" && 查找当前记录的"政治面目"为"团员"

DO WHILE FOUND() && 循环条件为找到政治面目为"团员"的记录时进入循环

IF 性别="女" && 如果性别为"女",继续执行下面的语句,如果不是,则执行ENDIF语句之后的语句

CONTINUE && 移到下一条记录,并返回到循环体起始位置重新判断该记录政治面目是否为"团员"

LOOP && 返回到循环体起始位置,即DO WHILE处重新判断,不再执行后面的语句

ENDIF && 当IF处条件不成立时,直接执行该语句后面的命令

? 姓名,班级 && 当前面的IF条件语句不成立时,执行该语句,显示当前记录的"姓名"和"班级"内容

CONTINUE && 移到下一条记录,并返回到循环体起始位置重新判断该记录政治面目是否为"团员"

ENDDO && 当DO WHILE处条件不成立时,直接退出循环体,执行该语句后面的命令

USE && 关闭当前打开的表

SET TALK ON

UPDATE 学生 SET 年龄=YEAR(DATE())-YEAR(出生日期)

SELECT 学生.政治面目, COUNT(学生.学号) AS 人数,

AVG(学生.年龄) AS 平均年龄;

FROM 学生;

GROUP BY 学生.政治面目;

INTO TABLE temp2.dbf

SELECT COUNT(DISTINCT 订货单位) FROM

合同管理

INTO ARRAY ARR

UPDATE JG SET 统计数=ARR WHERE 分类名="订货单位总数"

SELECT COUNT(DISTINCT 供货单位) FROM 合同管理

INTO ARRAY ARR

UPDATE JG SET 统计数=ARR WHERE 分类名="供货单位总数"

SELECT SUM(订货数量) FROM 合同管理 INTO

ARRAY

ARR

UPDATE JG SET 统计数=ARR WHERE 分类名="订货总数"

13 SELECT 学生.学号, 学生.姓名, AVG(选课.成绩)

AS 平均分,; && AVG()函数用来求平均分

COUNT(选课.课程号) AS

选课门数; &&

COUNT()函数用来统计每个学生选修课程数

FROM 学生管理!学生 INNER JOIN 学生管理!选课 ;

ON 学生.学号 = 选课.学号;

GROUP BY 选课.学号; && 按选课表的学号字段对记录进行分组

HAVING COUNT(选课.课程号) >= 4; && 进一步限定分组后的条件,只求选课数在4门以上的学生成绩

ORDER BY 3 DESC; && 按输出结果的第3列字段(即"平均分"字段)值降序排序

INTO TABLE STUCJ.DBF

DO CASE

CASE THIS.VALUE=1

THISFORM.PAGEFRAME1.ACTIVEPAGE=1

&& 指定页框当前活动页为第一页

CASE THIS.VALUE=2

THISFORM.PAGEFRAME1.ACTIVEPAGE=2

&& 指定页框当前活动页为第二页

CASE THIS.VALUE=3

THISFORM.PAGEFRAME1.ACTIVEPAGE=3

&& 指定页框当前活动页为第三页

ENDCASE

THISFORM.REFRESH

14 SET TALK OFF

CLEAR

LOCAL c && 定义局部变量c INPUT "请输入圆柱体的半径:" TO r && 从键盘输入一个半径值

INPUT "请输入圆柱体的高:" TO h && 从键盘输入一个半径值

c=carea(r,h) && 调用模块程序,转到FUNCTION命令行执行程序,按值方式传递参数

?"圆柱体的表面积为:",c

RETURN

FUNCTION

carea && 过程的开始,并命名过程名为carea

PARAMETERS a,b && 声明的形参变量被看作是模块程序中的私有变量

LOCAL p && 定义局部变量c

p=3.14159 && 定义私有变量

car=2*(p*a^2)+2*p*a*b && 计算圆柱体表面积的表达式

RETURN car

N=THISFORM.OPTIONGROUP1.VALUE

DO CASE

CASE N=1

THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE+THISFORM.TEXT2.VALUE

CASE N=2

THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE-THISFORM.TEXT2.VALUE

CASE N=3

THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE*THISFORM.TEXT2.VALUE

CASE N=4

THISFORM.TEXT3.VALUE=THISFORM.TEXT1.VALUE/THISFORM.TEXT2.VALUE

ENDCASE

16 CLOSE ALL

USE 工资_c

DO WHILE !EOF()

UPDATE 工资 SET 基本工资=工资_c.基本工资;

WHERE 雇员号=工资_c.雇员号

SKIP

ENDDO

SELECT * FROM 工资 INTO TABLE NEW_OD

19 *****"统计"子菜单的过程代码*****

SELECT XS.民族,AVG(CJ.语文) AS 语文平均分,AVG(CJ.数学) AS

数学平均分 FROM XS;

INNER JOIN CJ ON XS.学号 = CJ.学号;

WHERE XS.民族="汉" INTO ARRAY ARR

INSERT INTO NEWCJ FROM ARRAY ARR

SELECT XS.民族,AVG(CJ.语文) AS 语文平均分,AVG(CJ.数学) AS

数学平均分 FROM XS;

INNER JOIN CJ ON XS.学号 = CJ.学号;

WHERE XS.民族!="汉" INTO ARRAY ARR

INSERT INTO NEWCJ FROM ARRAY ARR

UPDATE NEWCJ SET 民族='其他' WHERE 民族!="汉"

20在考生文件夹中有"客户订货"数据库,内有"订货"表和"货物"表。"订货"表中的"单价"与"数量"之积应等于"货物"表中的"总金额"。

现在有部分"货物"表记录的"总金额"字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为"修正"的表中(与订货表结构相同,自己建立),根据"订货"表的"单价"和"数量"字段修改"修正"表的"总金额"字段(注意一个修正记录可能对应几条货物记录)。最后"修正"表的结果要求按"总金额"降序排序。

编写的程序最后保存为prog2.prg。

SELECT 订单号,SUM(单价*数量) AS 总金额;

FROM 订货;

GROUP BY 订单号;

INTO CURSOR arrtable

SELECT 货物.*;

FROM 货物,arrtable;

WHERE 货物.订单号=arrtable.订单号 AND 货物.总金额<>arrtable.总金额;

INTO TABLE

修正

USE 修正

DO WHILE NOT EOF()

SELECT arrtable.总金额 FROM arrtable;

WHERE arrtable.订单号=修正.订单号;

INTO ARRAY arr

REPLACE 总金额 WITH arr

SKIP

ENDDO

CLOSE ALL

SELECT * FROM 修正 ORDER BY 总金额 DESC;

INTO CURSOR arrtable1

23对考生文件夹中的"工资管理"数据库完成如下综合应用:设计一个文件名和表单名均为gyform的表单。表单的标题设为"雇员工资发放统计";表单中有一个组合框、两个文本框和一个命令按钮"退出"。