Bir çok Edit ile hesap yapmak.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Bir çok Edit ile hesap yapmak.
Arkadaşlar Formda bulunan Groupbox içinde 30 40 adet dbedit var.
Bunlara her bilgi girişinde X editi için işlem sonucunu göstermem gerekiyor.
Nasıl global bir prosedür oluşturabilirim.
Her editin exitinde tek tek bütün editleri hesaplattırmak çok çok abes.
Teşekkürler.
Bunlara her bilgi girişinde X editi için işlem sonucunu göstermem gerekiyor.
Nasıl global bir prosedür oluşturabilirim.
Her editin exitinde tek tek bütün editleri hesaplattırmak çok çok abes.
Teşekkürler.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Bir çok Edit ile hesap yapmak.
En mantıklısı her editin onchange olayında hesaplatmak.. global bir procedure yazsanda her editin onchange veya onexit olayında o procedure başvurman gerekecek zaten... Değişen bir şey yok yani...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Re: Bir çok Edit ile hesap yapmak.
global bir prosedür yazsam dediğin gibi change de sadece bu prosürü kullanırım.
edittoplam:= toplama(); bu yeterli olur. Ama böyle bir prosedür yapmazsam.
her edit te
edittoplam:= inttostr(editx.text) + inttostr(edity.text) *30 veya 40 v.s. diye gidecek buda kim bilir kaç satır olacak.Bu kadar satır * bir de editler, kodun uzunluğunu düşünün.
hepsinin başına 1,2,3 şeklinde numara versem ve bir döngü prosedürü oluştursam. Sonra da
her change de bu prosedürü göstersem nasıl olur acaba.
Gerçi 40 a yakın editchange koduda yazmak istemiyorum ama çözüm olmaz ise yapacak bir şey yok.
edittoplam:= toplama(); bu yeterli olur. Ama böyle bir prosedür yapmazsam.
her edit te
edittoplam:= inttostr(editx.text) + inttostr(edity.text) *30 veya 40 v.s. diye gidecek buda kim bilir kaç satır olacak.Bu kadar satır * bir de editler, kodun uzunluğunu düşünün.
hepsinin başına 1,2,3 şeklinde numara versem ve bir döngü prosedürü oluştursam. Sonra da
her change de bu prosedürü göstersem nasıl olur acaba.
Gerçi 40 a yakın editchange koduda yazmak istemiyorum ama çözüm olmaz ise yapacak bir şey yok.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Bir çok Edit ile hesap yapmak.
s.a.
ben olsam şöyle yapardım.
önce toplam diye global bir değişken tanımlarım.
Toplamaekle(a:integer) ve toplamdancikar(a:integer) isimli iki procedure hazırlarım.(tek procedure negatif değer göndererek de yapılabilir)
editin onenter inde toplamdancikar
onexit inda toplamaekle procedure lerini çağırırım.
ilk başta editlere değer yüklenecek ise eğer onun içinde ilktoplam gibisinden bir procedure hazırlarım.
kolay gelsin.
ben olsam şöyle yapardım.
önce toplam diye global bir değişken tanımlarım.
Toplamaekle(a:integer) ve toplamdancikar(a:integer) isimli iki procedure hazırlarım.(tek procedure negatif değer göndererek de yapılabilir)
editin onenter inde toplamdancikar
onexit inda toplamaekle procedure lerini çağırırım.
ilk başta editlere değer yüklenecek ise eğer onun içinde ilktoplam gibisinden bir procedure hazırlarım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Bir çok Edit ile hesap yapmak.
Eger sözkonusu dbedit ise fieldları da toplama için kullanman daha dogru olur. Hatta bir tane calculated field hazirlayip, tüm toplamları oradan idare edebilirsin. Kayıt degiştiginde, bilgi girildiginde calculated field tüm işlemi senin için yapar.
Re: Bir çok Edit ile hesap yapmak.
Ne farkederki ya.. Global procedure yi yazarken zaten 1 tane yazacaksın tüm toplamları.. Onchange de de bir kez yaz diğerlerine kopyala yapıştır.. Ama kod kargaşası olur tabi ki.. Procedure hazırlayıp yapmak daha mantıklı.. Ancak editin onexit ve onenter olayında ciddi bir mantıksızlık oluşur, o yüzden onchange olayından çağır procedure .. Mantıksızlıkta şu.. Kullanıcı bazan edit e bilgiyi yazar, diğer edite geçmeden kaydet e basar.. Onexit veya Onenter gerçekleşmeden kaydedilmiş olur.. Bu ciddi sonuçlar doğurabiliyor.. Başıma geldi de iyi biliyorum..
2 yıl sonra farkettiğimizde olanlar olmuş bütün toplamlar eksik çıkmıştı... Bütün toplamları düzelten program yazmak zorunda kalmıştım... Edit in onexit ve Onenter olaylarını bu tür işlemler için kullanmayın.. Mantıklı olan onchange olayıdır.. Çünkü her değişimde işini anında yapacaktır..
Selamlar...

Selamlar...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Re: Bir çok Edit ile hesap yapmak.
A.s. @Aslangeri
form açılışında tablo.open edildiğinden editlere bilgi yükleniyor ve ilk kayda konumlanıyor.
form açılışında tablo.open edildiğinden editlere bilgi yükleniyor ve ilk kayda konumlanıyor.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Bir çok Edit ile hesap yapmak.
bu tabi kayıt edilmiş bilgi için bir çözüm, kayıt edilmemiş bilgiyi hesaplattırıp göstermem (hesaplanan alan normal edit) ve sonra kayıt ettirmem lazım.emin_as yazdı:Eger sözkonusu dbedit ise fieldları da toplama için kullanman daha dogru olur. Hatta bir tane calculated field hazirlayip, tüm toplamları oradan idare edebilirsin. Kayıt degiştiginde, bilgi girildiginde calculated field tüm işlemi senin için yapar.
Not:hesabın gösterildiği alanı kayıt ettirmiyorum gerekirse bunu da kayıt ettiririm.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Bir çok Edit ile hesap yapmak.
gene kendi yöntemim üzerinde biraz güncelleme yaparak
şöyle yapabilirsin.
tablo open oluğu zaman editlere değer atarken toplam değişkenini set edersin.
burda dikkat etmen gereken nokta toplam değişkeni set edilirken cursor bizim editlerden birinde olmayacak.
işlemlerin başında bir butona focus olarak sağlayabilirsin.
sonra enter ve exit kodları çalışacak,
enson kaydet dediği zaman gene bizim editlerden başka bir bileşene focus olarak son yapılan değişikliklerinde toplama alınmasını sağlayabilirsin.
bir diğer alternatif de
onchange de yapabilirsin ama gene toplamekle ve toplamcikar procedureleri ile
editin onenterinde tagına editin değerini yazarsın.
onchange olayındada tagı çıkartıp texti toplarsın sonrada tag a text i atarsın.
toplamekle proceduresini her işlemde tek tek tüm editleri dolaşıp toplamı hesaplamamak için kullanıyoruz. calc field olsa gene her değişiklikte tüm alanlar toplanacak bu şekilde sadece değişen alan işleme tabi tutuluyor.
kolay gelsin.
şöyle yapabilirsin.
tablo open oluğu zaman editlere değer atarken toplam değişkenini set edersin.
burda dikkat etmen gereken nokta toplam değişkeni set edilirken cursor bizim editlerden birinde olmayacak.
işlemlerin başında bir butona focus olarak sağlayabilirsin.
sonra enter ve exit kodları çalışacak,
enson kaydet dediği zaman gene bizim editlerden başka bir bileşene focus olarak son yapılan değişikliklerinde toplama alınmasını sağlayabilirsin.
bir diğer alternatif de
onchange de yapabilirsin ama gene toplamekle ve toplamcikar procedureleri ile
editin onenterinde tagına editin değerini yazarsın.
onchange olayındada tagı çıkartıp texti toplarsın sonrada tag a text i atarsın.
toplamekle proceduresini her işlemde tek tek tüm editleri dolaşıp toplamı hesaplamamak için kullanıyoruz. calc field olsa gene her değişiklikte tüm alanlar toplanacak bu şekilde sadece değişen alan işleme tabi tutuluyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Bir çok Edit ile hesap yapmak.
Calculatedalan oluşturupconari yazdı:bu tabi kayıt edilmiş bilgi için bir çözüm, kayıt edilmemiş bilgiyi hesaplattırıp göstermem (hesaplanan alan normal edit) ve sonra kayıt ettirmem lazım.emin_as yazdı:Eger sözkonusu dbedit ise fieldları da toplama için kullanman daha dogru olur. Hatta bir tane calculated field hazirlayip, tüm toplamları oradan idare edebilirsin. Kayıt degiştiginde, bilgi girildiginde calculated field tüm işlemi senin için yapar.
Not:hesabın gösterildiği alanı kayıt ettirmiyorum gerekirse bunu da kayıt ettiririm.
Oncalc da topla çıkar böl işlemlerini yaptım.
Formdada normal edit yerine Yine Dbedit koyup datafiled a Calculate field i gösterdim.
Oldu


Bir kelimenin anlamını öğretsen bile yeter..


