![]() |
|
|
![]()
|
|
| Dolphinchik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 24.7.2006 Где: Филлипины Репутация: нет Всего: нет |
Здравствуйте,
на определенном этапе работы программы мне необходимо запустить по очереди несколько процедур. К примеру:
У ADOConnection1 есть события: OnWillExecute и OnExecuteComplete. Первое вызывается перед началом исполнения команды, второе по завершению команды. У OnExecuteComplete есть EventStatus: TEventStatus, может принимать значения: TEventStatus = (esOK, esErrorsOccured, esCantDeny, esCancel, esUnwantedEvent); Когда TEventStatus=esOK - процедура закончила исполнение; Как правильно здесь поступить? Как заставить программу ожидать выполнения процедуры? Я предполагаю несколько вариантов: 1. Средствами ADODB: где-то есть возможность все это правильно оформить; 2. Можно в OnExecuteComplete и OnWillExecute поместить булевую переменную и выполнять while до тех пор пока она не получит значение, которое присваевается ей в OnExecuteComplete. Только приложение вешается, а это именно то от чего я хочу избавиться. Сначало я пробовала CursorLocation в состоянии clUseServer, клиент подвисает напроч. 3. Можно воспользоваться winapi. Что можете посоветовать? Delphi 7, MS SQL Server, MDAC 2.8 Добавлено через 3 минуты и 49 секунд небольшая поправка - "Когда TEventStatus=esOK - процедура закончила исполнение;" - не факт |
|||
|
||||
| Savek |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 10.4.2006 Где: Воронеж Репутация: 7 Всего: 7 |
А дополнительные потоки использовать религия не позволяет?
|
|||
|
||||
| Dolphinchik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 24.7.2006 Где: Филлипины Репутация: нет Всего: нет |
видимо не позволяет :(
|
|||
|
||||
| Savek |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 10.4.2006 Где: Воронеж Репутация: 7 Всего: 7 |
получается что с одной стороны выполнение процедуры должно быть асинхронным, а сдругой программа должна ожидать завершения
Только эта пляска с бубном кроме геморроя ничего не даст. Доп. потоки для того и созданы, чтобы выполнять длительные операции, не замораживая интерфейс пользователя (ИМХО) |
|||
|
||||
| Dolphinchik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 24.7.2006 Где: Филлипины Репутация: нет Всего: нет |
||||
|
||||
| Arvest |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 13.6.2007 Репутация: нет Всего: нет |
По забжу возник вопрос.
Вызывается запрос из базы Access. Если синтаксис запроса не верен, то должна выскакивать ошибка. (например в запросе присутсвует функция NZ) При eoAsyncExecute = False так и происходит. Но если eoAsyncExecute = True , то запрос как будто выполняется. Т.е. никаких эксепшинов не возникает, но результата запроса нет (Запрос Update). Это фича? Как можно добиться обработки эксепшинов при асинхронном выполнения ADOStoredProc? Заранее спасибо за ответ. Это сообщение отредактировал(а) Arvest - 13.9.2007, 11:34 |
|||
|
||||
| Savek |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 10.4.2006 Где: Воронеж Репутация: 7 Всего: 7 |
Если не ошибаюсь, ошибки можно ловить здесь:
|
|||
|
||||
| Arvest |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 13.6.2007 Репутация: нет Всего: нет |
Savek, Огромное Спасибо!
Но если возвращаясь к вопросу, то это действительно фича? |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |