回复 4楼 王咸美
每个费用项目有个","分隔算是结构化了。
DECLARE long sscanf IN msvcr71 long, string, single@, long@ DECLARE long strcpy IN msvcr71 string@, string buffer = REPLICATE(0h00,256) a = 0.00 n = 0 CREATE CURSOR tt (姓名 c(10), 项目 v(10), 金额 n(6,2)) USE c:\_temp\开支明细帐.dbf ALIAS tb IN 0 SELECT tb SCAN FOR i=1 TO ALINES(arr,tb.支出明细,5,",") p = strcpy(@buffer, arr[i]) ph = p DO WHILE SYS(2600,p,1) != 0h00 IF sscanf(p,"%f%n",@a,@n) == 1 INSERT INTO tt VALUES (tb.姓名, SYS(2600,ph,p-ph), a) EXIT ELSE p = p+1 ENDIF ENDDO ENDFOR ENDSCAN cmd = "CREATE TABLE 开支统计表 (姓名 c(10)" SELECT DISTINCT 项目 FROM tt INTO CURSOR tmp SCAN cmd = cmd + "," + 项目 + " n(6,2)" ENDSCAN cmd = cmd + ", 合计 n(6,2))" EXECSCRIPT(cmd) SELECT DISTINCT 姓名 FROM tt INTO CURSOR tmp SELECT 开支统计表 APPEND FROM DBF("tmp") INDEX on 姓名 TAG 姓名 SELECT tt SET RELATION TO 姓名 INTO "开支统计表" SCAN REPLACE (tt.项目) WITH tt.金额, 合计 WITH 合计 + tt.金额 IN "开支统计表" ENDSCAN SELECT * FROM 开支统计表