aynı kayıt var ise

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

aynı kayıt var ise

Mesaj gönderen zengin »

merhaba arkadaşlar benim kücük bir sorunum var
table1 de yapmış oldugum isim veya plaka alanına aynı kayıt var ise
aynı kayıttan birdaha kayıt yapmak istemiyorum bana böyle bir kod önerebilirmisiniz lütven saygılarımla
Zengin
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

doğru foruma taşındı....

ya bu kadar zor mu bu olay anlıyamıyorum :o Arkadaşlar şu Forum Kuralları nı bir okuyun ve anladığınızdan emin olun. Sert tedbirler almak istemiyorum :twisted:
Kullanıcı avatarı
altunway
Üye
Mesajlar: 217
Kayıt: 11 Haz 2003 09:16
Konum: İstanbul
İletişim:

Mesaj gönderen altunway »

S,A

Mesela Plaka alanını varsayarsak

Kod: Tümünü seç

procedure TForm1.Edit1Exit(Sender: TObject);
var
  bul: boolean;
begin
  bul := table1.Locate('Plaka', edit1.Text, []);
  if bul = true then
  begin
    Showmessage('Plaka Kayıtlı');
  end;
end;

Ben Boyle Yapıyorum.Edit1 in Exit olayında locate metodunu kullanıyorum.. kolay gelsin umarım yardımcı olabilmişimdir.
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Dikkat edin kızdırmayın Mustafa Abiyi sonra olan bize olacak.

Cevaba gelince Hangi veri tabanı sorusu önemli tabi ama genel olarak cevaplamak gerekirse benzersiz index tanımlayabilkrisin işini görür ama bu durumda ikinci kayıt yapılmak istendiği anda veri tabanının ilgili mesajı gelecektir ekrana. Bundan kullanıcı çok hoşlanmayabilir çünkü access te ben yaptığımda hata mesajı bi sayfaya yakın yer tutuyordu ve kullanıcı bir şey anlamıyordu.

İkinci çözüm olarak ilgili editin bence en uygunu onexit eventine bir SQL sorgusu yazarak ya da locate ile aratarak çözebilirsin. eğer kayıt varsa bu kat-yıt daha önce yapıldı gibi bi mesaj işini görür...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Mesaj gönderen zengin »

öncelikle mustafa beyden özür dilerim aslında sizleride anlıyorum ? yanlış yere mesaj attıgım icin kusura bakmayın hocam ?


konuya gelince önceden girmiş oldugum bir plakayı tekrar girmek istemiyorum
Zengin
Kullanıcı avatarı
altunway
Üye
Mesajlar: 217
Kayıt: 11 Haz 2003 09:16
Konum: İstanbul
İletişim:

Mesaj gönderen altunway »

Tamam işte arkadasım :) gonderdigim kod o işe yarıyor denedin mi ?

kullanıcı yeni plaka girerken locate metodu ile veritabanını taratıyoruz eger aynı plakadan onceden varsa hata veriyor..

gonderdigim kod işini gormeli:) cunku benim işimi goruyor..

Selametle
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Bence index koyarak kontrol etmelisin, aynı kayıttan 2 tane oluştumu database hata gönderecektir.
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Mesaj gönderen zengin »

altunway kardeşim kodun dogru fakat hata verdiginde yinede plakayı kaydediyor ozaman kaydetmek veya kaydetmemek icin bir secenek vermek gerekiyor

procedure TForm1.Edit1Exit(Sender: TObject);
var
bul: boolean;
begin
bul := table1.Locate('Plaka', edit1.Text, []);
if bul = true then
begin
Showmessage('Plaka Kayıtlı');

(buraya bir secenek vermek gerekiyor hata verdigi an kayıt yapmak yada silmek icin ? saygılarımla
end;
end;
Zengin
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

kaydedilmesini hiçbir şekilde istemediğine göre burada seçenek değil "abort" ya da "cancel" diyerek iptal etmen gerekiyor...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

zengin arkadaşım hata verdiğindede kaydediyor diyorsun anlamadım..
edit kendi kendine dataya kayıt yapmazki,, mutlaka bir yerde sen kayıt
yapmasını söylüyorsun,,

eğer tabloda bir kayıt varsa , var mesajı verecek , yoksa kaydedecek
yani
if koşul doğru ise mesaj
else kaydet
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Mesaj gönderen zengin »

merhaba arkadaşlar olayı şu şekilde cözdüm kulanmış oldugum

Query1 ve tekrar bir ikinci Query2 ile aratıp daha önceden kayıt var ise
haber veriyor

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select* from Ykart where plaka like "'+DBEdit1.Text+'%"');
Query1.Open;


procedure TMKART.DBNavigator8Click(Sender: TObject; Button: TNavigateBtn);
Var
Msg:Word;
begin
if DBedit13.text <> '' then
begin
showmessage(Dbedit13.text+' Plakalı Arac Kaydımızda Mevcut Var ? ');
end
else
begin
if DBedit26.text <> '' then
begin
showmessage(Dbedit26.text+' Plaka Önceden Kayıtı Var ? ');
begin
msg:=Application.MessageBox('Yeni Hatalı Kaydı Silmek İstiyormusunuz ?','Dikkat',4+32);
case msg of
IDYES: MKQuery1.Delete;
end;
end;
end;

İlgilenen arkadaşlara teşekkür ederim saygılarımla
Zengin
Cevapla