Cześć,
chcę dodać do bazy Microsoft SQL Server rekord (FireDAC). Baza posiada pole ID z auto inkrementacją.
Chciałbym aby dodając rekord w jednym z pól wpisać od razu tą wartość auto inkrementacji.
Dodawanie rekordu (wersja oczywiście mocno uproszczona ale pokazuje mój problem):
try
with frmDM.qryTemp, SQL do
begin
frmDM.trnTransaction.StartTransaction;
Close;
Clear;
Add('INSERT INTO Grupy (Skrot, Nazwa, NIP)');
Add('VALUES (:Skrot, :Nazwa, :NIP)');
if edtSkrot.Text = '' then
ParamByName('Skrot').AsString := IntToStr('wartość auto inkrementacji); // tutaj mam problem
else
ParamByName('Skrot').AsString := Trim(edtSkrot.Text);
ParamByName('Nazwa').AsString := Trim(edtNazwa.Text);
ParamByName('NIP').AsString := edtNIP.Text;
ExecSQL;
frmDM.trnTransaction.Commit;
end;
with frmDM.qryTemp, SQL do // tutaj sobie odczytuję wartość auto inkrementacji dla późniejszych potrzeb, ale to już po ptakach
begin
Close;
Clear;
Add('SELECT @@IDENTITY');
Open;
First;
rekord := frmDM.qryTemp.Fields[0].AsInteger;
end;
except
frmDM.trnTransaction.Rollback;
end;
Znacie jakiś sposób żeby poznać wartość auto inkrementacji przed użyciem jej? No i musi to być odporne na pracę wielostanowiskową.