Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Порядковый номер в 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо