OnCalcFields Özellikli Alan Adında İşlem Yapma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hope
Üye
Mesajlar: 3
Kayıt: 22 Haz 2020 05:25

OnCalcFields Özellikli Alan Adında İşlem Yapma

Mesaj gönderen hope »

Dostlar Merhaba forumda yeniyim bir yanlışlık yaparsam affola. Şimdi Formumda adoquery ile yeni alan adı oluşturdum veritabanında normalde yok(Access Veri Tabanı). Veri tabanındaki alan adlarım 'OZELSIFRE,ADI,SOYADI,TOPLAMBORC,YUKLEMETARIHI'. Ben de veri tabanında olmayan bir alan adı oluşturarak oncalcfields eventsini kullandım. dbgrid de boş gözükeceği için oncalcfields eventsine şunları yazdım.

Kod: Tümünü seç

ADOQuery1KALAN_BORC.AsFloat:=ADOQuery1TOPLAM_BORC.AsFloat;
Dbgride popupmenu ekledim. Popupmenu de ödeme yap tuşlandığında inputbox ile odenecek miktar alınıyor. inputbox'ı da odeme adlı değişkene aktardım.

Kod: Tümünü seç

odeme:=StrToInt(InputBox('Ne Kadar Ödeme Yapacaksınız?','BORÇ ÖDEME','Ödenecek Rakamı Giriniz'));
if odeme<0 then begin
ShowMessage('LÜTFEN POZİTİF OLAN BİR DEĞER GİRİNİZ..');
exit;
end else begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('KALAN_BORC').Value:=ADOQuery1.fieldbyname('TOPLAM_BORC').value-odeme;
Bu şekilde yaptığımda borç düşüyor ama dbgrid de başka bir satır seçtiğimde eski haline dönüyor.
Büyük ihtimalle OnCalcFields prosedüründe yanlışlık var 1 haftadır uğraşıyorum ama beceremedim.
Yardımcı olabilirseniz çok iyi olur.
Şimdiden Teşekkürler.

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2208
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: OnCalcFields Özellikli Alan Adında İşlem Yapma

Mesaj gönderen freeman35 »

:D Aferin. en azından diğeri gibi soruyu kopyala yapıştır yapmamışsın. Ama forumda yada internette de araştırma yapmamışsın. Her zaman tam senin istediğin kodu bulamazsın, Bulsaydın programcı olmak için okullara öğretimlere gerek kalmazdı.
".Post" bir araştır bakalım, belki işine yarar birşeyler bulabilirsin.
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 !!!

hope
Üye
Mesajlar: 3
Kayıt: 22 Haz 2020 05:25

Re: OnCalcFields Özellikli Alan Adında İşlem Yapma

Mesaj gönderen hope »

freeman35 yazdı:
23 Haz 2020 10:57
:D Aferin. en azından diğeri gibi soruyu kopyala yapıştır yapmamışsın. Ama forumda yada internette de araştırma yapmamışsın. Her zaman tam senin istediğin kodu bulamazsın, Bulsaydın programcı olmak için okullara öğretimlere gerek kalmazdı.
".Post" bir araştır bakalım, belki işine yarar birşeyler bulabilirsin.
Aslında araştırma yaptım ama yine de sorunu çözemedim.

Kod: Tümünü seç

AdoQuery1.Post;
Yukarıdaki kodu yazdığımda ise borç düşme olayı hiç olmuyor önceden denemiştim zaten.

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2208
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: OnCalcFields Özellikli Alan Adında İşlem Yapma

Mesaj gönderen freeman35 »

1- AdoQuery1.Post; ne işe yaradığını iyice kavra.
2- OnCalcFields event ininde çalışma mantığını kavra
Sana bunlar anlatılmış ki bu eventi kullanman isteniyor. Yetei kadar araştırmamışsın
basit bir örnek http://www.componentace.com/calculated-field-delphi.htm
Otuz beş sene önce, bana öğreten öğretmenin söylediğini hala uygularım. Sen bilgisayar ol, ve kodun her biribi tek tek sen çalıştır. Tabi o zamanlar iş kolay dı OOP diye birşey yoktu. Şimdi her kod, bir sürü eventi vs tetikliyor. İşte bunların hepsini hesaplayıp değerlendirmen gerekiyor.
Bu linkteki örnek sana event in ve fieldı nasıl kullanacağını anlatıyor. Sana tiyo, sen tek satırlık iş yapmıyorsun, "toplamLAR" la işlem yapmak istiyorsun. SUM gibi yani.
Birde bu OnCalculated field ın bir de computed olanı var, aradığın belkide odur.
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 !!!

