Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

AutoInc   Найти похожие ветки 

 
Maza   (2003-08-29 16:08) [0]

Народ!!!
Можно ли реализовать в АвтоИнк такую фишку:
1 напр. есть 5 строк в DBGrid, столбец "№" содержит нумерацию данных строк (от 1 до 5).
2 потом удаляется строка №2, 3, т.е. "№" содержит 1, 4, 5, а как сделать 1, 2, 3?

P.S. В принципе, мона и без АвтоИнк


 
Stas ©   (2003-08-29 16:14) [1]

Можно сделать перенумерацию строк в цикле.

Только это будет долго.


 
Vlad ©   (2003-08-29 16:21) [2]

Без извращений не получится.
Вопрос - а для чего это надо ?
Может тебе кто нибудь по умней что-то посоветует ?


 
GRAND ©   (2003-08-29 16:22) [3]

2 Maza (29.08.03 16:08):

А зачем? Ведь на клиенте Table1.RecNo всегда тебе вернет порядковый номер записи. А если надо в гриде, например, показывать номер КАЖДОЙ записи, то создай вычисляемое поле и в OnCalcField пропиши Table1MYAUTOINC.AsInteger:=Table1.RecNo
И все дела...


 
Dred2k ©   (2003-08-29 16:47) [4]

> Stas © (29.08.03 16:14) [1]

С AutoInc такого не сделаешь.
Нужно будет создать новую таблицу.
А вообще, я этот тип данных не советую использовать - глючит, зараза. Порой выдает key violation при вставке, таблица слетает.


 
MsGuns ©   (2003-08-29 16:59) [5]

Событие OnGetText поля НД, на которое ссылается колонка грида, предназначенная для №. При этом само поле не отображается, а вместо него будет:

Text := Format("%6d",[RecNo]);

Format - чтоб выровнить на правую границу


 
Langolier   (2003-08-29 22:05) [6]

2Maza
Используй RecNo... Только используй в перерисовке DBGrid"а:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DBGrid1.Canvas do
begin
if Column.Index = 0 then
begin
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, ADOTable1.RecNo);
end
else
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;


В DBGrid"е не забудь добавить пустой столбец и перетащи его в начало: Column.Index = 0...
P.S. Посмотри как это работает и при переиндексации таблицы, и при удалении промежуточных записей... ;-) Удачи...


 
Anatoly Podgoretsky ©   (2003-08-30 00:25) [7]

Не стоит надеяться на RecNo, это хоть и логический тип для Парадокса, но совсем не работает для фильтров. Физических как в dBase нет.


 
Langolier ©   (2003-08-30 01:00) [8]

Данный код служит ТОЛЬКО для нумерации строк при визуализации (во какое словцо-то..) таблицы в DBGrid"е... И RecNo по барабану отфильтрована это таблица или проиндексирована... Я такую конструкцию применил для Detail таблицы, причем ее можно индексировать по любому полю, нумерация эта будет все равно 1, 2, 3, и т.д. (DB MS Access) ;-)


 
Anatoly Podgoretsky ©   (2003-08-30 01:09) [9]

Так не про Акцесс же спрашивают, а про Парадокс, вот попробуй поставить фильтр и посмотри, будет ли последовательная нумерация или нет.


 
Langolier ©   (2003-08-30 01:19) [10]

Попробую... :-)


 
Langolier ©   (2003-08-31 23:23) [11]

Маленкое исправление к вышесказанному...

TextOut(Rect.Left, Rect.Top, IntToStr(ADOTable1.RecNo));

С Парадоксом эта структура тож работает, но маленькое уточнение: при фильтрации DBE видит отфильтрованные записи и в итоге выдает номера типа: 2, 3, 6, 7, и т.д. При связи Master-Detail и при Сортировки все проходит отлично...
При использовании ADO даже при фильтрациии итог : 1, 2, 3, и т.д.
ЗЫ Повторюсь, данный алгоритм (см. выше) только для визуализации... :-)



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
11-71568
Puke Zero
2003-01-16 23:29
2003.09.22
PopupMenu


8-71760
LoMik
2003-05-24 21:57
2003.09.22
Изменить уровень громкости


14-71855
Карелин Артем
2003-09-01 13:56
2003.09.22
Парковка по-нашему.


14-71885
Zheks
2003-08-28 21:31
2003.09.22
А чё убрали


14-71932
VictorT
2003-08-29 12:28
2003.09.22
Пожелайте удачи