- 20 Ağu 2016
- 8,754
- 411
Delphide yapmış olduğumuz insert işlemi sonucunda o an insert işlemi gerçekleşmiş olan kaydın idsine ihtiyaç duyduğumuz anlar çok fazladır bu gibi durumlarda kısa bir sql sorgusuyla sorunu kolaylıkla giderebilmekteyiz.
Delphide yapmış olduğumuz insert işlemi sonucunda o an insert işlemi gerçekleşmiş olan kaydın idsine ihtiyaç duyduğumuz anlar çok fazladır bu gibi durumlarda Max(ID) her ne kadar alternatif bir çözüm gibi gözüksede çoklu kullanıcıya sahip yazılımlarda karışma olasılığı yüksek bir yöntemdir.
Bu sorunu aşmak için aşağıdaki örnekleri dikkatlice incelemenizi tavsite ediyorum örnekden kısa bahsedecek olursa TAdoQuery Nesnesiyle yapmış olduğumuz basit bir insert işlemi sonucunda hazırlamış olduğumuz GetLastID fonksiyonu ile son kaydın idsi integer değer olarak fonksiyon tarafından geri gönderilmektedir.
Delphide yapmış olduğumuz insert işlemi sonucunda o an insert işlemi gerçekleşmiş olan kaydın idsine ihtiyaç duyduğumuz anlar çok fazladır bu gibi durumlarda Max(ID) her ne kadar alternatif bir çözüm gibi gözüksede çoklu kullanıcıya sahip yazılımlarda karışma olasılığı yüksek bir yöntemdir.
Bu sorunu aşmak için aşağıdaki örnekleri dikkatlice incelemenizi tavsite ediyorum örnekden kısa bahsedecek olursa TAdoQuery Nesnesiyle yapmış olduğumuz basit bir insert işlemi sonucunda hazırlamış olduğumuz GetLastID fonksiyonu ile son kaydın idsi integer değer olarak fonksiyon tarafından geri gönderilmektedir.
Kod:
//Yeni bir kayıt...
var
LastID: Integer;
Query: TADOQuery;
begin
Query.Active := False;
Query.SQL.Clear;
Query.SQL.Append('INSERT INTO Table (Spalte) VALUES (Value)');
Query.ExecSQL;
//Buradaki satır ile yukarıdaki açıklamamızda belirtmiş olduğumuz gibi TAdOQuery nesnesini GetLastID fonksiyonuna parametre ile geçtikten sonra insert işlemi yapılan kaydın id'si "SELECT @@IDENTITY" sql sorgusu ile bize geri dönderilmektedir.
LastID := GetLastID(Query);
end;
//GetLastID Fonksiyonu
function GetLastID(var Query: TADOQuery {or TQuery}): Integer;
begin
result := -1;
try
Query.SQL.clear;
{Insert işlemi yaptığımız kaydın id'sini "SELECT @@IDENTITY"
sorgusuyla almaktayız}
Query.SQL.Add('SELECT @@IDENTITY');
Query.Active := True;
Query.First;
result := Query.Fields.Fields[0].AsInteger;
finally
Query.Active := False;
Query.SQL.clear;
end;
end;