Cancel
процедура ищет данные в БД и вставляет их в другую БД, процесс долгий, как можно его прервать нажав на кнопочку?
То есть, пока выполняется эта процедура программа вообще ни на что не реагирует пока не найдет все что надо, как заставить ее остановиться по нажатию кнопочки на форме?
Люди, как можно реализовать такую весчь:
процедура ищет данные в БД и вставляет их в другую БД, процесс долгий, как можно его прервать нажав на кнопочку?
То есть, пока выполняется эта процедура программа вообще ни на что не реагирует пока не найдет все что надо, как заставить ее остановиться по нажатию кнопочки на форме?
Какая БД (Jet, SQL или другая)?
Как выполеяется выборка? Тоесть, это хранимый запрос, хранимая процедура либо непосредственный запрос к серверу?
В какой среде работаешь? (VBA, либо VB)
Еесли не критичны всякие сообщения, либо вероятность неполного копирования данных и прочей беды, если коннектишься к БД не через DSN, а напрямую (через экземпляр Conection), можно попытаться установить приоритет событию "клика" по твоей кнопочке, а потом просто тупо обрывать коннект, либо "убивать" рекордсет. Правда, грубовать это...
Какая БД (Jet, SQL или другая)?
Как выполеяется выборка? Тоесть, это хранимый запрос, хранимая процедура либо непосредственный запрос к серверу?
В какой среде работаешь? (VBA, либо VB)
Еесли не критичны всякие сообщения, либо вероятность неполного копирования данных и прочей беды, если коннектишься к БД не через DSN, а напрямую (через экземпляр Conection), можно попытаться установить приоритет событию "клика" по твоей кнопочке, а потом просто тупо обрывать коннект, либо "убивать" рекордсет. Правда, грубовать это...
БД - Access 2000
Среда - VB6
Неполное копирование и все остальное не критично, главное прервать работу
Коннект - напрямую (через экземпляр Conection)
И как установить приоритет событию "клика" ?
if GetInputState then
DoEvents
end if
Теперь такой момент: если ты работаешь с базой через ADO то можно задавать все свои запросы асинхронно, то бишь послал ее куда-нибудь, а программа твоя дальше пошла, не дожидаясь (тут уже тебе самому придется ожидание вставлять, чтобы программа дальше не убежала)
Спасибо за советы, попробую через API.
Неа, DoEvents - это встроенная функция в VB.
Так как останавливает выполнение программы для обработки пришедших сообщений, то ее не рекомендуют вставлять в быстрый цикл в голом виде, она его сильно тогда замедлит, поэтому в циклах лучше использовать конструкцию с WinAPI GetInputState - чтобы лишний раз не вызывать DoEvents, а то она тормозит процесс, даже если пользователь под страхом смертной казни ничего не трогал