| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3340 人关注过本帖, 1 人收藏
标题:数组的问题
只看楼主 加入收藏
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
SELECT  JGID  FROM ALIAS() GROUP BY JGID INTO ARRAY AREC
知道数组AREC是几维数组?搞清楚了才能继续下一步的操作。
2012-08-28 20:13
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
我看到的AREC显示为AREC(I,1),表示数组元素放在一列里,所以我觉得应该是一维的,不知道理解的对不对?
2012-08-28 20:28
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
以下是引用hyhosd在2012-8-28 20:28:51的发言:

我看到的AREC显示为AREC(I,1),表示数组元素放在一列里,所以我觉得应该是一维的,不知道理解的对不对?
严格的讲应该是二维:AREC(ROW,COL),有行、列
AREC(ROW),只有行没有列,应该是一维。
2012-08-28 20:34
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
程序代码:
dimension 命令


创建一维或二维内存变量数组。

语法

DIMENSION ArrayName1 (nRows1 [, nColumns1])
[, ArrayName2 (nRows2 [, nColumns2])] ...

参数

ArrayName1

指定数组名。可以通过包含多个数组名(ArrayName2, ArrayName3 等)用一个 dimension 命令创建多个数组。

nRows1 [, nColumns1]

指定要创建的数组大小。如果只包含 nRows1,就创建一维数组。一维数组含有一列和 nRows1 行。例如,下列命令创建一个名为 gaArrayOne 的一列十行的数组。

DIMENSION gaArrayOne(10)


若要创建二维数组,应包含 nRows1 和 nColumns1。nRows1 指定数组中的行数,nColumns1 指定列数。下列命令创建一个名为 gaArrayTwo 的二行四列的二维数组。

DIMENSION gaArrayTwo(2,4)


使用 DIMENSION 创建数组时,必须指定大小。在下面的示例中,创建了三个数组:前面两个示例中的数组 gaArrayOne 和 gaArrayTwo,以及第三个名为 gaArrayThree 的数组:

DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)


在 DIMENSION 或 DECLARE 中,可以用方括号或圆括号括起表达式。例如,下面的两个命令创建相同的数组:

DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)
DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]


数组元素

一个数组的大小决定了它包含的元素数目。数组中的每个元素可以存储一条信息。要确定一个数组中包含的元素数目和存储的信息量,可用数组的行 (nRows1) 数乘以数组的列数 (nColumns1)。
数组元素可以包含任何类型的数据,并在最初创建数组时将它们初始化为“假”(.F.)。如果 SET COMPATIBLE 设置为 FOXPLUS 或 OFF(默认设置),那么可以用 STORE 将一个数组中所有元素初始化为相同的值。例如,

DIMENSION gaArray(10,3)
STORE 'initial' TO gaArray


数组下标

通过下标来引用数组中的元素。每个数组元素都有唯一一个可以识别它的数值下标。如果数组是一维的,则数组元素的下标与它的行号相同。例如,一个一维数组第三行中元素的下标就是 3。
通过两个下标来引用二维数组中的元素。第一个下标表明元素的行位置,第二个下标表明元素的列位置。例如,一个二维数组第三行第四列中的元素下标为 34。有关数组元素下标的进一步讨论,请参阅 ASUBSCRIPT( )。
数组中第一个元素的下标通常从 1 开始。如果数组是二维的,也可以用单个下标引用它。可使用 AELEMENT( ) 根据数组的行列下标中返回单个下标;使用 ASUBSCRIPT( ) 根据单个下标返回行列下标。

重新定义数组的维数

重新执行 dimension 命令可以改变数组的大小和维数。数组的大小可以增加或减小,一维数组可以转换为二维数组,二维数组可以降低为一维数组。
如果数组中元素的数目增加了,就将原数组中所有元素内容复制到维数重新调整过的数组中,增加的数组元素初始化为“假”(.F.)。

说明
DIMENSION 在操作与语法上与 DECLARE 相同。
概念性知识,没有十遍八遍是没有印象的。

[ 本帖最后由 bccn201203 于 2012-8-28 20:38 编辑 ]
2012-08-28 20:37
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
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
FOR I=1 TO ALEN(AREC,1)
SELECT 姓名 FROM Gz02tmp  where jgid = AREC(i)  INTO ARRAY ASS (AREC数组有两个值,1401和1402)
既然明白了数组的意思,你自己分析一下那个地方错了
JGID的数据类型C?N?类型不一样,处理方法也不一样

[ 本帖最后由 bccn201203 于 2012-8-28 20:47 编辑 ]
2012-08-28 20:45
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
把AREC和ASS,写成AREC(I,1)和ASS(I1-1,1),结果是出来,但是为什么还提示那个超出范围的错误?
2012-08-28 20:50
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
认真看16楼回帖
ALEN(AREC,1) 这是什么意思
2012-08-28 20:53
hyhosd
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2012-8-24
收藏
得分:0 
这个是返回AREC 数组的行数啊?
2012-08-28 20:54
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
FOR I=1 TO ALEN(AREC,1)
这行代码是什么意思
2012-08-28 20:55
快速回复:数组的问题
数据加载中...
 
   



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

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