|
|
|
Wovan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.9.2008 Репутация: нет Всего: нет |
Здравствуйте.
Подскажите пожалуйста. Где-то пропустил. Работаю с ADOQuery LockType = ltBatchOptimistic. Типа пакетного ввода. Таблица типа заголовка qryOrders + таблица qryOrderList типа связанного списка. После добавления (редактирования) всех нужных записей делаю try ADOConnection.BeginTrans; ... qryOrder.UpdateBatch(); ... qryOrderList.UpdateBatch(); ... ADOConnection.CommitTrans; ... except on e:Exception do begin if ADOConnection.InTransaction then ADOConnection.RollbackTrans; MShowMessage('Ошибка сохранения заказа'#13 + e.Message); end; end; При этом происходит ошибка при qryOrderList.UpdateBatch(); Срабатывает ADOConnection.RollbackTrans; Но. Изменения qryOrder.UpdateBatch(); остаются зафиксированы. ??? Данные из пакета qryOrderList.UpdateBatch(); пропадают из грида. Что не так? Есть еще симптомы. Не срабатывают некоторые события ADOQuery. Например, TField.OnValidate, TField.OnSetText. При этом TField.OnChange срабатывает. Может есть какие-то ограничения при работе с пакетными (кэшированными) данными в ADO? Может что-то в ADOConnection подкрутить? Или параметры какие? Спасибо. Извините. Работаю в Delphi 7 + SQLSever 2008R2 Это сообщение отредактировал(а) Wovan - 29.12.2015, 12:20 |
|||
|
||||
Wovan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.9.2008 Репутация: нет Всего: нет |
Привет.
Появилась еще одна зацепка. Может кто сможет объяснить? ADOQuery.Connection := ADOConnection; ADOQuery.SQL.Text := 'insert into Pools (.... values (.... select SCOPE_IDENTITY() as PoolID' Финт такой: ADOConnection.BeginTrans; ADOQuery.Open; NewPoolID := ADOQuery.FieldByName('PoolID').AsInteger; ADOQuery.Close; ADOConnection.RollbackTrans; В результате имеем в БД вставленную строку. По другому: ADOQuery.Connection.BeginTrans; ADOQuery.Open; NewPoolID := ADOQuery.FieldByName('PoolID').AsInteger; ADOQuery.Close; ADOQuery.Connection..RollbackTrans; Строки нет!??? Чего собственно и добивался. Нужно использовать именно первый вариант. Т.к. к ADOConnection подключено много датасетов. Может какие настройки? Где копать? Это сообщение отредактировал(а) Wovan - 21.1.2016, 12:51 |
|||
|
||||
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |