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....
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
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.
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?
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
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
//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 !!!
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
//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
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.