Delphide SQL Primary Key kayıt aynı ise hata mesajı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Delphide SQL Primary Key kayıt aynı ise hata mesajı
Öncelikle Herkese Slmlar.Delphide Sql server 2005 veritabanlı bi program yazıyorum.Adoquery ile kayıt yaptırıyorum.URUNKODU bölümünü primary key olarak atadım ve bu alana 2 kez aynı kod girersem programı hata vererek kapatıyor.Örneğin;1 kodlu bir kayıtım var daha sonra yeni bir kayıt yapmak için ürün kodunu 1 yazıp kaydete bastığımda program kilitlenip hata verip kapanıyor. Benim istediğim şey ise aynı kodu 2 kere kayıt etmeye çalıştığımda bunu programda hata mesajı olarak vermesini ve programın kapanmamasını istiyorum.Örneğin;'Ürün Kodunu Değiştiriniz Bu Kodda Ürün Bulunmaktadır' diye mesaj versin istiyorum.
Re: Delphide SQL Primary Key kayıt aynı ise hata mesajı
Veritabanında Primary Key tanımlanmış alana aynı veriyi giremezsiniz.Anahtar olarak tanımladığınız için anahtar alanlar unique dir.Sana bir fonksiyon yazıyorum bunu kullnarak istediğin mesajı oluşturabilirsin.Fonksiyonu başka yerlerdede kullanabilceğini düşünerek biraz daha geniş kullanımlı hazırladım.İnşallah işini görür.
Bu kodu kayıt yapmadan önce çalıştırman gerekli.
Kod :
function SearchFromDB(Q:TAdoQuery;TabloAdi,KontrolAlani,KontrolVerisi:String):Boolean;
begin
Result:=False;
with Q do
begin
Close;
Sql.Clear;
Sql.Add('SELECT '+ KontrolAlani +' FROM '+ TabloAdi +' WHERE '+KontrolAlani+'=:'+KontrolAlani);
Parameters.ParamByName(KontrolAlani).Value:=KontrolVerisi;
Open;
if RecordCount>0 then Result:=True;
end;
end;
Delphi kodunda ise kayıt yapmadan önce :
if SearchFromDB(Kullancağın query,'insert yapcagın tablo','kontrol alanı senin için urun kodu',girdiğin ürün kodu(Örneğin edit1.Text)) then
begin
showMessage('Bu ürün koduna ait ürün bulunmakta!!!');
Exit;
end;
///false ise devam et
Kayıt işlemi
Eğer fonksiyon True dönerse yukardaki mesajı verir ve procedureden çıkar eğer false gelirse işleme devam eder.
Bu kodu kayıt yapmadan önce çalıştırman gerekli.
Kod :
function SearchFromDB(Q:TAdoQuery;TabloAdi,KontrolAlani,KontrolVerisi:String):Boolean;
begin
Result:=False;
with Q do
begin
Close;
Sql.Clear;
Sql.Add('SELECT '+ KontrolAlani +' FROM '+ TabloAdi +' WHERE '+KontrolAlani+'=:'+KontrolAlani);
Parameters.ParamByName(KontrolAlani).Value:=KontrolVerisi;
Open;
if RecordCount>0 then Result:=True;
end;
end;
Delphi kodunda ise kayıt yapmadan önce :
if SearchFromDB(Kullancağın query,'insert yapcagın tablo','kontrol alanı senin için urun kodu',girdiğin ürün kodu(Örneğin edit1.Text)) then
begin
showMessage('Bu ürün koduna ait ürün bulunmakta!!!');
Exit;
end;
///false ise devam et
Kayıt işlemi
Eğer fonksiyon True dönerse yukardaki mesajı verir ve procedureden çıkar eğer false gelirse işleme devam eder.