Satışta Müşteri Türüne Göre Uyarı Mesajı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Satışta Müşteri Türüne Göre Uyarı Mesajı

Mesaj gönderen CiTiZEN »

Sayın @Akdatilla benim merak ettiğim bu koddaki abort işlemi bir queryden insert işlemi açtıktan sonra kullanılırsa o insert işlemini beklemeye mi işlemi cancel e mi düşürür? kolay gelsin.
UWESIS CORPORATION
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Satışta Müşteri Türüne Göre Uyarı Mesajı

Mesaj gönderen conari »

akdatilla yazdı:merhaba
programınızda herhangi bir hata durumunda işlemi durdurmak için abort komutunu kullanabilirsiniz.

Kod: Tümünü seç

if (dbedit10.text='Veresiye yasak') and (dbradiogroup1.itemindex=1) then
begin
showmessage ('bu müşteriye veresiye satış yasak')
abort;
end;
bu kodları datasetin beforepost olayına veya kaydet prosedürünüzün üst kısmına yazabilirsiniz.
Ben genelde Abort; yerine Exit; kullanıyorum
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Satışta Müşteri Türüne Göre Uyarı Mesajı

Mesaj gönderen emin_as »

Abort mesaj vermeyen bir exception türüdür. Sessiz sakince exception atılır ve sistem try bloklarının arasında çıkar gider, eger bir except varsa abort yakalanabilir. EAbort abort ile atılan exception türüdür.

Exit ise bulunan procedureden çıkış için kullanılır.

Kod: Tümünü seç

procedure hesaplamayap;
....
if sonuc = 0 then exit
 else abort;
......
end


try
  dosyayikontrolet;
  hesaplamayap;
  dosyayikaydet;
except
  ....
end;

Yukarıdaki blokta hesaplama yapılırken exit denirse, dosyayikaydet procedure u çalışacaktır, eger abort denirse, dosyayikaydet çalışmayacaktır. Aradaki fark birisinin procedure u sonlandırması, digerinin ise exception atmasıdır. Except blogunda bu abort u işleyebilirsiniz.

Abort ile raise arasindaki fark, raise ile atılan exception yakalanmazsa, application yakalayıp, bir pencerede exception u gösterir. Abort ile atilan exceptionda ise sistem dogrudan bir pencerede mesaj göstermez.
Kullanıcı avatarı
supervisor
Üye
Mesajlar: 50
Kayıt: 07 Kas 2005 10:38
Konum: Turgutlu

Re: Satışta Müşteri Türüne Göre Uyarı Mesajı

Mesaj gönderen supervisor »

Bence Yöntemde bir sorun var. :D

Resim
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: Satışta Müşteri Türüne Göre Uyarı Mesajı

Mesaj gönderen akdatilla »

conari yazdı: Ben genelde Abort; yerine Exit; kullanıyorum
Abort ile exit komutları birbirinin yerini tutmaz. exit komutu bir prosedür veya fonksiyondan çıkmayı sağlar.
Abort ise bir işten çıkmayı sağlar. Abort komutu doğru kullanılmazsa tehlikeli sonuçlar çıkartabilecek bir komuttur.
Abort kullanımını size anlatmak için şöyle bir kod bloğunu örnek olarak vermek istiyorum:

Kod: Tümünü seç

procedure tform1.satisbeforepost(dataset:tdataset);
begin
       if dataset.fieldbyname('durumu').Value=1 then 
       begin
               dataset.cancel;
               abort;
       end;
end;
procedure tform1.kart2beforedelete(dataset:tdataset);
begin
       if dataset.fieldbyname('yetki').Value=0 then 
       begin
               abort;
       end;
end;
procedure tform1.kaydetclick(sender:tobject);
begin
       satis.post;//eğer satis.durum alanının değeri 1 ise aşağıdaki komut(lar) çalışmaz.
       showmessage('Bilgiler kayıt edildi');
end;
procedure tform1.silclick(sender:tobject);
begin
        kart1.delete;
        kart2.delete;///eğer kart2'nin yetki alanı 0 ise aşağıdaki komut(lar) çalışmaz.
        kart3.delete;
        showmessage('Kart bilgileri silindi.');
end;
procedure tform1.testclick(sender:tobject);
begin
////aşağıdaki kodlarda herhangi bir prosedür bir abort metodu çağırdığında işlem yarıda kesilir.
//bu durumda yetkilli olsa bile kart1 ve kart2 datasetlerinde kayıt silme işlemi yapılamayacaktır. 
kartlariekle;
satisekle;
satis.edit;
satis.fieldbyname('durumu').value:=1;
kaydetclick(nil);
silclick(nil);
end;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Satışta Müşteri Türüne Göre Uyarı Mesajı

Mesaj gönderen conari »

Daha çok hangisi değil de nerede kullanıldığı önemli sanırım.

Kod: Tümünü seç

procedure tform1.satisbeforepost(dataset:tdataset);
begin
       if dataset.fieldbyname('durumu').Value=1 then 
       begin
burada dediğiniz gibi exit kullanılır ise PS den çıkacağı için kayıt gerçekleşir.

Ben bu aşamada kullanıyorum.

Kod: Tümünü seç

procedure tform1.kaydetclick(sender:tobject);
begin
if 'durumu'=1 then begin
'bu şekilde olmaz' 
exit;
 else begin
       satis.post;//
       showmessage('Bilgiler kayıt edildi');
end;
end;
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Cevapla