Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 219

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!!! У меня такая проблема: использую компонеты IBDatabase,IBTransaction,IBQuery. Нужно обработать данные возвращаемые запросом. Цикл Repeat не работает потому как FindNext не срабатывает. RecordCount возвращает 1 (RecNo тоже глюк). Если ставлю DBGrid, то RecordCount возвращает правильное значение, все работает как положено. Что делать? Как обойтись без лишних компонентов?

Храмцов Денис Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Храмцов Денис (статус: 1-ый класс)
Вопрос отправлен: 26 декабря 2006, 08:50
Состояние вопроса: открыт, ответов: 4.

Ответ #1. Отвечает эксперт: Alex Van Glukhman

Здравствуйте, hdrus!

Всё должно работать - хотелось бы увидеть код, структуру таблицы и SQL запрос.

Ответ отправил: Alex Van Glukhman (статус: 7-ой класс)
Время отправки: 26 декабря 2006, 09:32

Ответ #2. Отвечает эксперт: Knjazev

Здравствуйте, hdrus!
Попробуйте перед циклом выполнить IBQuery1.FetchAll - это заставит запрос вернуть все записи
Рекомендую схему:
...
IBQuery1.Active := true;
IBQuery1.FetchAll;
IBQuery1.First;
while not IBQuery1.Eof do
begin
//do something
IBQuery1.Next;
end;
IBQuery1.Active := false;
...
Читайте учебники!

Ответ отправил: Knjazev (статус: 3-ий класс)
Время отправки: 26 декабря 2006, 10:00
Оценка за ответ: 5

Комментарий к оценке: Учебники читаю. За совет большое спасибо.Сработало.

Ответ #3. Отвечает эксперт: Помфюк Владимир Степанович

Здравствуйте, hdrus!
А почему бы не
while not(IBQuery.EOF) do
?

Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 26 декабря 2006, 10:06
Оценка за ответ: 4

Ответ #4. Отвечает эксперт: ANBsoft

Злоумышленник написал все подробно,
хотя IBQuery1.FetchAll; - лишняя команда в таком исполнении (можно также дать IBQuery1.Last; с тем же результатом), она нужна только в случае если необходимо заранее знать точное количество записей (например при создании вариантного массива и перекачивании в него данных из запроса).

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 26 декабря 2006, 20:51


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:34
Выполнено за 0.02 сек.