girilen sicil no ve kartno varsa mesaj veren kod

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sekocan
Üye
Mesajlar: 26
Kayıt: 25 Ağu 2004 12:35

girilen sicil no ve kartno varsa mesaj veren kod

Mesaj gönderen sekocan »

Kod: Tümünü seç

if DBEdit1.Text='' then
  begin
  ShowMessage('Sicil no boş geçilemez');
  DBEdit1.SetFocus;
  end else
 
if DBEdit2.Text='' then
  begin
  ShowMessage('Kart no boş geçilemez');
  DBEdit2.SetFocus;
  end;

if (DBEdit1.Text<>'') then begin

   while not df.Query3.Eof do
   begin
   if df.Query3.FieldByName('sicil').AsString=DBEdit1.Text then
   begin
   ShowMessage('Aynı sicil no daha önce girilmiş');
   exit;
   end;
   df.Query3.Next;
      end;
end;
  
if DBEdit2.Text<>'' then begin
   while not df.Query3.Eof do
   begin
   if df.Query3.FieldByName('kart').AsString=DBEdit2.Text then
   begin
   ShowMessage('Aynı kart no daha önce girilmiş');
   exit;
   end;
df.Query3.Next;
      end;
   end;

df.Query3.edit;

   df.Query3.FieldByName('KART_GECERLILIK_TARIHI').AsDateTime:=DateTimePicker1.Date;
   df.query3.FieldByName('KART_BITIS_TARIHI').AsDateTime:=DateTimePicker2.Date;
   df.Query3.FieldByName('IZIN_BASLANGIC_TARIHI').AsDateTime:=DateTimePicker3.Date;
   df.query3.FieldByName('IZIN_BITIS_TARIHI').AsDateTime:=DateTimePicker4.Date;
   df.query3.FieldByName('kredi_miktari').AsString:=DBEdit6.Text;
df.Query3.Post;
end;
arkadaşlar yukarıdaki kod sicil no ve kartno gibi iki alana girilen bilgileri kontrol eden ve aynı kayıt girilmesi halinde hata mesajı veren ayrıca boş geçilmesi halinde hata mesajı veren kod parçasıdır...bu kod tam anlamıyla çalışmıyor hatayı bulamadım yardımcı olursanız sevinirim....
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

setFocuslardan sonra exit kullan.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

aslında benim tavsiyem dbeditin üstüne bir de edit bileşeni kullanarak
dene
yani dbeditler üzerinde işlem yaptırmasan daha iyi olur
kısaca
if edit1.text='' then begin
showmeesage('Bu alanı boş bırakmayın');
end artı bir de setfocus bileşeninden sonra
exiti kullan
Misafir

yarına bırakma

Mesaj gönderen Misafir »

bir alanın boş olmasını istemiyorsan hemen onexit te halley işi. yani o bileşenin onexit olayına yaz kodu boşsa oraya tekrar gönder. en doğrusu budur. en sonda aynı mı diye bakarsın olay biter.
sekocan
Üye
Mesajlar: 26
Kayıt: 25 Ağu 2004 12:35

mikrocuya cevap

Mesaj gönderen sekocan »

kardeş boş olma olayını hallettim ama dbedite girilen bilgiyi nasıl kontrol ederim...
yani tabloda kayıtlımı değilmi....
kayıtlı ise o dbeditte kalsın değilse tabloya kaydetsin...

benim yukarıda yazdığım kod bu işi yapmıyor neden?
Misafir

index.

Mesaj gönderen Misafir »

o alan için bi index tanımla. tabi unique olsun. sonra yat uyu gerisini veritabanı düşünsün.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

Kod: Tümünü seç

function TForm1.kayitvarmi(tabloadi, alanadi: string;
  aranandeger: integer): boolean;
var iTemp:integer;
begin
    iTemp:=0;
    Result:= false;
    with query1 do
    begin
     SQL.Clear;
     SQL.Add('select Count('+alanadi+') from '+tabloadi);
     SQL.Add('where '+alanadi+'=:EmpNo');
     ParamByName('EmpNo').AsInteger := aranandeger;
     Open;
     if not Fields[0].isNull then
      if Fields[0].AsInteger <> 0 then
          iTemp := Fields[0].AsInteger;
    end;
    if iTemp >= 1 then
     Result:=TRUE;
