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ı
shochan
Üye
Mesajlar: 89
Kayıt: 06 Eki 2008 04:54
Konum: Kayseri

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

Mesaj gönderen shochan »

S.a arkadaşlar öncelikle şunu söylemek istiyorum soracağım soru basit forumda aradım ama sanırım benden başka böyle bir olayla karşılaşan olmamış sanırım yada ben bulamadım :) Neyse lafı fazla uzatmadan soruma geçeyim.

Şimdi iş yerinde kullanmak için yapmakta olduğum bir program var. Programda yeni müşteri kaydı yaparken dbcombobox aracılığı ile müşteri türünü seçiyorum yani şöyleki
Standart müşteri, Güvenilir müşteri, Veresiye yasak ... gibi

müşterileri ve satışları kaydettiğim iki tablom var ve aralarında ilişki kurdum bunda bir sorunum yok. Yapmak istediğim ise satış bölünümde satış işlemi yapılacak müşteri seçildiğinde eğer müşteri türü veresiye yasak ise ve ödeme şeklide veresiye seçilirse kullanıcıya o müşteriye veresiye satışın yasak olduğunu yazan bir uyarı verdirmek. Bunun için kullandığım koduda yazayım.

Kod: Tümünü seç

if (dbedit10.text='Veresiye yasak') and (dbradiogroup1.itemindex=1) then
begin
showmessage ('bu müşteriye veresiye satış yasak')
end;
Kodla ilgili açıklamayıda yapayım dbedit10'da o müşteriyi kaydederken combodan hangi türü seçtiysem o yazıyor dbradiogroupbox1'de ise ödeme şekli peşin ve veresiye diye 2 seçenek var yazdığım kodda delphi hata vermiyor fakat müşteri türü veresiye yasak olan bi müşteri seçtiğimde ve ödeme şeklide veresiye yaptığımda uyarıda vermiyor direk kaydı gerçekleştiriyo. Anlamadım neden olmadığını bu konuda ne yapmalıyım nasıl bi kod kullanmalıyım yardımcı olursanız sevinirim biliyorum basit bi soru ama neden olmadığını anlamadım :?
  • Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

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

Mesaj gönderen mkysoft »

Bu kodu nereye yazıyorsunuz? BeforePost olayında yazıyorsanız Post işlemini durdurmanız gerekir, mesajı göstermeniz bir şey ifade etmez.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

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

Mesaj gönderen aslangeri »

s.a.
if yazan satıra breakpoint koy bakalım.
program oraya geldiği zaman alanlardaki değerler neler.
yada oraya geliyormu?
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
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 »

Kod: Tümünü seç

if (dbedit10.text='Veresiye yasak') and (dbradiogroup1.itemindex=1) then
begin
showmessage ('bu müşteriye veresiye satış yasak')
end;
bu kodun devamında ne var onu sorgulamak lazım.Bu musteriye yasak geldiyse bu işlemin sonlanması gerekir.
exit;
Kullanıcı avatarı
shochan
Üye
Mesajlar: 89
Kayıt: 06 Eki 2008 04:54
Konum: Kayseri

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

Mesaj gönderen shochan »

Arkadaşlar yorumlarınız için tşk ederim tek tek sorularınızı yanıtlayım.

Sayın supervisor kodun devamında post işlemini gerçekleştirdirdim post işlemini durdurma gibi birşey yok.

Sayın aslangeri dediğiniz gibi if satırına break point koydum ve programı F8 ile çalıştırdığımda if satırına geliyor ve bikez daha F8e bastığmda showmessage satırını atlayıp direk ibdataset1.post olan satıra geliyor ve sanırım sorunda burdan kaynaklanıyo.

Sayın mkysoft bu kodu ekle butonundada afterposttada ve bikaç farklı alandada kullandım fakat sonuç aynıydı sanırım oda sizin ve diğer arkadaşların dediği gibi post işlemini durdurmamamdan kaynaklanıyo olsa gerek.

Şimdi sizin söylediklerinizden yola çıkarak post işlemini durdurmayı denedim fakat başarılı olamadım nasıl biyol izlemeliyimyada kodu nedir ibdataset1.cancel geldi aklıma ilk olarak ama olumlu bir sonuç alamadım ilginiz için tekrardan teşekkürler.

İyi çalışmalar
  • Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

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

Mesaj gönderen zengin »

s.a

Ustacıgım Senin Amacın Yapmış oldugun Notu kontrol edecen sanırım

bu şekilde denermisin mümkünse

Kod: Tümünü seç

if DBEdit1.Text ='' then
   begin
   ShowMessage('Boş');
   end else
   begin
   ShowMessage('dolu');
  end;
Zengin
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 »

Öncellikle dbEdit gibi componentlardan bilgi alma, dogrudan dataset in fieldbyname ile kendisinden bilgi al. Bu kontrolu datasetin onbeforepost eventinde yapabilirsin.
Durdurmak için sadece raise EDatabaseError.Create('Yasak kardeşim!'); yazman yeterli.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

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

Mesaj gönderen aslangeri »

shochan yazdı:....
Sayın aslangeri dediğiniz gibi if satırına break point koydum ve programı F8 ile çalıştırdığımda if satırına geliyor ve bikez daha F8e bastığmda showmessage satırını atlayıp direk ibdataset1.post olan satıra geliyor ve sanırım sorunda burdan kaynaklanıyo.
.....
Demekki ya dbedit10 un texti doğru değil yada radiogroup un itemindexi.
o satıra geldiğinde fareyi dbedit10.text in üzerine getir bakalım ne yazacak.
eğer doğruysa radiogroup un itemindexini kontrol et.
ayrıca
emin_as yazdı:.....dbEdit gibi componentlardan bilgi alma, dogrudan dataset in fieldbyname ile kendisinden bilgi al.......
+1
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
shochan
Üye
Mesajlar: 89
Kayıt: 06 Eki 2008 04:54
Konum: Kayseri

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

