![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Порядковый номер в DBGrid [D7, XP]
Jacksotnik © (2010-10-05 14:06:00)Добрый день помогите пожалуйста с таким вопросом. Есть DBGrid в который выводится содержимое таблицы(данные по клиентам), необходимо добывить столбец для отображения порядкового номера для каждой записи. в БД такое поле не предусмотрено, оно должно нести чисто информативный хорактер, как допасать в дбгрид токое поле?
Jacksotnik (2010-10-08 10:54:00) [1]
> MsGuns © (05.10.10 20:22) [8]
> 1) Выбрать в датасете любое поле, которое не нужно отображать
> (а если такого нет, то добавить искусственное)
> 2) Это поле положить в колонку сетки, где должен быть порядковый
> номер
> 3) В обработчике OnGetText этого поля написать
>
> Text := IntToStr(DataSet.RecNo)
>
> Это будет работать во всех случаях (в т.ч. просле сортировок,
> переоткрытий нд и т.д), если не будет использоватья фильтрация
> (Filter, Filtered). При фильтации номер порядковый можно
> определять средствами самой сетки, обращаясь к непосредственно
> источнику данных
>
>
Спасибо тебе добрый человек все прекрасно работает)))
Германн (2010-10-06 02:45:00) [2]Удалено модератором
Игорь Шевченко (2010-10-06 00:15:00) [3]Anatoly Podgoretsky © (05.10.10 23:15) [11]
RTFS: db.pas, TDataSet.GetRecNo
Anatoly Podgoretsky (2010-10-05 23:15:00) [4]> Игорь Шевченко (05.10.2010 23:08:10) [10]
Это RecordCount, тоже гадость.
Игорь Шевченко (2010-10-05 23:08:00) [5]
> RecNo это не порядковый номер.
Это -1
Anatoly Podgoretsky (2010-10-05 20:34:00) [6]> MsGuns (05.10.2010 20:22:08) [8]
RecNo это не порядковый номер.
MsGuns (2010-10-05 20:22:00) [7]1) Выбрать в датасете любое поле, которое не нужно отображать (а если такого нет, то добавить искусственное)
2) Это поле положить в колонку сетки, где должен быть порядковый номер
3) В обработчике OnGetText этого поля написать
Text := IntToStr(DataSet.RecNo)
Это будет работать во всех случаях (в т.ч. просле сортировок, переоткрытий нд и т.д), если не будет использоватья фильтрация (Filter, Filtered). При фильтации номер порядковый можно определять средствами самой сетки, обращаясь к непосредственно источнику данных
Dennis I. Komarov (2010-10-05 16:46:00) [8]
> В ДБГрид вообще нет порядка записей, как и самих записей.
> Можно отсортировать, и порядок измениться. Можно удалить
> запись - тоже изменится.
Ничего не знаю. См. [0]. Надо и все тут...
> Если от DBGrid хочется странного, значит нужно подумать
> о смене структуры базы.
Надо подумать о смене хотелки :) а в базу низя лезть рученками...
И. Павел (2010-10-05 16:14:00) [9]> Автоинкрементное поле не есть порядковый номер в ДБГрид
В ДБГрид вообще нет порядка записей, как и самих записей. Можно отсортировать, и порядок измениться. Можно удалить запись - тоже изменится.
> И нечего в базу лазить шаловливыми ручками...
Если от DBGrid хочется странного, значит нужно подумать о смене структуры базы.
Dennis I. Komarov (2010-10-05 15:45:00) [10]
> И. Павел © (05.10.10 15:42) [4]
>
Автоинкрементное поле не есть порядковый номер в ДБГрид. И нечего в базу лазить шаловливыми ручками...
И. Павел (2010-10-05 15:42:00) [11]> в БД такое поле не предусмотрено
Можно использовать MemTableEh из EhLib. Тогда и после сортировки, и после удаления нескольких строк номера записей сохранятся.
Хотя скорее всего просто задача поставлена неправильно. Да и проще создать автоинкрементное поле в таблице.
Dennis I. Komarov (2010-10-05 15:09:00) [12]
> И о чем оно должно информатировать?
Сие дао не всем доступно. Для этого надо пройти долгий путь... ;)
Sergey13 (2010-10-05 14:54:00) [13]> [0] Jacksotnik © (05.10.10 14:06)
> в БД такое поле не предусмотрено
Может не спроста это?
> оно должно нести чисто информативный хорактер
И о чем оно должно информатировать?
ЗЫ: наверное еще и пропуски НЕДОПУСТИМЫ!? 8-)
Правильный$Вася (2010-10-05 14:19:00) [14]поле добавляется в датасет, а не dbgrid
dbgrid только для отображения, в нем нет данных
читать про Calculated Fields