| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 157 人关注过本帖
标题:再次求助:如何根据“开支明细”动态生成“开支统计表.dbf”
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10808
专家分:43403
注 册:2014-5-20
收藏
得分:0 
以下是引用王咸美在2025-10-30 07:24:19的发言:

谢谢!我想用上表文件“开支明细表.dbf",动态生成如附件所示的“开支统计表.dbf",不知如何操作,请指点!

每条记录的各项费用项目名称和金额都能得到了,还有什么问题?
重温一下之前的贴不就是同一个问题吗?
总结一下之前类同的贴就OK

6 小时前
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2328
专家分:4195
注 册:2007-4-27
收藏
得分:0 
以下是引用王咸美在2025-10-29 12:38:53的发言:

现有“开支明细表.dbf",我想根据其中的“支出明细”动态生成“开支统计表.dbf",开支统计表中的字段名由“开支明细表.dbf的“开支明细”动态生成,请各位高手不吝赐教,万分感谢!(纯属个人爱好,不喜勿喷,全当路过)


“开支统计表.dbf"样式如下:


从你再次发贴看,你是没看懂为你特开(想着你我是同行,且我退休6年了,地域又远,代码都给你了(作了详细的注释),感觉你的问题是根基不牢)的一贴!

第一步,从“开支明细表”到 kzmx ,中间的ls 就是你现在的无“,,”号的表,是凭“元”字作的区分标志。后面的代码中,均完成了你再次提问的内容,仔细地学研就会得到你想要的。

只求每天有一丁点儿的进步就可以了
6 小时前
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:303
专家分:2269
注 册:2023-6-29
收藏
得分:0 
数据处理科学过程: 1.数据采集-->2.清洗--->3.转换-->4.分析;    第一步数据采集有了, 就是你采集到的支出明细, 第二步就是上面讨论了的支出明细要用分隔符分开,如果有其他不标准化的数据还需要标准化,有元没元都需要处理,品名中有元或数字的也需要处理, 第三步就是转成便于分析的数据,要能识别品名和价格,第四步就是你的第二个表,就是分析的结果.  每一步都要将结果数据存储起来, 如果有问题便于分析问题出现在那一步
4 小时前
王咸美
Rank: 1
等 级:新手上路
帖 子:836
专家分:3
注 册:2018-1-4
收藏
得分:0 
下列程序不知问题出自哪里,现贴上代码,请高手赐教,谢谢!!!
开支明细表2.rar (534 Bytes)

图片附件: 游客没有浏览图片的权限,请 登录注册

待修改代码如下:
CLOSE DATABASES
CLEAR ALL
PUBLIC  cPath
cPath=ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cPath)

DECLARE long sscanf IN msvcrt long,string,single@,long@
DECLARE long strcpy IN msvcrt string@,string
DECLARE long strcpy IN msvcrt as strcpy_ptr long,string

cBuffer = REPLICATE(0h00,256)
pBuffer = strcpy(@cBuffer, "")


LOCAL a as Single, n as Long, p as Long, ph as Long
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,"")
      p=strcpy_ptr(@pBuffer,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)
           p  = p+n
           ph = p
           
        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 开支统计表


2 小时前
快速回复:再次求助:如何根据“开支明细”动态生成“开支统计表.dbf”
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020053 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved