Witam,
W jaki sposób uzyskać 'id' ostatnio dodanego rekordu do bazy MS Access.
tabela users ma pola (id, imie, nazwisko), id jest oczywiście kluczem, 'autoincrement'.
Rekord dodaję obecnie następująco:
ADOCommand.CommandText := 'INSERT INTO users (imie, nazwisko) VALUES (:imie, :nazwisko);'
with ADOCommand.Parameters do begin
ParamByName('imie').Value := 'Jan';
ParamByName('nazwisko').Value := 'Kowalski';
end;
ADOCommand.Execute();
Wszystko ładnie działa.
Doczytałem w sieci, że ID ostatnio dodanego rekordu w MS Access jest otrzymywane przez SELECT @@IDENTITY dodane
zaraz za zapytaniem.
Jednak:
ADOCommand.CommandText := 'INSERT INTO users (imie, nazwisko) VALUES (:imie, :nazwisko); SELECT @@IDENTITY;'
Powoduje błąd: "Po końcu instrukcji SQL znaleziono znaki."
Próbowałem użyć ADODataSet (zwraca wynik) zamiast ADOCommand
ADODataSet.CommandText := 'INSERT INTO users (imie, nazwisko) VALUES (:imie, :nazwisko); SELECT @@IDENTITY;'
with ADODataSet.Parameters do begin
ParamByName('imie').Value := 'Jan';
ParamByName('nazwisko').Value := 'Kowalski';
end;
ADODataSet.Open;
Komunikat z błędem taki sam: "Po końcu instrukcji SQL znaleziono znaki."
Tutaj jednak bez 'SELECT @@IDENTITY' otrzymuję również inny błąd:
"ADODataSet: CommandText does not return a result set."
czyli trop dobry - zwraca mi się wynik dzięki 'SELECT @@IDENTITY'
tylko jak go użyć i zapisać w zmiennej? i jak zlikwidować błąd "Po końcu instrukcji SQL znaleziono znaki."
Dzięki za wszelkie sugestie. Pozdrawiam.