Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Создание уникального поля 2

Delphi , Базы данных , Поля

Создание уникального поля 2

Автор: Serg

Вот мой вариант получения очередного уникального (возрастающего) ID

По полю FieldName строится уникальный индекс

Заодно скажу, что использование AutoInc не есть мудрое решение. А если надо пересобрать таблицы ?


{ Get max key value}
function quGetMaxID_(tbName,FieldName: String): LongInt;
begin
  with TQuery.Create(nil) do
    try
      DatabaseName := DBname;
      SQL.Add('SELECT MAX('+FieldName+') FROM ' + QuotedStr(tbName));
      Open;
      result := Fields[0].AsInteger + 1;
    finally
      Close;
      Free;
    end;
end;

{ insert new record and return new ID value}
function quInsertBlankSQL_(tbName,fName: string; var id: Longint): boolean;
var
  i: integer;
begin
  Result := False;
  for i:=1 to RepeateAccess do
  begin
    id := quGetMaxID_(tbName,fName);
    Result := quInsertKeySQL_(tbName,fName,id);
    if Result then
      Break;
  end;
end;

{ Insert record for  ID}
function quInsertKeySQL_(tbName, KeyField: string;
 KeyValue: Longint): boolean;
var
  i: integer;
  str: string;
begin
  Result := False;
  str := 'INSERT INTO '+tbName+' ('+ KeyField + ')'+
   ' VALUES ('+IntToStr(KeyValue)+')';
  for i:=1 to gRptAccess do
  begin
    Result := quExecuteSQL_(str);
    if Result then
      Break;
  end;
end;

function quExecuteSQL_(SQLstring: string): boolean;
begin
  with quCreateTmp_(SQLstring) do
  begin
    try
      ExecSQL;
      Result := True;
    except
      on E: Exception do
      begin
        Result := False;
      end;
    end;
    Free;
  end;
end;

function quCreateTmp_(SQLstring: string): TQuery;
begin
  Result:= TQuery.Create(nil);
  with Result do
  begin
    DatabaseName := DBname;
    SQL.Text := SQLString;
  end;
end;

Статья Создание уникального поля 2 раздела Базы данных Поля может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Поля ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
29.03.2024 05:27:25/0.033627033233643/0