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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 901

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

Доброго времени суток, уважаемые эксперты!
Вдобавок к вопросу 899: как сделать так, чтобы при положительном результате поиска(кто-нибудь да нашелся) открывалось Messagedlg с надписью что есть найденные, а если никого не найдено(DBGrid остался пустым) то тоже мессадждлг, но с сообщением, типа поиск не дал результатов. Короче, если коротко, то как проверить DBGrid на пустоту?

Да, и назовите, пожалуйста, метод для позиционирования на N-й записи таблицы.

Полушин Сергей Анатольевич Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Полушин Сергей Анатольевич (статус: Посетитель)
Вопрос отправлен: 7 сентября 2007, 23:41
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Полушин Сергей Анатольевич!
Я не устаю повторять - DBGrid не хранит данных. Он только запрашивает их у источника данных, которым является Table или Query. Поэтому, подобные запросы нужно относить к ним.
Поэтому, проверить на кол-во записей можно через свойство RecordCount. Думаю определиться, куда его вписать и как использовать вы догадаетесь:)
По поводу перейти к определённой записи. Тут тоже есть одно но. Так устроены таблицы в базе, что говорить о первой, последней или какой-то определённой записи можно говорить только тогда, когда у нас есть выборка. Просто фраза "дайте мне первую запись таблицы ххх" лишена смысла.
Но у нас уже выборка есть:)
В документации сказано о свойстве RecNo. Но толи я хелп плохо читал, толи не знаю, но оно доступно только для чтения. Ок. Решим нашу проблему обходным путём. Есть такой метод как MoveBy(n:integer) которому нужно передать смещение. Тоесть, передав 2, мы сместимся на две записи в низ. Передав -3 - на 3 записи вверх. Зная текущую запись и нужную всегда можно посчитать разность и сделать переход. Только не надо забывать о контроле позиции, перейти за пределы таблицы нельзя. Хотя ничего страшного не произойдёт - курсор просто остановиться на первой или последней записи.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 8 сентября 2007, 14:56
Оценка за ответ: 5

Комментарий к оценке: Как раз всё то, что мне было нужно! Спасибо, сабж.

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

Здравствуйте, Полушин Сергей Анатольевич!
В дагонку к ответу Вадима_К...
Есть еще методы у TTable: First, Last, Next, Prior, EOF, BOF.
А что в момент перебора записей DBGrid не блымал, у TTable есть методы для отключения отображения курсора и для его включения. И если я не ошибаюсь, это DisableControls и EnableControls.

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 10 сентября 2007, 13:53


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

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

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

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