| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1394 人关注过本帖, 1 人收藏
标题:问题没有解决,再请教......
取消只看楼主 加入收藏
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:11 
问题没有解决,再请教......
图片附件: 游客没有浏览图片的权限,请 登录注册

希望得到如图所示的格式报表,数据来源于2个表:
1、企业基本情况表qyjbxxb.dbf(包含企业代码,经济类型....等字段)
2、企业主要产品库qyzycpk.dbf(包含企业代码,产品名称,执行标准等级......等字段)
另外有个辅助表qyjjlxk.dbf(包含经济类型、类型名称两个字段)
怎样设计程序才能得到图示的报表?

之前S版给予了热情的解答,但俺还是没弄懂:其一,select查询语句中怎样得到“国标”、“行标”...等列统计数据以及“合计”栏统计数据?其二,用表格控件怎样得到“合计”行?
原帖地址:https://bbs.bccn.net/thread-398773-1-1.html

[ 本帖最后由 陶然愚者 于 2013-2-25 13:31 编辑 ]
搜索更多相关主题的帖子: 企业 设计程序 情况表 如图所示 
2013-02-25 13:11
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
数据表.zip (9.74 KB)
2013-02-27 10:29
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回复 3楼 hu9jj
那个界面的确是用90年代写的程序代码实现的。现在想用VFP9进行升级。除了输出界面之外,对数据表的统计操作应该还是相通的吧。不知这样想对不对
2013-02-27 10:35
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
现在遇到的最大问题是:本人设计的程序,得出的统计结果不对。正确的统计结果应该如下图:
图片附件: 游客没有浏览图片的权限,请 登录注册


说明:“经济类型”列数据来源于QYJBXXB.DBF,通过遍历该表的JJHY字段,列举字段值不同的记录值,记录数就是“企业数”的数据源;“产品数”统计数据来源于QYZYCPK.DBF,分别统计企业代码(JGDM)字段值等于QYJBXXB中各经济类型企业JGDM字段值的记录数;“国标”.....“协议”分别统计QYZYCPK表中BZDJ字段值为“1”......“5”的记录数。“标准覆盖率”=(“国标”+.....“协议”)÷“产品数”×100%。


[ 本帖最后由 陶然愚者 于 2013-2-27 11:35 编辑 ]
2013-02-27 10:47
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回复 7楼 sdta
哦,数据库文件忘了传
数据库文件.zip (7.92 KB)
2013-02-27 11:39
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回复 10楼 sdta
二楼回复内容:

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

以4、6、9楼回复,不对吗?是否对二楼的意思没领会清楚?
简单说,国标、行标、地标、企标、协议五列是分别统计QYZYCPK表中某经济类型企业产品记录的BZDJ字段值分别为1、2、3、4、5的记录数,标准覆盖率由以上数据相加除以产品数得来,然后再以百分比显示。

[ 本帖最后由 陶然愚者 于 2013-2-27 14:44 编辑 ]
2013-02-27 14:15
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
又及:原来的数据表因为考虑到统计方便,在QYZYCPK表中有JJLX、JJHY....等字段,统计操作时只要设置条件为
count for qyzycpk.jjlx=数组变量1 to 产品数&&统计某经济类型企业生产产品数
count for qyzycpk.jjlx=数组变量1.and.qyzycpk.bzdj=c标准等级字段值 to 国标&&统计某经济类型企业产品执行国家标准产品数
......
后来,考虑到qyzycpk表与qyjbxxb表中重复字段太多,所以这两个表只保留了一个公共字段JGDM以便建立关联。
这样一来,就必须需要首先在QYJBXXB表中,提取各经济类型企业记录的JGDM字段值,存贮于一个数组中,然后再从QYZYCPK表中找出对应于这些JGDM值的记录进行分类统计。正因为如此,所以对于我这个初学者而言,大大增加了统计程序设计的难度。
当然,关键还是自己对VFP系统知识掌握不够,这样涉及多表操作的统计,弄着弄着就糊涂了
其实,有一点我似乎隐约间有点感觉:数据统计结果的错误,肯定是循环条件设置不当引起的,但到底应该如何设置几处循环条件,其间逻辑关系总是理不出一个头绪。

