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