Delphi/Son Kaydın İd’sini Scope İdentity İle Alma//Cem Adrian

BÖKE

Yaşayan Forum Efsanesi
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 id’sine 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 id’sine 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 id’si 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;
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.