ReDim Preserveできなかった配列をUBOUND……
VBScriptでプログラムを組んでおります。
初心者なので言葉の使い方が間違っているかもしれませんがご容赦ください。
ASPでDBにアクセスして、このときにReDim Preserveを使って配列(str)を動的に拡張しながらDBから項目を抽出しています。
この動的に作った配列の項目を表示する際にどうしても項目数が必要なので
UBound(str)で要素数を抜き出して使用しています。
DBにデータがあれば問題ないのですが、DBにデータがない場合はUBound(str)実行時に
--------------------------
Microsoft VBScript 実行時エラー (0x800A0009)
インデックスが有効範囲にありません。: 'ubound'
--------------------------
と表示されてしまいます。
これを回避するにはDBから1つの項目を抽出する度に+1するような変数を作れば事足りるとは思いますが、
そうすると配列内の項目を表示する関数の引数を増やすことになり、少し納得がいきません。
Dim str() において
Redim str(1)をしたかしてないかを見分ける方法を教えてくださいませんか。
……無ければ「無い」と仰ってくれれば助かります。
では失礼します。
お時間があればご協力宜しくお願いします。
回答(1件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.1ベストアンサー20pt
私はUBoundのエラーを回避する関数を作って対処しています。
Function UBound2(ary)
On Error Goto ER
UBound2 = UBound(ary)
Exit Function
ER:
UBound2 = -1
End Function
みたいな感じで。
こうすれば項目数を取り出すのに、最大インデックスに1を足す方法でも、0個がちゃんと得られます。
ReDimするのに使った最大インデックスを覚えておくという手もありますがね。
この回答へのお礼
>haporunさん
どうもありがとうございました!
効率のいいプログラムの方法もわかりましたし、とても勉強になりました。
またお世話になるかもしれませんが、そのときもどうか宜しくお願いします。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











