2012-04-04 3 views
2

Я пытаюсь присвоить значение целому ряду переменных внутри цикла FOR EACH, но продолжаю получать ошибку «Тип несоответствия».Назначение значений динамически в классическом цикле ASP FOR EACH

personOrder = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" 'order items displayed onscreen 

personArray = split(personOrder, ",") 

For each i in personArray 
    imageArray(i) = objContentXML.selectSingleNode("/page/profile" & i & "/image").text 
Next 

Примечание: Я сделал var personOrder список, потому что в будущих товарах может измениться порядок.

Я думаю, что существует проблема с назначением значений массива в цикле FOR EACH. Раздражающе это прекрасно работает в цикле FOR, но я пытаюсь в будущем доказать свой код.

Извините, если этот вопрос слишком глуп. Я возвращаюсь после 9 месяцев подгузников и отрыгивания от мира кода (меньше подгузников, больше отрыжка).

+1

BTW, не используйте имена узлов, такие как '', ''. Это плохая форма для XML. Суффиксы числа являются частью ваших данных. Вместо этого используйте '' и '<идентификатор профиля =" 2 ">'. Ваш выбор xpath становится ''/page/profile [@ ID = "" "& i &" ""]/image ". – AnthonyWJones

ответ

4

На каком утверждении вы получаете эту ошибку? Я могу выполнить следующий код без каких-либо сообщений об ошибках:

personOrder = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" 'order items displayed onscreen 

personArray = split(personOrder, ",") 

dim imageArray 
redim imageArray(uBound(personArray) + 1) 

For each i in personArray 
    imageArray(i) = i 
Next 

Вы должны создать массив первый и объявить количество элементов, которые вы хотите поместить в него (используйте ReDim для изменения размеров).

Я заменил ваш объектContentXML простой инструкцией для тестирования.

+0

Ах спасибо. Я решил, что мне нужно было создать массив сразу после того, как я разместил вопрос, но в настоящее время я борюсь с ошибкой «Ожидаемая целая константа» из строки «dim imageArray (uBound (personArray) + 1)' Я также слегка изменил код, поскольку позиция в массиве была установлена ​​неправильно. 'х = 1 Для каждого я в personArray imageArray (х) = я х = х + 1 Next' – katebp

+1

Попробуйте следующее:' тусклым imageArray', а затем сразу после этого 'Redim imageArray (UBOUND (personArray) + 1) '. Я не могу воспроизвести вашу ошибку, но ошибка витает в том, что ей требуется постоянное целое число (1,2,3,4 и т. Д.), А не результат инструкции (1 + 2). –

+0

Отлично! Благодарю. – katebp

Смежные вопросы