Arkadaşlar şöyle bir sorunum var bunu yeni farkettim kayıt girdiğim zaman mesela bir kod açıyorum 400 kaydediyor sonra ikinci kod açıyorum 400 veriyorum kodu onuda açıyor ama üçüncü koduda aynı şekilde 400 veriyorum key volation hatası alıyorum ama burda iki tane 400 kodu açmış oluyor ne yapabilirim. Table de yıldız olarak işaretledim AfterPost ve OnPostError kısımlarına ;
procedure TForm3.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
ShowMessage('Bu Kayıt Mevcut!Lütfen Baska Kod Giriniz.');
Action:=daAbort;
DBEdit1.SetFocus;
end;
Şeklinde ekledim ama yinede olmadı yardım ederseniz çok sevinirim.
Hocam Primery Key kısmına asla tekrarlı kod girilemez. Ancak bu senin dediğin alan primery key değilse bir unique index tanımlayarak o kısma tekrarlı bir kayıt girilmesini engelleyebilirsin. Eğer firebird kullanıyorsan insert den önce çalışan triggerda yapacağın bir kontrolle bir hata verdirebilirsin.
Databases Desktop a giriyorum SISTEMFOR.DB çağırıyorum ve orda MUSKODU var Key kısmına yıldız yapıp kaydediyorum ve sonuna aynı kayıttan eklediğim zaman ; 400 ekli birtane daha ekliyorum 400 kabul ediyor ve üçüncüyü eklediğimde keyvolation diyor bunu engelleyemedim.Yardım ederseniz sevinirim.
Arkadaşlar MUSKODU ve MUSSIRANO keylerini yıldız yaptığım zaman bu durum ortaya çıkıyor ama sadece MUSKODU yıldızladığımda ikinci kayda izin vermiyor bunu nasıl önlerim iki alanda yıldızlı olmalı?
Paradox ile çalışmayalı çok oldu hatırladığım kadar yazayım. (Hatam olursa şimdiden özür)
MUSKODU ve MUSSIRANO alanlarına * koyarsan ikili bir pk oluşturmuş olursun. iki alanın combinasyonu pk olarak çalışır.
MUSKODU; MUSSIRANO
1; 1
1; 2
1; 3
Muhtemelen MUSKODU alanına 3 kezde 1 versen bu şekilde kv oluşmaz.
ama;
MUSKODU; MUSSIRANO
1; 1
1; 2
1; 1 yada 2
yazmaya kalkarsan kv oluşur.
Neden iki alanıda pk yapmak istiyorsun. MUSSIRANO ya göre sıralamak istersen, TQuery ile erişip basit bir SQL ifadesiyle oluşturabilirsin yada index kullanabilirsin (iki alana göre br index oluşturarak).
Acelen yoksa firebird e geçmeni hararetle tavsiye ederim.