2016-11-21 6 views
0
4   For i = 1 To mcolHistory.Count 
5   gobjCommand.Command.Parameters("UID").Value = mcolHistory(i) 
6   gobjCommand.Command.Execute 
7   Next i   
  1. gobjCommand является объектом команды ADODB.«Из стека пространства» исключения в течение цикла в VB6

  2. mcolHistory - это набор UID.

  3. Хранимая процедура уже установлена ​​в другом блоке.

  4. Функция, содержащая «цикл цикла», должна называться 300-350 раз. Каждый раз, когда вызывается функция, выполняется также цикл for. Значение «mcolHistory.Count» изменяется приблизительно от 1 до 100.
  5. Номера строк 5 и 6 должны называться так много раз. Хранимая процедура выполняется много раз.
  6. Номер строки 5 выдает ошибку «Из пространства стека» через некоторое время, и приложение сработает.

Пожалуйста, дайте мне знать о том, что может вызвать эту ошибку? И как исправить это? *

+0

Объект 'ADODB Command' не имеет свойства' Command' (сравните [MSDN] (https://msdn.microsoft.com/en-us/library/ms675022 (v = vs.85) .aspx)). Таким образом, независимо от 'gobjCommand', это не объект' ADODB Command'. – Tomalak

+0

Это, как говорится, маловероятно, что установка значения параметра команды - это то, что заставляет вас бежать из пространства стека. Предположение о том, что ADODB вызывает проблему, скорее всего, неверно. Скорее всего, у вас есть ошибка в программировании где-то в коде, который вы не показываете. – Tomalak

ответ

1

Я думаю, ваша проблема не будет видна в коде выше.

«Из стека» действительно указывает на бесконечный цикл выполнения методов вызова до тех пор, пока стек не будет заполнен.

Проверьте, является ли mcolHistory.Count слишком большой, а если нет, проверьте, что вы рекурсивно вызываете что-то.

+1

Обычно цикл for не заполняет пространство стека, независимо от того, сколько итераций есть. Вероятнее всего, бесконечная рекурсия. – Tomalak

+0

Я второй ваш комментарий, действительно очень маловероятный (теоретически возможно) размер цикла, заполняющий пространство стека, и рекурсия где-то должна быть его частью. – user6788933