吹版程序运行没问题,猜测是你个人路径的问题:你用桌面的“Visual FoxPro 9.0”的快捷方式打开prg文件,他的实际路径"C:\Program Files (x86)\VFP9",而你的原文件的实际路径是在“E:\temp9\开支明细帐.dbf”,可以在原始文件夹中先打开数据表,再从这里面运行prg程序,在吹版程序开头上一句CLOSE DATABASES,再修改一下路径即可。注意你安装程序和原始文件的路径,否则很容易将结果生成在安装程序所在目录。程序和运行截图如下
图片附件: 游客没有浏览图片的权限,请
登录 或
注册

程序代码:
CLOSE DATABASES
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
USE 开支明细帐.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 开支统计表