VBScript: ошибка 10023 в: индекс массива вне диапазона (проблема при повторном использовании переменной массива) - PullRequest
0 голосов
/ 02 февраля 2010

Используя Sax ActiveX Scripting (длинный рассказ), у меня есть 3 вложенных оператора if, которые используют одну и ту же возвращаемую переменную. Сценарий выглядит примерно так:

Dim rtnArray As Variant
If variable1 <> "" Then
    ' Perform SQL query against DB2 database
    rtnArray = DB2SQLSearch(Query)
    If UBound(rtnArray) = 0 Then
        ' ditto
        rtnArray = DB2SQLSearch(Query2)
        MsgBox "Gets this far"
        If UBound(rtnArray) = 0 Then ' Error!
            ' Never make it here

Странно, что та же самая структура кода работает в сценарии, который я написал на прошлой неделе; Я просто изменил пару запросов и название функции (найти> заменить).

После второго запроса я пробовал MsgBox CStr(rtnArray(0)(0)), но он выдает Error 10025 in : Array has a different number of indexes.

Коды ошибок соответствуют следующему руководству:
http://www.ftgsoftware.com/manuals/basic32.pdf

Ответы [ 2 ]

0 голосов
/ 02 февраля 2010

Разобрался.

В данном конкретном случае пользователь, к которому я подключался, имел право доступа к первой таблице, но не ко второй.

Это не выдало ошибку, но есть сообщение, которое я могу проверить, чтобы увидеть, был ли успех, или нет, так что я могу найти это и выдать свою собственную ошибку, вместо того, чтобы возвращать нулевой массив. (это не совсем Null, честно говоря, я все еще не на 100% уверен, что это такое, кроме Variant. Но это точно не нравится UBound()!

0 голосов
/ 02 февраля 2010

Вы можете сохранить ее в другой переменной или ReDim в переменной rtnArray, чтобы получить нужный размер.Для того, чтобы Redim, вам нужно знать размер.

...