配列について

解決


Sherry  2002-12-11 15:01:36  No: 105673  IP: [192.*.*.*]

どなたか教えてください。
配列でわからないことがあります。

Dim  curKingaku(100) As Currency

と宣言してあります。

intCnt = 0

Do While (0 = oraDynaset.EOF)
   curKingaku(intCnt) = oraDynaset.fields("*****")
intCnt = intCnt + 1
loop

このとき、Oracleのデータは50件だったとすると、
curKingaku(0-49)までしか使用していないですよね。

データはcurKingaku(49)までですよ
ということがわかる方法はないでしょうか。
たとえば、curKingaku(50)にはNullが入っているとか。

以上
よろしくお願いいたします。

編集 削除
K  2002-12-11 15:21:27  No: 105674  IP: [192.*.*.*]

あまり意味がわかってないのではずしてるかもしれませんが、
UBound(curKingaku)で配列で使用できる添字の最大値を、
長整数型 (Long) の値で返せます。

如何でしょか?

編集 削除
てつじ  2002-12-11 15:28:10  No: 105675  IP: [192.*.*.*]

Dim  curKingaku() As Currency

intCnt = 0
ReDim  curKingaku(oraDynaset.Count)
Do While (0 = oraDynaset.EOF)
   curKingaku(intCnt) = oraDynaset.fields("*****")
intCnt = intCnt + 1
loop

ってのは、どうですか?

編集 削除
とろ  2002-12-11 15:39:21  No: 105676  IP: [192.*.*.*]

添字ゼロから値を入れているので、
ReDim curKingaku(oraDynaset.Count)
でなくて
ReDim curKingaku(oraDynaset.Count - 1)
ですね。

編集 削除
Sherry  2002-12-11 15:43:58  No: 105677  IP: [192.*.*.*]

K様、てつじ様、どうもありがとうございます。
回答をいただいてもうしわけないのですが、ちょっと違うのです。

データをとってくるところは
クラスモジュールで行います。
標準モジュールでとってきたデータをエクセルに出力するんです。
その際、とってきたデータの数だけループさせるということなのですが。。。。
伝わっていますか?説明下手で申し訳ないです(^-^;;

そこで、配列の数は変動するので、データが入っているところと入っていないところの
見分け方というか。。。そういうのがあったらいいなとおもったのですが。。。
データが入っていないところには
Null、0、ゴミ、空
のどれかがはいっているのでは?と思っているのですが、
ゴミ意外ならそれをループの条件にしようと思っています。

少し調べてみます。
どうもありがとうございます。

編集 削除
Sherry  2002-12-11 15:48:00  No: 105678  IP: [192.*.*.*]

とろさん、ありがとうございます。
てつじさんととろさんの案から考えると、
orDynaset.countの値を標準モジュールに渡してあげれば
良いということですかね!?
きっと。

編集 削除
Sherry  2002-12-13 14:18:10  No: 105679  IP: [192.*.*.*]

皆様、ありがとうございます。
てつじさんととろさんの意見を元にやってみたところ、
できました。本当にありがとうございます。

編集 削除