回复 12楼 TonyDeng
感觉我要达到你说的这水平,需要很长的时间,我现在连自定义函数和过程都不熟,毕竟没有系统的学过理论。
现在的短期目标只是把手上的学生信息管理系统做出来,争取开学就能用。现在是越做问题越多,关是如何建表和导入数据大概就花了近一个星期,改了好几次。
晚上用了三个多小时的时间,把前面说的数据格式重排程序整合成了一个程序,里面定义了三个过程,代码如下,请指教!
程序代码:
R=272
C=11
SELECT C06,C01,C03,C07,C04,C05,C02,C09,C08,C51,C52 FROM cjb20.dbf INTO ARRAY ARRA1
SELECT xh FROM cjb20.dbf INTO ARRAY ARRA2
DIMENSION ARRA3(C)
ARRA3(1)="C06"
ARRA3(2)="C01"
ARRA3(3)="C03"
ARRA3(4)="C07"
ARRA3(5)="C04"
ARRA3(6)="C05"
ARRA3(7)="C02"
ARRA3(8)="C09"
ARRA3(9)="C08"
ARRA3(10)="C51"
ARRA3(11)="C52"
DO Cj WITH R,C,ARRA1
DO XH WITH R,C,ARRA2
DO KC WITH R,C,ARRA3
PROCEDURE CJ
LPARAMETERS Row,Colu,Arra
LOCAL NewArra(Row*Colu)
i=1
j=1
FOR n=1 TO Row*Colu
IF i<=Row
IF j<=Colu
NewArra(n)=Arra(i,j)
ELSE
i=i+1
j=1
NewArra(n)=Arra(i,j)
ENDIF
j=j+1
ENDIF
ENDFOR
USE data\tables\cjk.dbf
SELECT cjk
FOR k=1 TO Row*Colu
GO BOTTOM
APPEND BLANK
REPLACE cj WITH NewArra(k)
IF EOF()
EXIT
ENDIF
SKIP
ENDFOR
RETURN
ENDPROC
PROCEDURE XH
LPARAMETERS Row,Colu,Arra
a=RECCOUNT()-Row*Colu
USE h:\vfp\data\tables\cjk.dbf
SELECT cjk
GO a+1
FOR k=1 TO Row
FOR n=1 TO Colu
REPLACE xh WITH Arra(k)
IF EOF()
EXIT
ENDIF
SKIP
ENDFOR
ENDFOR
RETURN
ENDPROC
PROCEDURE KC
LPARAMETERS Row,Colu,Arra
a=RECCOUNT()-Row*Colu
USE h:\vfp\data\tables\cjk.dbf
SELECT cjk
GO a+1
FOR k=1 TO Row
FOR n=1 TO Colu
REPLACE kch WITH Arra(n)
IF EOF()
EXIT
ENDIF
SKIP
ENDFOR
ENDFOR
RETURN
ENDPROC
需要接受的变量就是R、A和数组ARR,这三个需要根据不同的表手动去改,如果不是因为ARR需要用SELECT语句传递数据,应该就可以做成一个方法,然后在表单里面去引用,实现格式的自动转化。这个思路是否能实现? 如果能实现的话这是不是就是你说的“黑箱”,也就是类?
[
本帖最后由 lyxc34 于 2011-7-9 23:29 编辑 ]