Mesaj gönderen shochan »

aslangeri kardeşim senin dediğin gibi yazım hatasından kaynaklanıyormuş
emin_as kardeşim senin vermiş olduğun kodu tam olarak nereye yazıcaz çünkü ben butonun click hanesinede yazsam datasetin beforepostunada yazsam hata veriyo program edataseterror message 'veresiye yasak' gibi bi hata veriyor neyden kaynaklanıyo olabilir acaba _?
Herkese yardımlarından dolayı tşk ederim iyi çalışmalar
  • Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Kullanıcı avatarı
shochan
Üye
Mesajlar: 89
Kayıt: 06 Eki 2008 04:54
Konum: Kayseri

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

Mesaj gönderen shochan »

S.a kaç gündür arıyorum forumda ama neden mesajı vermediğini bulamadım. showmessage kullandığımda mesaj ekrana geliyo fakat post işlemini durdurmayı hala yapamadım yardımlarınızı bekliyorum
  • Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

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

Mesaj gönderen aslangeri »

s.a.
eğer sowmessage komutu çalışyıyorsa ve showmesageden sonraki komutların çalışmasını istemiyorsan showmessage yerine

Kod: Tümünü seç

raise exception.create(' kullanıcıya vermek istediğin mesaj');
yaz.
böylelikle kullanıcı hata mesajı alacak ve kodun geri kalan kısmı çalışmayacak.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
shochan
Üye
Mesajlar: 89
Kayıt: 06 Eki 2008 04:54
Konum: Kayseri

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

Mesaj gönderen shochan »

Hocam vermiş olduğunuz kodu showmessage yerine yazdığımda program hata veriyor
  • Debugger Exception Notification

    Project Hesap.exe raised exception class Exception with message 'Deneme'. Process stopped. Use Step or Run to continue.
verdiği hata bu ama aynı yere showmessage yazdığımda bi sorun olmuyor istediğim mesajı görüntülüyor birde pek alakası yok ama şöyle birşey yaptığımda sizin vermiş olduğunuz kodun başındaki raise yi kaldırdığımda hata vermiyo fakat mesajda görüntülenmiyor :?

Programın vermiş olduğu hatada ne demek istediğini pek anlamadım ne yapmam gerekli acaba _?

Saygılar iyi çalışmalar..
  • Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
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 »

Programi delphi IDE de çalıştırdıgın için önce delphi debugger i exception ı yakalayıp, gösteriyor. Eger delphi dışında çalıştırırsan, hata mesajını programın verdigini görürsün.

Raise i kaldırırsan exception yaratılmaz, program kayıt yapmaya devam eder. try except blokları hata yakalama için kullanılır. Gerektiginde prgoramın kendisi exception yaratıp, kodların devam etmesini engeller.

Yapmak istedigin kaydın engellenmesi ise, raise ile bunu beforepost ta yapabilirsin. Denemelerini yaparken programı da delphi ide dışında çalıştırmayı dene veya delphi nin exception yakalamasını seçeneklerden kaldır.

ShowMessage sadece bilgi gösterir, kendinden sonraki kodların çalışmasını engellemez, raise hata oluşturup, kendinden sonraki kodların çalıştırılmasını engeller.

Kod: Tümünü seç

try
  DosyayiAc;
  HesaplamaYap;
  Kaydet;
  CaySoyle;
except
on E:exception  do  
  ShowMessage('Hata var: ' +E.message);
    .....
end;
Yukaridaki kodda ornegin dosyayiAc ta dosya yoksa, bunu sisteme showmessage la söylesen bile, kendinden sonra gelen hesaplamayap, kaydet, caysoyle çalışacaktır. Dosya açılmadıgı için buradaki işlemlerin yapılması sorunlu olacaktır. Oysa dosyayiAc raise ile dosya yok exeption i oluşturursa, program dogrudan except bloguna gidecektir, kendinden sonra gelen hesaplamayap, kaydet, caysoyle çalışmayacaktır. Raise ile exception oluşturulması programın daha kararlı çalışmasını saglar.

Raise kullanmadan da programı düzenleyebilirsin, dosyavarmi gibi degişkenleri if lerle kontrol edebilrsin, fakat bu if ler programı gereksiz yere karmaşıklaştırır. Try except blogu hata yakalamak için kullanılan en etkili yöntemdir.
Kullanıcı avatarı
shochan
Üye
Mesajlar: 89
Kayıt: 06 Eki 2008 04:54
Konum: Kayseri

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

Mesaj gönderen shochan »

Tamam hocam hata programda yada aslangeri hocamın wermiş olduğu kodda deil bendeymiş dediğiniz gibi delphi ide ile çalıştırdığımdan kaynaklanıyormuş delphi dışında çalıştırdığımda tam istediğim sonucu aldım sizlerin sayesinde birşeyi daha öğrenmiş oldum allah hepinizden razı olsun ben bu azim ve sizlerin yardımıyla delphi ve veritabanı olayını iyice öğrenicem inş.

Burdan yardım eden ve bizleri burada toplayan delphiturkiye ailesine sonsuz teşekkürlerimi iletiyorum

:bravo: :bravo: :bravo: :bravo: :bravo: :bravo:

Saygılar..
  • Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
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 »

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.
Cevapla