[ 本帖最后由 陶然愚者 于 2013-2-27 14:48 编辑 ]
2013-02-27 14:34
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
程序代码行再次上传,请指教:
程序代码:
SET ESCAPE OFF
SELECT b
USE qyjjlxk
IF .not.file('jjlxsy.idx')
  INDEX on jjlx TO jjlxsy
ELSE
  SET INDEX TO jjlxsy
  REINDEX
ENDIF
SELECT c
USE qyzycpk
IF .not.file('cpsy.idx')
  INDEX on jgdm TO cpsy
ELSE
  SET INDEX TO cpsy
  REINDEX
ENDIF

SELECT a
USE qyjbxxb
IF .not.file('jjlssy.idx')
  INDEX on jjlx TO jjlssy
ELSE
  SET INDEX TO jjlssy
  REINDEX
ENDIF
SET RELATION TO jjlx INTO qyjjlxk
SET RELATION TO jgdm INTO qyzycpk additive
GO top
TOTAL TO lxk.dbf ON jjlx
USE lxk
SET RELATION TO jjlx INTO qyjjlxk additive
COUNT ALL TO lxsl
GO top
j=lxsl
DIMENSION lx(j),lm(j)
j=1
DO whil .not.eof()
  lx(j)=jjlx
  lm(j)=b->jjlxmc
  j=j+1
  SKIP
ENDDO
USE qyjbxxb
ERASE lxk.dbf
j=1
STORE 0 TO hj1,hj2,hj3,hj4,hj5,hj6,hj7,hj8
DO WHILE j<=lxsl
  COUNT ALL FOR jjlx=lx(j) TO aa
GO TOP
l=aa
DIMENSION dm(l)
l=1
DO whil l<=aa
dm(l)=ALLTRIM(jgdm)
l=l+1
SKIP
ENDDO
  SELECT c
  GO top
FOR l=1 TO aa
  COUNT for dm(l)=jgdm TO bb
  COUNT for dm(l)=jgdm.and.bzdj='1' TO cc
  COUNT for dm(l)=jgdm.and.bzdj='2' TO dd
  COUNT for dm(l)=jgdm.and.bzdj='3' TO ee
  COUNT for dm(l)=jgdm.and.bzdj='4' TO ff
  COUNT for dm(l)=jgdm.and.bzdj='5' TO gg
  hh=ROUND((cc+dd+ee+ff+gg)/bb*100,2)
ENDFOR
hj1=hj1+aa
hj2=hj2+bb
hj3=hj3+cc
hj4=hj4+dd
hj5=hj5+ee
hj6=hj6+ff
hj7=hj7+gg
hj8=ROUND((hj3+hj4+hj5+hj6+hj7)/hj2*100,2)
j=j+1
SELECT a
SET FILTER TO
ENDDO
......&&将相关统计数据以统计表形式传送至屏幕或打印机
......&&恢复相关设置,返回调用程序


2013-02-27 15:04
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回复 16楼 sdta
谢谢!慢慢学习领会。
另外:
1、程序中的N(2),其中“2”是指数据宽度对吗?数值是不是可根据需要增大?比如,如果数据库够大,这个数值可能是三位数或者四位数,是否就应该设为3或者4?
2、如果程序末尾不用Browse命令,而是用表格控件显示统计表,该如何实现?是不是将表格控件的数据源设置为表temp就行了?

[ 本帖最后由 陶然愚者 于 2013-2-27 17:37 编辑 ]
2013-02-27 17:09
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回S版:
非常感谢!斑斑的耐心指教,使我初步认识到SQL命令的强大功能,关键在于灵活运用。
最后一个子问题:“标准覆盖率”项的计算还是不知如何弄
2013-02-28 08:40
快速回复:问题没有解决,再请教......
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015561 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved