|
|
#18
王咸美2025-10-21 21:45
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 E:\temp9\开支明细帐.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 开支统计表
|