Произошли ошибки во время выполнения многошаговой операции. Проверьте

  • Автор темы -
  • Дата начала
Статус
Закрыто для дальнейших ответов.

Гость
#1
Доброго дня!
Имеется база на Аccess, в базе три таблицы. Решалась задача заполнения одной таблицы данными из двух других. Решалась средствами ADO Delphi. На ADOConnection висят соответственно три ADOTable, ADOSource и DBGrid. На OnDblClick в DBGrid повесил процедуру для взятия данных из двух таблиц по условиям и помещения их в целевую таблицую. Где-то 4-5 раз клацаю, данные переносятся, всё путём отрабатывает. Далее вылетает ошибка:

"Произошли ошибки во время выполнения многошаговой операции. Проверьте значение всех состояний"

В и-нете ничего путного не нарыл. Буду искать ещё, но может кто-то уже сталкивался? Есть ли простые решения?
 

nayke

Well-Known Member
04.08.2010
310
0
#2
Доброго дня!
Имеется база на Аccess, в базе три таблицы. Решалась задача заполнения одной таблицы данными из двух других. Решалась средствами ADO Delphi. На ADOConnection висят соответственно три ADOTable, ADOSource и DBGrid. На OnDblClick в DBGrid повесил процедуру для взятия данных из двух таблиц по условиям и помещения их в целевую таблицую. Где-то 4-5 раз клацаю, данные переносятся, всё путём отрабатывает. Далее вылетает ошибка:

"Произошли ошибки во время выполнения многошаговой операции. Проверьте значение всех состояний"

В и-нете ничего путного не нарыл. Буду искать ещё, но может кто-то уже сталкивался? Есть ли простые решения?
а зачем на OnDblClick вешать - нажатие отдельного баттона проще отследить+ можно мемо повесить для логгирования?
Навскидку, например, если данные подтягиваются для текущей строки то можешь совпадать ключ в новой таблице, либо в процессе сохранения несовпадают типы. Возможно есть хранимые процедуры или связи в самой БД которые конфликтуют с данными.
 
P

perceptron

Гость
#5
Если память не изменяет ошибка многошаговой операции - это косяк драйвера ADO.
Просто клацаешь слишком быстро - и ADO не успевает обработать предыдущую обработку как уже надо начинать следующую. Заведи флаг занятости - пока предыд. не обработается не заноси следующую.
 
Статус
Закрыто для дальнейших ответов.