| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:这段程序代码错在哪儿?
只看楼主 加入收藏
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
这段程序代码错在哪儿?
有三个数据库表,结构及记录如下:
1、经济类型分类代码表(qyjjlxk.dbf)
图片附件: 游客没有浏览图片的权限,请 登录注册

2、企业基本信息表(qyjbxxb.dbf)
图片附件: 游客没有浏览图片的权限,请 登录注册

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

3、企业主要产品表(qyzycpk.dbf)
图片附件: 游客没有浏览图片的权限,请 登录注册

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

希望统计各种经济类型企业执行标准情况,于是编写了如下一段代码,可是运行结果并非自己想要的。如图:
图片附件: 游客没有浏览图片的权限,请 登录注册

本来,在数据表中,“私营有限责任公司”这类中有1个企业、4个产品,“个体经营”这类中有5个企业、5个产品,可统计结果却完全不是这样。为什么?代码如下,请各位老师帮忙看看,不胜感激!
程序代码:
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
DIMENSION dm(j)
j=1
STORE 0 TO hj1,hj2,hj3,hj4,hj5,hj6,hj7,hj8
DO WHILE j<=lxsl
  SET FILTER TO jjlx=lx(j)
  dm(j)=jgdm
  COUNT FOR jjlx=lx(j) TO aa
  SELECT c
  COUNT ALL FOR jgdm=dm(j) TO bb
  COUNT ALL FOR jgdm=dm(j).and.bzdj='1' TO cc
  COUNT ALL FOR jgdm=dm(j).and.bzdj='2' TO dd
  COUNT ALL FOR jgdm=dm(j).and.bzdj='3' TO ee
  COUNT ALL FOR jgdm=dm(j).and.bzdj='4' TO ff
  COUNT ALL FOR jgdm=dm(j).and.bzdj='5' TO gg
  hh=ROUND((cc+dd+ee+ff+gg)/bb*100,2)
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-19 10:06
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
上传数据表
用SQL-SELECT方法试试

[ 本帖最后由 sdta 于 2013-2-19 11:23 编辑 ]

坚守VFP最后的阵地
2013-02-19 11:19
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回复 2楼 sdta
用SQL select方法?数据表奉上,请指教——
sjb.zip (9.74 KB)



[ 本帖最后由 陶然愚者 于 2013-2-19 12:22 编辑 ]
2013-02-19 12:19
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:20 
程序代码:
SELECT Qyjjlxk.jjlxMC,COUNT(distinct Qyzycpk.jgmc) 企业数,COUNT(QYZYCPK.ZYCP) 产品数;
  FROM QYJBXXB1 ;
  INNER JOIN QYJJLXK ;
  ON QYJBXXB1.JJLX=QYJJLXK.JJLX ;
  INNER JOIN QYZYCPK ON Qyjbxxb1.jgdm = Qyzycpk.jgdm GROUP BY Qyjjlxk.jjlxMC
  
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2013-02-19 13:45
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
实际上,个体经营中,都是生产一个产品,产品数应该是一个,这样理解是否对

坚守VFP最后的阵地
2013-02-19 13:46
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
以下是引用sdta在2013-2-19 13:46:58的发言:

实际上,个体经营中,都是生产一个产品,产品数应该是一个,这样理解是否对
这个问题也是一直困扰我的问题之一。多个企业生产同一个产品,如果其中有的企业没有按标准生产,则在计算标准覆盖率的时候就是没有覆盖。因此,还是考虑用这个方案计算。

另外请教一个问题:四楼中SQL select语句中的那个QYJBXXB1表是怎样得来的?看图似乎是新建一个自由表QYJBXXB1,设置“jjhymc、企业数、产品数.......”等字段,然后将统计结果存到相应字段中,最后用一个表格控件来显示它。对吗?
还有一点就是:用表格控件好象不好设置比较复杂的表头,如一楼中运行结果图中的表头。有解决办法吗?

[ 本帖最后由 陶然愚者 于 2013-2-19 15:29 编辑 ]
2013-02-19 15:19
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
这个表就是原来的QYJBXXB表,因为原表是库表,复制生成的

坚守VFP最后的阵地
2013-02-19 15:27
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
是这样啊。那表格控件的数据源就是“查询”?


[ 本帖最后由 陶然愚者 于 2013-2-19 16:30 编辑 ]
2013-02-19 15:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
如果查询结果可以在一个界面上显示,可以隐藏列标头,用形状控件画标头

坚守VFP最后的阵地
2013-02-19 15:42
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
统计结果肯定是要在一个界面里展现的。我的设想就是通过选择不同的输出方向,将统计结果显示在屏幕上或输出到打印机上或输出到Excel电子表格。
2013-02-19 15:50
快速回复:这段程序代码错在哪儿?
数据加载中...
 
   



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

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