标题:数组的问题
取消只看楼主
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
结帖率:100%
已结贴  问题点数:20 回复次数:34 
数组的问题
一个数组不固定,通过从表中某一字段取得的值生成的,将生成的数组放到令一个表中,表格式是固定的,比如说有6个字段,但是生成的数组也是最多6个元素。生成6个元素时不报错,小于6个时就提示“Subscript is outside defined range.”超出范围,其实数组里才一个元素,那位给解释下!
搜索更多相关主题的帖子: outside 元素 
2012-08-28 16:01
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
回复 2楼 hu9jj
不是复制的意思,把一个表的某个字段的值赋值到数组中,然后再把数组中的值替换到新的表中,
2012-08-28 17:50
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
现在就是有点不明白为什么数组元素不满足第二个表的字段数时就报错,意思是不是元素不够时,相当于两个表的结构不一样呀?但是当数组的元素小于新表字段时,数组中有的值会替换进去,到了空值时就开始报错了!表结构如下,
a  b    c   d   e

a1  b1  c1  d1 e1
a2  b2


[ 本帖最后由 hyhosd 于 2012-8-28 18:14 编辑 ]
2012-08-28 17:54
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
回复 4楼 hyhosd
呵呵,楼上的朋友确实厉害,是多行一列的数组,也就是你前几天给我回答的那个行专列的问题,我把我修改后的代码附上,由于初学,
CREATE CURSOR XZZW (JGID C(20),副主任 C(10),副主任1 C(10),副主任2 C(10),副主任3 C(10),副主任4 C(10))
select Gz02tmp   (此表有三个字段(jgid ,行政职务,姓名))
  SELECT  JGID  FROM ALIAS() GROUP BY JGID INTO ARRAY AREC
 FOR I=1 TO ALEN(AREC,1)
     SELECT 姓名 FROM Gz02tmp  where jgid = AREC(i)  INTO ARRAY ASS (AREC数组有两个值,1401和1402)
      SELECT("XZZW")
      append BLANK
      REPLACE JGID With AREC(I)   
      FOR I1=2 TO FCOUNT("XZZW")
          REPLACE RECORD RECCOUNT() (Field(I1)) With ASS(I1-1)
      ENDFOR
 ENDFOR
GZ02TMP表数据如下
JGID    行政职务      姓名
N1       FZR           M1
N1       FZR           M2
N1       FZR           M3
N1       FZR           M4
N1       FZR           M5
N2       FZR           M7
N1这一行记录,可以替进去,但到了N2行替进M7后 就开始提示超出范围。


[ 本帖最后由 hyhosd 于 2012-8-28 19:19 编辑 ]
2012-08-28 19:15
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
回复 7楼 bccn201203
恩,alen()函数是数组元素数目,行数,列数,ALEN(AREC,1)返回数组指定行数,也是就该数组有n行就返回n。如果是一维数组返回‘0’。刚开始学,所以基础不怎么好!

[ 本帖最后由 hyhosd 于 2012-8-28 19:53 编辑 ]
2012-08-28 19:50
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
VFP帮助上是这样说的,不知道我理解的对不对,AREC(I)不是返回数组里的值吗?数组有两个值1401和1402 写错了,应该是数组AREC里的值。

[ 本帖最后由 hyhosd 于 2012-8-28 20:00 编辑 ]
2012-08-28 19:56
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
我看到的AREC显示为AREC(I,1),表示数组元素放在一列里,所以我觉得应该是一维的,不知道理解的对不对?
2012-08-28 20:28
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
恩,明白了,那我下面写的代码那错了,是这句   SELECT 姓名  FROM GZ02TMP WHERE JGID=AREC(I) INTO ARRAY ASS ,数组的值不能这样直接赋给JGID吧?但是我要JGID 来把数据分组啊,如果不加限制条件的话,每行的记录都是一样的,都是取自第一个JGID里的记录!写下面的我该如何?
2012-08-28 20:40
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
把AREC和ASS,写成AREC(I,1)和ASS(I1-1,1),结果是出来,但是为什么还提示那个超出范围的错误?
2012-08-28 20:50
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
得分:0 
这个是返回AREC 数组的行数啊?
2012-08-28 20:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-380243-1-1.html




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

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