Текущий архив: 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.46 MB
Время: 0.011 c