暮光之城是美剧吗:VFP交叉表(行列转换_通用代码转换程序)
PARAMETERS CTABLE,NFS
CLEAR
CLOSE TABLES
SET SAFETY OFF
*!* SELECT DISTINCT * FROM B1 GROUP BY MC1 INTO CURSOR TEMP
*!* COUNT TO X0 &&统计一级名称字段的记录数
USE &CTABLE EXCLUSIVE
CNAME=FIELD(2)
SELECT DISTINCT * FROM &CTABLE GROUP BY &CNAME INTO CURSOR TEMP
COUNT TO X1 &&统计二级名称字段的记录数
NLEN=ALLTRIM(STR(FSIZE(FIELD(2))))
MM=""
IF X1>254
MESSAGEBOX("该表不能转换为其它表",48,"系统信息")
RETURN
ENDIF
DO CASE
CASE TYPE(FIELD(1))="D"
CTYPE="D"
CASE TYPE(FIELD(1))="C"
CTYPE="C"
ZDLEN=ALLTRIM(STR(FSIZE(FIELD(1))))
ENDCASE
* 创建字段名结构表
FOR I=1 TO RECCOUNT()
GO I
MM=MM+ALLTRIM(EVALUATE(FIELD(2)))+" N("+NLEN+")"+IIF(I
DO CASE
CASE NFS=0 OR NFS=2 && =0 行列无小(合)计,=2 列合计
MM="("+FIELD(1)+" "+CTYPE+IIF(CTYPE="C","("+ZDLEN+"),",",")+MM+")"
CASE NFS=1 OR NFS=3 && =1 行小计,=3 列合计、行小计
MM="("+FIELD(1)+" "+CTYPE+IIF(CTYPE="C","("+ZDLEN+"),",",")+MM+",小计 "+"N(10"+"))"
ENDCASE
CLOSE TABLES
SELECT 1
CREATE DBF LSB.LSB &MM &&生成临时表
SELECT 2
USE (CTABLE)
FOR I=1 TO RECCOUNT()
GO I
CZD1=EVALUATE(FIELD(1)) && 取值
CZD2=EVALUATE(FIELD(2))
NZD3=EVALUATE(FIELD(3))
SELECT A
IF I=1 OR CZD1!=MC1
APPEND BLANK
REPLACE (FIELD(1)) WITH CZD1
MC1=EVALUATE(FIELD(1))
ENDIF
FOR I1=1 TO FCOUNT()
REPLACE NEXT 1 (FIELD(I1)) WITH NZD3 FOR ALLTRIM(FIELD(I1))==ALLTRIM(CZD2) AND ALLTRIM(MC1)==ALLTRIM(CZD1)
ENDFOR
SELECT B
ENDFOR
SELECT A
DO CASE
CASE NFS=0
CASE NFS=1 && 行小计
FOR I=1 TO RECCOUNT()
GO I
NXJ=0
FOR I1=2 TO FCOUNT()-1
NXJ1=EVALUATE(FIELD(I1))
NXJ=NXJ+NXJ1
ENDFOR
REPLACE NEXT 1 小计 WITH NXJ
ENDFOR
CASE NFS=2 && 列合计
APPEND BLANK
REPLACE (FIELD(1)) WITH "合计"
FOR I=2 TO FCOUNT()
MYZD=FIELD(I)
SUM &MYZD TO NHJ
GO BOTTOM
REPLACE (FIELD(I)) WITH NHJ
ENDFOR
CASE NFS=3 && 列合计、行小计
FOR I=1 TO RECCOUNT()
GO I
NXJ=0
FOR I1=2 TO FCOUNT()-1
NXJ1=EVALUATE(FIELD(I1))
NXJ=NXJ+NXJ1
ENDFOR
REPLACE NEXT 1 小计 WITH NXJ
ENDFOR
APPEND BLANK
REPLACE (FIELD(1)) WITH "合计"
FOR I=2 TO FCOUNT()
MYZD=FIELD(I)
SUM &MYZD TO NHJ
GO BOTTOM
REPLACE (FIELD(I)) WITH NHJ
ENDFOR
ENDCASE
BNAME="LSB.LSB"
RETURN (BNAME)