| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:这段程序代码错在哪儿?
取消只看楼主 加入收藏
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
这段程序代码错在哪儿?
有三个数据库表,结构及记录如下:
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
陶然愚者
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
陶然愚者
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
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
是这样啊。那表格控件的数据源就是“查询”?


[ 本帖最后由 陶然愚者 于 2013-2-19 16:30 编辑 ]
2013-02-19 15:32
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
统计结果肯定是要在一个界面里展现的。我的设想就是通过选择不同的输出方向,将统计结果显示在屏幕上或输出到打印机上或输出到Excel电子表格。
2013-02-19 15:50
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
再请教一个关于COUNT()函数的问题:
帮助文件中指出:该函数只能对数字型数据有效,如果不是数字型字段,怎么办?本例中QYJJLXK.JJLX字段是数字型字符,如果想依据经济行业进行分类统计,则会用到另一个表的行业代码字段JJHYFLK.JJHY,这个字段值是字母与数字结合型的字符型数据。
2013-02-19 17:06
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
以下是引用sdta在2013-2-19 13:45:46的发言:

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
  
S版:用SQL查询语句配合表格控件我怎么也实现不了一楼最后那张图示的效果呀,特别是表格控件中怎样实现“合计”栏?请指教。
还有,关于COUNT()函数的使用,VFP9中的帮助文件里根本找不到,能否具体讲解下它的语法?最好是用中文说明。

[ 本帖最后由 陶然愚者 于 2013-2-22 08:58 编辑 ]
2013-02-22 08:51
快速回复:这段程序代码错在哪儿?
数据加载中...
 
   



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

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