Существует несколько способов задавать в таблице уникальный ID.
Вы можете использовать поле с автоприращением
Этот метод не очень надежен. Если ваша таблица каким-то образом испортится, и
вам понадобиться ее пересобрать, автоинкрементальные поля будут перенумерованы.
Хотя это легкий способ для ситуации, когда вы не ссылаетесь на id таблицы в
других таблицах, но это не очень мудрое решение в других случаях.
Вы можете использовать ID-таблицу
Если у вас имеется приложение, где нескольким таблицам необходимы уникальные
ID, создайте ID-таблицу с двумя полями:
Table Name A (первичный ключ)
Last Id N
В методе BeforePost таблицы, которой необходим уникальный ID,
делайте примерно так:
TableBeforePost(Sender: TObject)
var
Id: Integer;
beginwith TTable(Sender) dobegin{проверяем, существует ли ID для этой записи}if Field[0].AsInteger = 0 thenbegin{ищем имя таблицы в ID-Таблице}
IDTable.FindKey[Name]
{извлекаем последний Id - подразумеваем блокировку записи}
Id := IDTable.FieldByName["Last Id"].AsInteger;
Inc(Id);
{записываем новый Id в ID-таблицу - подразумеваем разблокировку таблицы}
IDTable.FieldByName["Last Id"].AsInteger := Id;
IDTable.Post;
{записываем извлеченный ID в вашу таблицу}
Field[0].AsInteger := Id;
end;
end;
end;
Если вы поместите этот код в обработчик события таблицы BeforePost, вы
убедитесь в том, что все ID будут последовательными (без "дырок"). Недостаток:
если пользовать во время попытки добавления новой записи вдруг передумает, вы
будете иметь запись с заполненным только полем ID.
В случае, если вы решили воспользоваться данным способом (последовательные
ID), поместите приведенный выше код в обработчик события таблицы OnNewRecord.
Вы можете использовать ID-файл
Используйте те же принципы, что и в предыдущем способе, но вместо ID-таблицы
используется ID-Файл. Это дает преимущество за счет более высокой скорости
работы, но в многопользовательской среде вы должны сами заботиться о блокировке
записей.
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Создание уникального ID для новой записи", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!