多表操作程序设计题 操作步骤如下:
]( z5 H1 H' r% r/ P, M (1) 新建表单
+ u' G0 I, B" ^* ?" u (2) 按题目要求在表单中加入控件:
( h) c6 s) }2 T9 f) r 命令按纽Command1、Command2;: H4 q" X9 N' c- n( L1 \; l4 H: _
标签 Label1、Label2、Label3;5 z% E$ u7 }- x. Y: m
组合框 Combo1;
6 S( F: C( j% j* l3 L6 H 文本框 Text1、Text2、Text3;; u R- \1 V0 ?/ O- A% b3 I0 L: f
容器 Container1, 并在容器 Container1 中加入文本框 Text1、Text2、Text3、Text4、Text5、Text6、Text7、 Text8、Text9、Text10。) f' o6 m3 W! ~. L( {% J% G+ |) T ~
(3) 数据环境设置:
; t# k& y% b f 将表文件“学生”、“课程”、“成绩”添加到数据环境中。
: b, \) c' r- o6 |9 h% r (4) 主要属性设置:( |( u3 ^+ H3 V
表单 Form1 的Caption 属性设置为 “学生成绩查询表单”
% o$ w" l+ I8 r7 A( n9 ?5 t5 T 命令按纽Command1的Caption 属性设置为 “确定”
6 r* O% L! b" f$ L# E9 w, m 命令按纽Command2的Caption 属性设置为 “退出”6 D5 ~ N X& R2 c" a' k
标签Label1的Caption 属性设置为 “选择姓名”
2 m( }9 m; X5 I0 s) r1 ?2 e 标签Label2的Caption 属性设置为 “学号”
$ b# W+ I2 Z- a 标签Label3的Caption 属性设置为 “姓名”7 |2 |. H' w' F$ R9 ^2 j# ]4 d- @3 d
组合框 Combo1的RowSourceType属性设置为 “6-字段”
: X: A% Y$ _% f) V, X 组合框 Combo1的RowSource属性设置为 “学生.姓名”. O7 H- `1 E2 |% f6 y
(5) 主要事件代码
) j; @" Q: J, f# b2 q6 M2 @ 1. FORM1 INIT 事件代码:
! s( _4 R4 C/ j$ o: p3 Q/ m2 R; p4 E THISFORM.SETALL("Readonly",.T.,"Textbox")2 g; B/ _' m& r9 C8 T* B
FOR N=1 TO THISFORM.CONTAINER1.CONTROLCOUNT
* j" B1 \* @9 v- m% O, a M8 [7 A1 U THISFORM.CONTAINER1.CONTROLS(N).VISIBLE=.F.8 b" [7 Q$ ]1 r$ P; ^/ o
ENDFOR2 j% H. v1 l/ J$ ~+ e, |1 @9 s
2. COMMAND1 CLICK 事件代码:
, x& [& u S6 K6 R4 m; H1 Y SELECT 学生: R# D# M" ^$ p% G* m
XH=学号
# v& u9 Q1 G3 D" N% Y4 |3 O# G$ N$ l XM=姓名
! Z( {+ }! R4 ]& y4 |( R THISFORM.TEXT1.VALUE=XH2 h- H# E4 @ m6 P5 @+ m" E3 J' C
THISFORM.TEXT2.VALUE=XM# a8 Y6 C" t# G0 V
FOR N=1 TO THISFORM.CONTAINER1.CONTROLCOUNT
& S7 H- h$ D: A+ \, ] THISFORM.CONTAINER1.CONTROLS(N).VALUE=""
- U, K( O" ]+ O, u7 \$ C THISFORM.CONTAINER1.CONTROLS(N).VISIBLE=.F.
# x- F/ t3 p" }% F2 i- e ENDFOR2 W _9 }* Z- ]
S=0
# p# m. D! ?/ }0 f+ w5 Q L=1
7 J# o: O2 J. T! S SELECT 成绩5 C: K6 u6 M: h+ n! g3 T& S8 _4 `
LOCATE FOR ALLTRIM(学号)=ALLTRIM(XH)
' f* g9 s' \+ {/ m DO WHILE ! EOF(), V- r6 e5 ~! [# x# F
SELECT 课程( o2 s2 ?& s: V; t; T) F8 C
LOCATE FOR ALLTRIM(课程号)=ALLTRIM(成绩.课程号)
# K7 d8 y( m9 o/ Q KCM=课程名, K6 {9 Q+ ^ H$ A! ^
SELECT 成绩
4 \" ^, c. {- y THISFORM.CONTAINER1.CONTROLS(L).VALUE=KCM+":"+STR(成绩,5,1)
7 Q$ |1 @* P1 X/ D THISFORM.CONTAINER1.CONTROLS(L).VISIBLE=.T.
3 ~! N }, \; R" ?* _4 _9 } S=S+成绩
! N" P/ z Y5 v4 a- q/ {/ _ L=L+14 r: }5 C% ?6 Z# }3 X
CONTINUE
) N4 u' m0 ^) O& d2 s+ N ENDDO+ Y% @/ V6 f7 `. U+ H! [$ J" r( U
IF L>1" f! s2 k5 T( w4 u2 `4 O% `" T0 H9 b- k
THISFORM.TEXT3.VALUE="该生的总平均成绩为:"+STR(S/(L-1),5,1)
0 r! n. L4 b* N: {, T4 Z ELSE) K, b' f8 \8 i/ C% {3 |( a9 m T
THISFORM.TEXT3.VALUE="该生没有选修课程!"9 V- _$ Y6 r- Y$ V, Y/ }
ENDIF
/ w/ }# l/ C' Z6 l* b SELECT 学生1 C6 L2 m$ E Q5 M
THISFORM.REFRESH
3 g+ u9 g- k* P" O 3. COMMAND2 CLICK 事件代码:
7 o& o1 s& U2 ]/ F' j: ~ THISFORM.RELEASE
6 s+ X/ {. l1 ?- o, q" ~ 操作步骤如下:
' Z* o7 R; g6 D" r, d, }, Z (1) 新建表单( Y" a- ]+ S0 P4 o- M& `3 }' l+ Z
(2) 数据环境设置:4 R" r" X1 Z( T$ C' ?/ m
将表文件“学生”、“课程”、“成绩”添加到数据环境中。3 i8 v% R5 r! ?; }3 X
(3) 按题目要求在表单中加入控件:/ ^' M: V/ S) C& ~5 d3 P8 s
命令按纽组Commandgroup1;! v1 M/ g1 V3 o5 L( \: n
从数据环境中将“学生”表的“姓名”字段、“课程”表的“课程名”字段、“成绩”表的“学号”字段、“成绩”表的“课程号”字段、“成绩”表的“成绩”字段分别拖入表单对应位置。$ \) K( K5 ]3 r
(4) 主要属性设置:8 A J, y( E( m* ]# q6 w. J
表单 Form1 的Caption 属性设置为 “学生成绩表编辑表单”9 T/ X9 r$ b& S# F' s
命令按纽组Commandgroup1的ButtonCount 属性设置为 “7”/ n6 u) O8 r' ]% _6 T. n
(5) 主要事件代码:
& w7 P6 z. O. {1 h/ D- n- {! ? 1. FORM1 INIT 事件代码:4 Y7 \' P+ O W; o! S8 b- g# Q! I! u( u* D
SET SAFETY OFF) c- j+ I7 H: ~
THISFORM.COMMANDGROUP1.COMMAND4.ENABLED=.F., b3 V: L" G) u% Y1 Z+ P/ v8 e
THISFORM.COMMANDGROUP1.COMMAND5.ENABLED=.F.
6 b& y p% J7 T+ ^# I' [" ]9 V6 s C="添加删除退出表头前翻表尾后翻"! W6 o, D( B, v5 J
FOR N=1 TO THISFORM.COMMANDGROUP1.BUTTONCOUNT
( h! P: V- O/ y1 D9 H7 ^ THISFORM.COMMANDGROUP1.BUTTONS(N).CAPTION=SUBSTR(C,4*(N-1)+1,4)
& r* {2 s3 n4 g3 I) E# P3 I ENDFOR
5 T6 w& O* c+ d" R! `* [6 Q) |# [ SELECT 学生
3 m" g% Q; ? E3 C0 C! P INDEX ON 学号 TO XHI; S M" ~% c: d# K5 @6 D
SELECT 课程; ^2 d7 `8 m% O/ p
INDEX ON 课程号 TO KCI2 q) \2 X# ]0 T8 m
SELECT 成绩' k$ S7 A0 C* |* i) Y4 N
SET RELATION TO 学号 INTO 学生, 课程号 INTO 课程" U: E( X0 y! S8 q# W
THISFORM.REFRESH; {; T. E2 B# b$ h7 F7 ]4 g' V) y6 K' M
2. COMMANDGROUP1 CLICK 事件代码:) j! |: }6 E6 r7 K+ E0 ~' G
SELECT 成绩
! n7 n ?5 S9 m" l4 e DO CASE
: Y) ?: b, L8 V/ x2 K2 D- k: s5 K CASE THIS.VALUE=1( z) S U7 V) D: {' b; M
APPEND BLANK% \+ x4 K1 Q8 ]6 |' ~
CASE THIS.VALUE=2
+ y# o9 @$ ^1 E; E6 { DELETE8 G- ~& P1 s! A3 f& o6 z
CASE THIS.VALUE=3
; }& a1 n5 |9 U W# h5 _& ~* r ? THISFORM.RELEASE6 U- U9 _9 O5 L2 A1 \
CASE THIS.VALUE=4
3 a2 W: ^% \6 X1 J% y) H; I! X GO TOP
$ G) [ W2 r6 X5 R0 n* x" F& } THIS.COMMAND4.ENABLED=.F.
9 v; Z/ m: B# s; \+ I5 y THIS.COMMAND5.ENABLED=.F.
8 N2 D- a3 X, I% I THIS.COMMAND6.ENABLED=.T.& x$ D; K- s4 B* h, s
THIS.COMMAND7.ENABLED=.T.
7 o4 w: _9 a7 ?0 j' n" k% g CASE THIS.VALUE=5
8 k5 u1 ^4 z) A h$ p- I SKIP -1. s4 \' m# F9 ?. F# n* A: N: U9 D
IF BOF()
, h$ l. G# G; P- \7 J4 \ THIS.COMMAND4.ENABLED=.F.. X$ w4 b' a2 b8 P- Z
THIS.COMMAND5.ENABLED=.F.% M7 x) i. Z; G1 a) R. i- k: g2 V% u
ENDIF1 L0 E5 A; v- ~5 E0 t+ u
THIS.COMMAND6.ENABLED=.T.9 U! Y5 n/ d6 l; Q
THIS.COMMAND7.ENABLED=.T.) z) f V6 n; S& v T
CASE THIS.VALUE=6
# A( \& Y3 v/ G5 ~+ I5 L% P/ v0 m GO BOTTOM7 a' n! L6 a, ~1 V
THIS.COMMAND4.ENABLED=.T.
6 @$ q! H' Z: l+ _ THIS.COMMAND5.ENABLED=.T.
; l8 t. ?& p1 A% `0 S THIS.COMMAND6.ENABLED=.F.. b4 e& @6 J1 X$ {) t1 b
THIS.COMMAND7.ENABLED=.F.
/ z* a3 [1 F' I: e4 Q9 q1 x CASE THIS.VALUE=7
# |$ E+ H6 L" m# l/ `- h- f SKIP0 M" S0 x" R7 G+ \) N; q
IF EOF()
& G; d. ~' [1 G8 |3 u$ l! `0 G! l THIS.COMMAND6.ENABLED=.F.$ |) L; m P9 m* D( R1 q8 m G
THIS.COMMAND7.ENABLED=.F.
7 K; l& N5 K) x% d( J, n ENDIF
8 V* d7 _4 S. ]! t: A. | THIS.COMMAND4.ENABLED=.T.* ?+ D+ s/ z4 |$ e+ m
THIS.COMMAND5.ENABLED=.T.
' p4 u( w3 |( w, K* `1 \, H ENDCASE. p! W9 p% @2 Y4 s
THISFORM.REFRESH |