![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Номер записи [D6, Paradox]
13-ый © (2004-01-27 12:17:00)Есть таблица(Table Не Query-это принципиально) необходимо после фильтрации данных в этой таблице вычислить номер каждой записи.
Т.е. если было 6 записей ,а после фильтрации осталось 3,то и соответственно номера должны идти по-порядку (в первом случае от 1 к 6,а во втором от 1 к 3 не смотря ни на что)
Некто (2004-01-28 12:26:00) [41]2 Anatoly Podgoretsky
Существует единственный критерий нужности: если человек задал вопрос - значит, ему это нужно.
Некто (2004-01-28 12:22:00) [42]OnDrawColumnCell
div (2004-01-28 12:15:00) [43]мда уж... чушь написал и сам не понял... если кто скажет как это можно сделать поставлю пиво :)))
2 jack128 © (28.01.04 10:48) [10] - это тож не то что он хочет...
Volodya_ (2004-01-28 12:13:00) [44]2 Некто (28.01.04 11:26) [11]
На какой точно обработчик вешать?
Anatoly Podgoretsky (2004-01-28 12:13:00) [45]О нужности/ненужности можно много говорить, но данный номер за собой ничего не несет.
Некто (2004-01-28 12:03:00) [46]2 Anatoly Podgoretsky
"Если звезды зажигаются, значит, это кому-то нужно..." (С)
Anatoly Podgoretsky (2004-01-28 11:59:00) [47]Забыть об этом, как о не нужной вещи и из за отсутствия реализации этого в базе данных.
Некто (2004-01-28 11:26:00) [48]В обработчике прорисовки Грида выводить номер текущей записи.
jack128 (2004-01-28 10:48:00) [49]и что получилось?
ЗЫ
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
Dataset.FieldByName('RowNo').AsInteger := DataSet.RecNo;
end;
div (2004-01-28 10:42:00) [50]2 Плохиш_
пробовал...
Плохиш_ (2004-01-28 10:35:00) [51]>div © (28.01.04 10:19) [7]
Сам-то пробовал?
div (2004-01-28 10:19:00) [52]Напиши обработчик события OnCalcFields примерно так (предполагая, что твое калькулироемре поле называется 'RowNo'):
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
{$J+} // - в D7 разрешает изменять типизированные константы
const
RowNo: integer = 0;
begin
if DataSet.RecNo = 1 then
RowNo := 0;
RowNo := RowNo + 1;
DataSet.FieldBayName('RowNo').AsInteger := RowNo;
end;
VAleksey (2004-01-27 12:47:00) [53]
> 13-ый (27.01.04 12:32) [4]
Так ты объяснишь ЗАЧЕМ это нужно иным образом, кроме "необходимо"?
> Это необходимо для отображения номера учащегося в таблице
> студентов.
Это - не номер учащегося.
Sandman25 (2004-01-27 12:37:00) [54]Для Query можно добавить поле:
select cast(0 as integer) nomer, T.*
from table T
А затем каждый раз после фильтрации пробегаться по DataSet и присваивать новое значение nomer-у. Только надо будет использовать CashedUpdates = true.
13-ый (2004-01-27 12:32:00) [55]Да нет это необходимо.Должо быть поле в котором отображение должно быть номера каждой записию
Sandman25 (2004-01-27 12:28:00) [56]Я так и думал. Но при фильтрации номера остаются прежними...
И все-таки, зачем это нужно? Зачем номер студента отображать? Общее количество недостаточно?
13-ый (2004-01-27 12:26:00) [57]Это необходимо для отображения номера учащегося в таблице студентов.
Делаю это при помощи вычисляемового поля в котором Value:=Table1.RecNo;
Sandman25 (2004-01-27 12:23:00) [58]Зачем это нужно?
Добиться этого довольно сложно, особенно с учетом фильтрации.