谢谢指点!我已在程序中加入下列语句,仍不能生成“开支统计表.dbf"
PUBLIC cPath
cPath=ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cPath)
PUBLIC cPath
cPath=ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cPath)
[此贴子已经被作者于2025-10-22 09:55编辑过]
程序代码:
CLOSE DATABASES
CLEAR ALL
PUBLIC cPath
cPath=ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cPath)
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 开支明细帐.dbf ALIAS tb IN 0
SELECT tb
SCAN
*FOR i=1 TO ALINES(arr,tb.支出明细,5,",")
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 开支统计表