end;
gibi veya stored procedure ile bunu kontrol ettirebilirsin.daha önce biri atmıştı böyle bikaç örnek
.-.-.-.-.-.-.-. ^_^
sekocan
Üye
Mesajlar: 26
Kayıt: 25 Ağu 2004 12:35

mege kardeşim

Mesaj gönderen sekocan »

şimdi mege kardeş ben bu dbeditin içerisine yazılan bilgiyi tabloya kaydetmeden önce nasıl aratabilirim...

benim için gerekli olan bu.....
Misafir

ADANA aradan çık lütfen.

Mesaj gönderen Misafir »

sekocan demiş ki .....

mege kısaca diyorki kaydetmeden önce bi sorgu ile arattır sorgudan kayıt dönerse vardır dönmezse yoktur.

ben de dedim ki, tablonun o alanına index tanımlarsan zaten kayıt yapmaz sende uğraşmazsın.

seç beğen al.

eğer fonksiyon kullanmasını bilmiyorsan formda ara.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

sokecan kardeş
sen table damı yoksa query demi yapmak istiyorsunuzu
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

eğer editlerin onexit event ini kullanırsanız, bir buttonada basmak isterseniz yada başka bir yere tıklanırsanız onexit tetiklenir ve kullanıcı sinir olur :)
en sağlam mantıksa bence beforepost event inde yap
aşağı yukarı yöntemler aynı
kotrol ler ise

Kod: Tümünü seç

//bu kısım boş kotrolü
if dataset.fieldbyname('falanstringalan').isnull or (trim(dataset.fieldbyname('falanstingalan').asstring))then begin
 showmessage('falanstringalan boş geçilemez');
  activecontrol := falanca_twincontrol;
  Abort;// post işlemini iptal et
end;
// bu kısım çift kayıt
if kotrolquerysi.active then kotrolquerysi.close;
if kotrolquerysi.locate('...............)then begin
 kotrolquerysi.close;
 showmessage('bu daha önce kaydedilmiş');
 activecontrol := falanca_twincontrol;
 abort;
end;
çift kayıt kotrolünü ben herzaman unique key verip bunu onposterror event inde yakalrım.

kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
sekocan
Üye
Mesajlar: 26
Kayıt: 25 Ağu 2004 12:35

Mesaj gönderen sekocan »

freeman35 yazdı: demişki eğer editlerin onexit event ini kullanırsanız, bir buttonada basmak isterseniz yada başka bir yere tıklanırsanız onexit tetiklenir ve kullanıcı sinir olur :)
en sağlam mantıksa bence beforepost event inde yap
aşağı yukarı yöntemler aynı
kotrol ler ise

Kod: Tümünü seç

//bu kısım boş kotrolü
if dataset.fieldbyname('falanstringalan').isnull or (trim(dataset.fieldbyname('falanstingalan').asstring))then begin
 showmessage('falanstringalan boş geçilemez');
  activecontrol := falanca_twincontrol;
  Abort;// post işlemini iptal et
end;
// bu kısım çift kayıt
if kotrolquerysi.active then kotrolquerysi.close;
if kotrolquerysi.locate('...............)then begin
 kotrolquerysi.close;
 showmessage('bu daha önce kaydedilmiş');
 activecontrol := falanca_twincontrol;
 abort;
end;
çift kayıt kotrolünü ben herzaman unique key verip bunu onposterror event inde yakalrım.

kolay gele
kardeş yukarıdaki kod maalesef çalışmıyo lütfen çalıştırabileceğim kodları gönderirsen sevinirim
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

maalesef seni sevindiremiycem. başkaları için kod yada program yazmam. vakit ayırıp yukarıda sana fikir versin diye yeteri kadar uzunda yazmışım

kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

dbedit yerine normal edit kullan.

Kod: Tümünü seç

Procedure Tform1.Button1Click(sender:tobje)
begin

//boş mu değil mi kontrol et...
if edtKod.Text = '' Then
Begin
  edtKod.SetFocus;
  Raise Exception.Create('Bu alanı boş geçemezsiniz');
end;

//bu fonksiyon girilen kaydın varolup olmadığını kontrol eder.
//bu fonksiyonu kendin yazman gerekir.

if AyniKayitVarmi(edtKod.Text) Then
  Raise Exception.Create('Bu kayıt daha önce girilmiş');


//sorun yok kaydı kaydet
DegerleriTabloyaYaz;

end;
bu şekilde yapabilirsin.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Cevapla