Автоматическая генерация ID (Код) в Access на Delphi


Буквально пару дней назад столкнулся с такой проблемой, что при вставке новых записей в таблицу, несмотря на то, что поле объявлено как счётчик, является идентификатором, первичный ключ (primary key) так называемый ID или идентификатор, не работает вернее, на делает того что нужно, когда мы делаем запрос на вставку новой записи. Как это решается:
Объявляем переменную целого типа? например:
у нас есть таблица Users
в ней есть поля ID, Login, Password
Кидаем на форму компонент ADOQuery, устанавливаем связи и так далее, чтобы можно было выполнять запросы (смотрим в блоге, по меткам…)
var
MyID: Integer;

и далее пишем там где собираемся использовать запрос на вставку

ADOQuery1.Active:=False;
ADOQuery1.SQL.Text:='Select ID from Users';
ADOQuery1.ExecSQL;

Теперь нам нужно передвинуть курсор на последнюю запись:
ADOQuery1.Last;

И теперь получаем наш новый ID
MyID:=1+StrToInt(ADOQuery1.FieldByName('ID').AsString);

А вот уже теперь, мы можем использовать нашу переменную, для вставки ID
ADOQuery1.Active:=False;ADOQuery1.SQL.Text:='Insert InTo Users (ID, Login, Password) VALUES('+
IntToStr(MyID)+','+
QuotedStr('Логин нового пользователя')+','+
QuotedStr('Новый пароль')+')';ADOQuery1.ExecSQL;

 

Вот собственно и всё…