Kayit Mevcut mu ?

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
prenses_ayse
Üye
Mesajlar: 7
Kayıt: 04 Tem 2007 02:44

Kayit Mevcut mu ?

Mesaj gönderen prenses_ayse »

Sevgili arkadaşlar ;

Paradox veri tabanında hazırlamış olduğum tablolara program aracılığı ile veri girişi yapıyorum fakat ortada şöyle bir sorun var ; Bu kayıt daha önce girilmiş miydi ?

Hazırladığım arayüzde;
Kayıt girişi yapabilmek için :
a - 10 adet DBEdit nesnesi
b - 1 Adet DbGrid nesnesi
c - 1 Adet DBNavigator nesnesi bulunmaktadır.


Malumunuz olduğu üzere tabloya herhangi bir kayıt girmeden önce (+ yahut insert butonu ile) boş bir veri alanı oluşturmamız gerek daha sonra bu boş veri alanlarına DBEdit 'ler vasıtası ile veri girişi yapıyoruz sorun da tam da bu veri girişlerinin bitip (Post butonu) kaydedilmesi sırasında meydana geliyor yani bu kayıt daha önceden var mıydı ?

Bunun kontrolünü yapmaya çalışmama rağmen herhangi bir sonuç elde edemedim. Denediğim yollardan biri şu şekilde idi ve sanırım ki yanlış bir yol.

Kod: Tümünü seç

procedure Tanaform.DBNavigator1BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
BEGIN
if ( Button = nbPost ) then
 begin
  if Datamodule2.musteri.locate('madi' , DBEdit2.text , [])  then
  begin
   Abort;
  end;
  // ...
 end;
END;

Bana daha mantıklı , geçerli bir yol önermeniz mümkün müdür ? Ben bu yolla herhangi bir sonuç elde edemedim.

Şimdiden teşekkürler ...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ayrı bir query ile kontrol yapabilirsin.
veya tablodaki ilgili alan için uniq index tanımlarsın.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
prenses_ayse
Üye
Mesajlar: 7
Kayıt: 04 Tem 2007 02:44

Mesaj gönderen prenses_ayse »

Merhaba ,

Ayri bir query olarak yaptim ne kadar islevsel oluri onu da zaman gosterir.

Yardimlariniz icin tesekkurler ...
danaci
Üye
Mesajlar: 178
Kayıt: 24 May 2005 01:45

Mesaj gönderen danaci »

dbedit2 nin on exitine eventine,
select count(*) sayac from musteri where madi=:dbedit2.text;
if sayac > 0 then
begin
böyle bir kayıt mevcut olduğunda yapılacak işlemler;
end
else
begin
diğer yapılması gerekenler;

end;
Kullanıcı avatarı
tanerileri
Üye
Mesajlar: 55
Kayıt: 06 Tem 2007 11:30

daha önce forumda geçmişti.

Mesaj gönderen tanerileri »

procedure Tdm.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
begin
MessageDlg('Bu AdayNo Numarası Daha Önce Verilmiş'+#13+#10+
'Aynı Numara Tekrar Verilemez!!', mtWarning, [mbOK], 0);
Abort;
end;
anaFrm.DBEdit1.SetFocus;// key olan alanın dbedit'i
end;

bu yordamı kullanabilirsin. (table'ın onposterror olayında.)

tabi unutmadan , tablonda anahtar kolonlar olmalı , o yoksa bu kod iş yapmaz
Cevapla