|
Вопрос # 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
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|