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的表单。表单的标题设为"雇员工资发放统计";表单中有一个组合框、两个文本框和一个命令按钮"退出"。