Mükerrer Kayıt

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mükerrer Kayıt

Mesaj gönderen ozcank »

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 ;

Kod: Tümünü seç

procedure TForm3.Table1AfterPost(DataSet: TDataSet);
begin
DBISAVECHANGES((DATASET AS TBDEDATASET).HANDLE);
end;

Kod: Tümünü seç

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.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Veritabanı ve bu tablodaki primary key'in nedir. Hangi alanlar primary key?

Kolay gelsin.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

MUSKODU sadece.
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

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.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

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.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

bu arada Paradox7 kullanıyorum
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

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ı?
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

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.

Kolay gelsin.
Cevapla