C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Нумерация строк в TBDGrid
idhas
Отправлено: 11.10.2005, 15:17


Ученик-кочегар

Группа: Участник
Сообщений: 17



ВСТУПЛЕНИЕ: Есть очевидная проблема, которая должна решаться быстро и легко, т.к. с этим встречается каждый первый программирующий базы данных.

УСЛОВИЯ: есть DBGrid в который помещается выборка служащих скажем получивших з/п их можно сортировать по фамилии и по з/п.
ЗАДАЧА: нужно добавить колонку в которой будет нумерация выбранных строк независимо от сортировки.

ПРИМЕЧАНИЕ: нумерация так же должна отображаться в QuickReport
(с)

Отредактировано idhas — 11/10/2005, 15:22
Gedeon
Отправлено: 11.10.2005, 15:25


Ветеран

Группа: Модератор
Сообщений: 1742



Просите эти данные у сервера
olegenty
Отправлено: 11.10.2005, 16:28


Ветеран

Группа: Модератор
Сообщений: 2412



а можно и без сервера, но тогда всё будет зависеть от компонентов. так, при использовании TMemTableEh, можно добавить Calculated поле, расчёт которого производить как
CODE

   Field->Value = MemTable->RecNo;
   // или Field->Value = MemTable->RecNo(); — исходника под рукой нет, но это рабочий код.


и всё, счастье наступает автоматически. а, что бы Ипполит не говорил, счастье надо планировать. ибо это не пункт назначения, а способ путешествовать smile.gif.
idhas
Отправлено: 11.10.2005, 16:31


Ученик-кочегар

Группа: Участник
Сообщений: 17



Если просить их у BDE через RecNo (или что имеллось в виду под "Просите эти данные у сервера"?), то получается, что он выдаст номер записи в таблице, а не в гриде. Т.е., если у таблицы включен фильтр, то в ней нумерация будет не с 1-цы, а скажем что-то типа:
123
241
412
567
Опять же, если создать поле типа Calculated и присваивать ему номера инкриментом (какой-то глобальной переменной), то она часто увеличивается при "ненужных" событиях, приходится ее обнулять.
Возможно можно как-то этого избежать? Имеется в виду стандартными компонентами.

Отредактировано idhas — 11/10/2005, 16:37
idhas
Отправлено: 11.10.2005, 16:49


Ученик-кочегар

Группа: Участник
Сообщений: 17



У компонента TTable нашлось замечательное св-во BeforeScroll
В нем и стоит обнулять эту глобальную пер-ую (точнее устанавливать в 1).
Пока все не перетыкаешь — не поймешь, что делать... (с)
olegenty
Отправлено: 12.10.2005, 06:24


Ветеран

Группа: Модератор
Сообщений: 2412



TMemTableEh нумерует корректно, ничего и никогда сбрасывать не нужно.
greyich
Отправлено: 13.10.2005, 12:44


Дежурный стрелочник

Группа: Участник
Сообщений: 45



QUOTE (olegenty @ 12/10/2005, 06:24)
TMemTableEh нумерует корректно, ничего и никогда сбрасывать не нужно.

кстати, а что Вы можете сказать про EhLib 4. Я пока не ставил но уже судя по хелперу видны значительные доработки.
olegenty
Отправлено: 13.10.2005, 13:03


Ветеран

Группа: Модератор
Сообщений: 2412



пока ничего не скажу. сегодня поставил и пока снёс. для BCB6 вошли не все компоненты (TDBXDataDriverEh отсутствует в палитре компонентов). Дмитрий обещал исправить. Далее — 3.6с — последняя бесплатная версия. Начиная с версии 4.0 исходники поставляются только в платной версии, а так — она Shareware.

вообще же, версия 4.0 — первая версия, куда полноценно вошел набор компонентов TMemTableEh и TXXXDataDriverEh. т.е. этот набор компонентов достиг той степени совершенства, при которой его стало возможным включить в пакет поставки.

Вернуться в Работа с базами данных в C++Builder