try except hata yakalama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gercek_16
Üye
Mesajlar: 108
Kayıt: 19 Haz 2005 02:42
Konum: mersin

try except hata yakalama

Mesaj gönderen gercek_16 »

merhabalar

kaydet işlemini yaparken aşağıdaki gibi yanlış tarih girilmesine karşın
aşağdaki tey except kodunu kullanıyorum,
yanlış girilmesi durumunda uyarıyı veriyor ama kaydetme işleminide gerçekleştiriyor.
yanlış girildiğinde kaydetme işlemini gerçekleştirmesin istiyorum.

Kod: Tümünü seç

try
  DataModule2.IBDataSet1TARIHISLEM.Asstring:=maskedit3.text;
except
  begin
  showmessage('Lütfen Geçerli Bir Tarih Giriniz');
  MaskEdit3.SetFocus;
  end;
end;
  DataModule2.IBDataSet1.Post;
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

merhaba,

Kod: Tümünü seç

try 
  DataModule2.IBDataSet1TARIHISLEM.Asstring:=maskedit3.text; 
except 
  begin 
  showmessage('Lütfen Geçerli Bir Tarih Giriniz'); 
  abort;
  MaskEdit3.SetFocus; 
  end; 
end; 
  DataModule2.IBDataSet1.Post; 
şeklinde dener misin? Olmazsa eğer, kaydetme butonunun altına sadece;

Kod: Tümünü seç

  DataModule2.IBDataSet1.Post; 
yazıp, tarih kontrol işlemini de tablonun beforepost olayında;

Kod: Tümünü seç

try 
  DataModule2.IBDataSet1TARIHISLEM.Asstring:=maskedit3.text; 
except 
  begin 
  showmessage('Lütfen Geçerli Bir Tarih Giriniz'); 
  abort;
  end; 
end; 


şeklinde bir deneyebilir misin?
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

@mucar arkadaşımızın dediği gibi Tablonun BeforePost unda aşağıdaki kodu yazman yeterli;

Kod: Tümünü seç

try
  IBDataSet1TARIHISLEM.Asstring:=maskedit3.text;
except
  ShowMessage('Lütfen Geçerli Bir Tarih Giriniz');
  Abort;
end; 
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
gercek_16
Üye
Mesajlar: 108
Kayıt: 19 Haz 2005 02:42
Konum: mersin

Mesaj gönderen gercek_16 »

evet bu şekilde hatayı engelliyor ama şöyle bir durum sözkonusu
ben kayıtlarımı datamodule yerleştirdiğim, ibdataset1 ile yapıyorum.
yani aynı dataseti 8 farklı formda kullanıyorum.
her fomdaki edit için ayrı ayrı yazarsam bu kodu problem çıkarmazmı?
başka bir yöntem mi bulmalıyım.
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

O zaman bir de form kontrolü olmalı. Hangi fromdan çağırdığın kontrol edilmeli. Onun için de şöyle bir şey yapılabilir. Datamodule'ünde bir formismi diye bir değişken tanımlarsın. Diğer formdaki kaydet butonlarının altında ise bu sefer;

Form1'deki için;

Kod: Tümünü seç

datamodule2.formismi:='form1';
datamodule2.ADOTable1.Post;
Form2'deki için;

Kod: Tümünü seç

datamodule2.formismi:='form2';
datamodule2.ADOTable1.Post;
gibi bir yapıda bu değişkenin değerini değiştirirsin. Datamodule'deki tablonun beforepostunda ise bu sefer;

Kod: Tümünü seç

try 
begin

  if formismi='form1' then
  DataModule2.IBDataSet1TARIHISLEM.Asstring:=maskedit3.text;

end;
except on exception do
  begin 
  showmessage('Lütfen Geçerli Bir Tarih Giriniz'); 
  abort; 
  end; 
end; 

gibi bir yapı olmalı. Bu şekilde çeşitlendirilebilir. Sadece bir fikir benim söylediğim.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Re: try except hata yakalama

Mesaj gönderen fduman »

Kod: Tümünü seç

try
  DataModule2.IBDataSet1TARIHISLEM.Asstring:=maskedit3.text;
  DataModule2.IBDataSet1.Post;
except
  begin
  showmessage('Lütfen Geçerli Bir Tarih Giriniz');
  MaskEdit3.SetFocus;
  end;
end;
Bu şekilde yapman yeterli olmalı.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

gercek_16 yazdı:evet bu şekilde hatayı engelliyor ama şöyle bir durum sözkonusu
ben kayıtlarımı datamodule yerleştirdiğim, ibdataset1 ile yapıyorum.
yani aynı dataseti 8 farklı formda kullanıyorum.
her fomdaki edit için ayrı ayrı yazarsam bu kodu problem çıkarmazmı?
başka bir yöntem mi bulmalıyım.
Bu kodu edit için yazmıyorsun, DataModule deki IBDataSet in BeforePost una yazıyorsun. Dolaysıyla nerden kayıt girersen gir kayıt esnasında bu kontrol yapılacak geçerli bir tarih girilmemiş ise kayıt işlemi iptal edilecek..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
superco
Üye
Mesajlar: 68
Kayıt: 05 Haz 2005 06:47
Konum: Düzce

Mesaj gönderen superco »

Kod: Tümünü seç

var
hata:boolean;
begin
hata:=false;
try
DataModule2.IBDataSet1TARIHISLEM.Asstring:=maskedit3.text
except
hata:=True;
end;
if hata=False then
DataModule2.IBDataSet1.post;
Bu şekilde olur mu?
Allah herkesin sırtına kaldırabileceği kadar yük koyar
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Bu arada bilgi vermek amacıyla

Kod: Tümünü seç

Try
  Try
    ...
   except
    ...
   end;
finally
...
end;
şekilde kullanılırsa hem hatasız durumda hemde exception durumunda gerçekleşicek olayları takla atmadan belirtebilirsiniz.
Cevapla