hope
Üye
Mesajlar: 3
Kayıt: 22 Haz 2020 05:25

Re: OnCalcFields Özellikli Alan Adında İşlem Yapma

Mesaj gönderen hope »

freeman35 yazdı:
24 Haz 2020 06:03
1- AdoQuery1.Post; ne işe yaradığını iyice kavra.
2- OnCalcFields event ininde çalışma mantığını kavra
Sana bunlar anlatılmış ki bu eventi kullanman isteniyor. Yetei kadar araştırmamışsın
basit bir örnek http://www.componentace.com/calculated-field-delphi.htm
Otuz beş sene önce, bana öğreten öğretmenin söylediğini hala uygularım. Sen bilgisayar ol, ve kodun her biribi tek tek sen çalıştır. Tabi o zamanlar iş kolay dı OOP diye birşey yoktu. Şimdi her kod, bir sürü eventi vs tetikliyor. İşte bunların hepsini hesaplayıp değerlendirmen gerekiyor.
Bu linkteki örnek sana event in ve fieldı nasıl kullanacağını anlatıyor. Sana tiyo, sen tek satırlık iş yapmıyorsun, "toplamLAR" la işlem yapmak istiyorsun. SUM gibi yani.
Birde bu OnCalculated field ın bir de computed olanı var, aradığın belkide odur.
kolay gele
Hocam bayağı araştırdım verdiğiniz linke de baktım ama sonuç sıfır. Bir türlü halledemedim şu sorunu.
Daha önceden calcfields ile kalan borç hesabı yapan yok mudur ?

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2208
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: OnCalcFields Özellikli Alan Adında İşlem Yapma

Mesaj gönderen freeman35 »

Kalan borç nedir? "borçlarının toplamından" "tüm ödediklerinin "toplamını" çıkardığında" kalan değil mi?
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 !!!

ertank
Üye
Mesajlar: 1324
Kayıt: 12 Eyl 2015 12:45

Re: OnCalcFields Özellikli Alan Adında İşlem Yapma

Mesaj gönderen ertank »

hope yazdı:
22 Haz 2020 05:47
Dostlar Merhaba forumda yeniyim bir yanlışlık yaparsam affola. Şimdi Formumda adoquery ile yeni alan adı oluşturdum veritabanında normalde yok(Access Veri Tabanı). Veri tabanındaki alan adlarım 'OZELSIFRE,ADI,SOYADI,TOPLAMBORC,YUKLEMETARIHI'. Ben de veri tabanında olmayan bir alan adı oluşturarak oncalcfields eventsini kullandım. dbgrid de boş gözükeceği için oncalcfields eventsine şunları yazdım.

Kod: Tümünü seç

ADOQuery1KALAN_BORC.AsFloat:=ADOQuery1TOPLAM_BORC.AsFloat;
Dbgride popupmenu ekledim. Popupmenu de ödeme yap tuşlandığında inputbox ile odenecek miktar alınıyor. inputbox'ı da odeme adlı değişkene aktardım.

Kod: Tümünü seç

odeme:=StrToInt(InputBox('Ne Kadar Ödeme Yapacaksınız?','BORÇ ÖDEME','Ödenecek Rakamı Giriniz'));
if odeme<0 then begin
ShowMessage('LÜTFEN POZİTİF OLAN BİR DEĞER GİRİNİZ..');
exit;
end else begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('KALAN_BORC').Value:=ADOQuery1.fieldbyname('TOPLAM_BORC').value-odeme;
Bu şekilde yaptığımda borç düşüyor ama dbgrid de başka bir satır seçtiğimde eski haline dönüyor.
Büyük ihtimalle OnCalcFields prosedüründe yanlışlık var 1 haftadır uğraşıyorum ama beceremedim.
Yardımcı olabilirseniz çok iyi olur.
Şimdiden Teşekkürler.
Merhaba, paylaştığınız kod eksik gözüküyor. İlgili kodun tamamını paylaşmanız mümkün mü?

Cevapla