Выполнение Sql-запроса

Тема в разделе "Delphi - Базы данных", создана пользователем SNike, 25 июн 2007.

  1. SNike

    SNike Гость

    Можно ли как-то отобразить ход выполнения операции выполнения запроса SQL (например, используя ProgressBar и т.п.), не привязываясь к времени TimeOut ? Что-то мне подсказывает что нет, но так хочется надеяться что все-же можно... :(
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-SNike+25:06:2007, 16:39 -->
    <span class="vbquote">(SNike @ 25:06:2007, 16:39 )</span><!--QuoteEBegin-->но так хочется надеяться что все-же можно...
    [snapback]70549" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Мне тоже когда-то хотелось на это надеятся :( К сожалению, нельзя по многим причинам связанным с архитектурой современных БД. Если интересно - поищи. Разумным выходом в такой ситуации будет отображение какой-нибудь анимации, чтобы пользователю не было скучно.
     
  3. SNike

    SNike Гость

    Да, скорее всего придется оставить анимацию...
    Или же в качестве максимальной отметки шкалы использовать TimeOut - тоже помогает :)
     
  4. Lunatikus

    Lunatikus Гость

    Почему нет?Просто поставь после открытия запроса:

    ADOQuery.last;
    Progressbar.max:=ADOQuery.recno;
    ADOQuery.first;

    И с каждым шагом ADOQ.next используй Progressbar.position:=progressbar.position+1;
    Это при использовании ADO.
    Или я чтото не так понял?
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Ну и что ты отобразишь? Индикатор прохода по полученному набору записей, а нужно получить индикатор выполнения запроса, который в твоем примере уже выполнен:
    <!--QuoteBegin-Lunatikus+9:07:2007, 09:06 -->
    <span class="vbquote">(Lunatikus @ 9:07:2007, 09:06 )</span><!--QuoteEBegin-->Просто поставь после открытия запроса
    [snapback]71716" rel="nofollow" target="_blank[/snapback]​
    [/quote]
     
  6. zubr

    zubr Гость

    Можно конечно попробовать:
    1. Сделать в фоне запрос только на инкрементируемое поле, чтобы определить количество записей. Опять таки, если запрос простой на всю таблицу.
    2. Затем разбить запросы на пакеты по какому то количеству записей. И данные выводить не в DBGrid, а в StringGrid.
    Но это все извраты, имхо, + время запроса увеличится на порядок.
     
  7. SNike

    SNike Гость

    Да нет, не стоит того. Пусть уж лучше анимация.
    Задавая вопрос я предполагал что, возможно, есть какой-либо интерфейс, скажем, через тот же WinAPI, с помощью которого можно отслеживать состояние выполнения запроса
     
  8. Barmutik

    Barmutik Гость

    Насколько мне известно некоторые провайдеры поддерживают call back с прогрессом выполнения запроса.. но .. тогда стоит искать конкретные драйвера и разбираться конкретно в функциях с ним работы.. в ADO такого нет!
     
Загрузка...

Поделиться этой страницей