Delphide SQL Primary Key kayıt aynı ise hata mesajı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
yalo07
Üye
Mesajlar: 4
Kayıt: 08 Kas 2010 02:31

Delphide SQL Primary Key kayıt aynı ise hata mesajı

Mesaj gönderen yalo07 »

Ö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.
xdelphix
Üye
Mesajlar: 9
Kayıt: 25 Kas 2010 10:21

Re: Delphide SQL Primary Key kayıt aynı ise hata mesajı

Mesaj gönderen xdelphix »

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.
Cevapla