{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение уникального номера, под которым можно вставить запись в таблицу
Эта функция может быть использована только для тех таблиц,
у которых первое поле - уникальное и ключевое, и при этом
больше ключевых полей нет. Первое поле может иметь как целый тип,
так и вещественный, но содержать только целые значения.
Вместо этой функции можно было бы использовать значение
Table.RecordCount если бы не было необходимости удалять
записи из таблицы. При удалении записи из таблицы возрастание
номеров идёт с разрывами. В принципе, эта проблема может быть
решена и возвращением номера, на единицу боьше последнего,
однако такой вариант плох для таблиц с количеством записей,
сопоставимым с максимальным значением переменной типа Cardinal
и/или для таблиц, с которыми часто совершаются операции
добавления и удаления записей. Предполагается, что первое
значение - 0, второе - 1 и т.д.
Зависимости: DBTables
Автор: Андрей Марин, andrei_marin@mail.ru, Москва
Copyright: Собственное написание Андрея Марина
Дата: 27 сентября 2002 г.
***************************************************** }function GetId(Tab: TTable): Cardinal;
var
i: Integer; // предполагается, что первое поле - целое, ключевое и при этом
s: string; // больше ключевых полей в этой таблице нетbeginif Tab.RecordCount = 0 thenbegin
Result := 0;
Exit
end;
s := Tab.IndexFieldNames; // сохранение индекса
Tab.IndexFieldNames := Tab.Fields[0].DisplayName;
// установка первого поля в качестве индексного
Tab.Last;
if Tab.Fields[0].AsInteger = Tab.RecordCount - 1 thenbegin// если числовой ряд полон
Result := Tab.RecordCount;
Tab.IndexFieldNames := s;
Exit
end;
Tab.First; // в противном случае поиск "дырки"
i := Tab.Fields[0].AsInteger;
if i > 0 then
Result := 0 // если ряд начинается не с нуля, то результат - нольelserepeat// собственно поиск
i := Tab.Fields[0].AsInteger;
Tab.Next;
Result := i + 1;
if Tab.Fields[0].AsInteger > i + 1 then
Break
until Tab.Eof;
Tab.IndexFieldNames := s
end;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Получение уникального номера, под которым можно вставить запись в таблицу", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!