Delphi’de Her Kayıttan Bir Tane Ekleme
Delphi’de, bir veri kaynağına yeni kayıtlar eklerken, yinelenen kayıtların eklenmesini önlemek için her kayıttan yalnızca bir tane eklemeniz gerekebilir. Bu, benzersiz anahtarlar kullanmak, veri bütünlüğünü korumak ve veri tabanında yinelenen verileri önlemek için önemlidir.
Benzersiz Anahtarlar Kullanma
Yinelenen kayıtları önlemenin en etkili yolu, veri tabanında benzersiz anahtarlar kullanmaktan geçiyor. Benzersiz anahtarlar, her kaydı benzersiz bir şekilde tanımlayan bir sütun kümesidir. Bir kayıt eklerken, benzersiz anahtar sütunlarındaki değerler veri tabanında zaten mevcutsa, yeni kayıt eklenmez.
Delphi’de benzersiz anahtarlar, TTable.KeyFields
mülkünü kullanıp benzersiz anahtar sütunlarını belirleyerek tanımlanabilir. Örneğin:
delphi
Table1.KeyFields := [Field1, Field2];
Veri Bütünlüğü Kuralı Oluşturma
Benzersiz anahtarlar kullanmak her ne olursa olsun yinelenen kayıtları önleyemeyebilir. Bu duruma, benzersiz anahtar sütunları boş değerler içerebiliyorsa, veri tabanında yinelenen kayıtlar eklenebilir.
Bu sorunu önlemek için, veri bütünlüğü kuralı oluşturabilirsiniz. Veri bütünlüğü kuralları, veri tabanına eklenen verilerin belirli kurallara uyması gerektiğini belirtir. Delphi’de veri bütünlüğü kuralları, TTable.Constraints
mülkünü kullanıp yeni bir kural ekleyerek tanımlanabilir.
Örneğin, Field1
sütununun boş değerlere sahip olmaması gerektiğini belirten bir veri bütünlüğü kuralı aşağıdaki gibi tanımlanabilir:
delphi
Table1.Constraints.Add(TNotNullConstraint.Create(Table1, 'Field1'));
Veri Kaynağı Olaylarını Kullanma
Delphi, veri kaynağı olaylarını kullanıp yeni kayıt eklendiğinde tetiklenen olayları işleyerek yinelenen kayıtları önlemenize olanak tanır. En sık kullanılan veri kaynağı olayları şunlardır:
OnBeforeInsert
: Yeni bir kayıt eklenmek üzereyken tetiklenir.OnAfterInsert
: Yeni bir kayıt başarı ile eklendikten hemen sonrasında tetiklenir.
Bu olayları işleyerek, yeni kayıttaki benzersiz anahtar sütunlarının değerlerini kontrol edip yinelenen kayıtlar varsa eklemeyi iptal etmek için kod ekleyebilirsiniz.
Örnek Kod
Aşagıdaki örnek kod, TTable
veri kaynağı kullanıp her kayıttan yalnızca bir tane ekleyen bir Delphi uygulaması göstermektedir:
“`delphi
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
// Benzersiz anahtar sütunlarındaki değerleri kontrol et
if Table1.FieldValues[‘Field1’] in Table1.DataSet then
begin
// Yinelenen kayıt bulundu, eklemeyi iptal et
DataSet.Cancel;
ShowMessage(‘Yinelenen kayıt eklenemiyor.’);
end;
end;
procedure TForm1.Table1AfterInsert(DataSet: TDataSet);
begin
// Yeni kayıt başarı ile eklendi, benzersiz anahtar sütunlarındaki değerleri veri tabanına kaydet
Table1.FieldValues[‘Field1’] := Table1.FieldValues[‘Field1’];
end;
“`
Faydalı Siteler ve Kaynaklar