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 dönderilmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | //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; |