Formda Alan İçindeki Verileri Saydırma

Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
Altın Üyelik Bitiş Tarihi
13-09-2021
Arkadaşlar gönderdiğim örnekte 1 2 3 4 diye dört tane alan var mesela 1. 2. ve 3. alanlara değer olarak X giripi 4. alana hiçbirşey girmediğimizi varsayalım aşağıdaki Toplam alanına girmiş olduğumuz X değerlerini sayarak kaçtane olduğunu yazacak Dcountla denedim ama beceremedim.Şimdiden teşekkür.Bu arada tabloya başvuru yapmayacak formun üzerinde sayım işlemini gerçekleştirecek ve alanlara her veri girişinde Toplam hanesini güncelleyecek:yardim: :icelim: :hihoho: :kafa: :dua:
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Ekteki dosyayı inceleyin.. Takıldığınız yer olursa buraya yazın. Kolay gelsin.
 
Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
Altın Üyelik Bitiş Tarihi
13-09-2021
Mehmet bey ilginize teşekkür ederim ama sanırım sorumu yanlış anladınız sayı yazılarak toplama yapmayacağım o metinlere X işareti girilecek ve ent alttaki toplamda kaç tane X işsreti olduğunu sayacak.
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Sayın kocivan
Tam okumamışım.. Özür dilerim.. İstediğiniz şekilde yapmak için de araştırıyorum..
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

Metin kutularınızın güncelleştirme sonrasına herbiri için şu kodu yazınız.. Alttaki kod metin6 isimli ilk metin kutunuz içindir.

Kod:
Private Sub Metin6_AfterUpdate()
Dim ctl As Control
Dim i As Integer

For Each ctl In Me.Controls
If Not IsNull(ctl) Then i = i + 1

Next ctl

Me.Metin15 = i - [COLOR="Red"]7[/COLOR]
End Sub
Kırmızı ile yazılı "7" form üstündeki eleman sayısıdır.. Bir de sanki yine kulağı tersten gösterdim gibi bir his var içimde..
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Sayın beab05
Kodu ben de denedim hemen. Fakat bu kodla metin kutusunun içindeki x işaretlerini değil kaç kutuda x (veya herhangi bir işaret diyelim) olduğunu sayıyor. -7 yi de -6 yapmazsan yanlış sayıyor. Şu anda -7 yi -6 yaptım. Böylece kutuların kaç tanesinin dolu olduğunu hatasız sayıyor. Bence böyle olmayacaktı. Toplam işaretleri sayacaktı. Ben öyle anladım.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Valla hocam ben de tam anlamadım ki ne istendiğini ;) Benim anladığım anlık kullanım olacak x,y ya da q farketmez girilecek ve sayısı istenecek gibi..Ben de 7 ile sayıyı doğru veriyordu çünkü bir de button eklemiştim;)
 
Katılım
30 Ocak 2006
Mesajlar
937
Excel Vers. ve Dili
Access 2003
Ok. Buna benzer bir kullanım görmüştüm. Sanırım arkadaş ona benzer birşey yapmak istiyor.

Bilsa okul otomasyonu programında tabloya yanyana yazılan D işaretleri Devamsızlık anlamına geliyor. Hatta öyle ki nasıl yaptılarsa mesela ocak ayı için soldan sağa 31 işaret üzerinden hangi günler devamsızlık yapıldığı bile bulunuyor. D işaretleri yanyana yer almasına rağmen sayılıyor ve toplam devamsızlık çıkarılıyor. Bu arada boş olan günlerde öğrenci devam etmiş oluyor. Nöbetçi olduğı günler için N, iziler için İ, rapor için R gibi işaretler de aynı şekilde kullanılıyor.

Burda istenen ona benziyor. Ama form üzerinde mesela metin6 içinde yer alan x işaretleri sayılacak. Diğer metin kutuları içindeki işaretler de sayılacak. Sonuçta en alta toplamları alınacak. Herbir metin kutusunun yanlarına toplamları da yazdırılabilir. (Görülmesi istenmiyorsa görünmez yapılır) Bunların toplanması daha kolay olabilir. Bu arada x dışında başka işarete izin verilmeyerek (metin kutusunun formatı olarak) sadece x girilmesi sağlanabilir.

Valla açıklama ve fikirler benden.. Yapmak istersen sen bilirsin beab05.... :)))
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Yok hocam, istenilenin ne olduğunu tam öğrenmeden uğraşmak istemiyorum ama merak ta ediyorum ;) Herneyse soru sahibi açıklar umarım...
 
Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
Altın Üyelik Bitiş Tarihi
13-09-2021
Beyler ben sorunu şu şekilde çözdüm 14 tane alan var ve bunlarında kaçında X işareti var onu bulmaya çalışıyordum.


Private Sub Command95_Click()

Dim t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 As Integer
If Me.Ctl2 = "X" Then t1 = 1
If Me.Ctl3 = "X" Then t2 = 1
If Me.Ctl4 = "X" Then t3 = 1
If Me.Ctl5 = "X" Then t4 = 1
If Me.Ctl6 = "X" Then t5 = 1
If Me.Ctl7 = "X" Then t6 = 1
If Me.Ctl8 = "X" Then t7 = 1
If Me.Ctl9 = "X" Then t8 = 1
If Me.Ctl10 = "X" Then t9 = 1
If Me.Ctl11 = "X" Then t10 = 1
If Me.Ctl12 = "X" Then t11 = 1
If Me.Ctl14 = "X" Then t12 = 1
If Me.Ctl14 = "X" Then t13 = 1
If Me.Ctl15 = "X" Then t14 = 1
Me.Geneltatil.Value = t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + t10 + t11 + t12 + t13 + t14


End Sub



Her alanında güncelleştirme sonrasınada şu kodu yazdım

Private Sub Ctl3_AfterUpdate()
Call Command95_Click
End Sub

Her veri girişimde toplamı değiştiriyor böylece.
 
Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
Altın Üyelik Bitiş Tarihi
13-09-2021
İlginize teşekkür ederim tabi bu konu için daha ii bir çözüm öneriniz varsa onuda öğrenmek isterim.
 
Katılım
8 Aralık 2006
Mesajlar
143
Excel Vers. ve Dili
2003 TR
If [Metin6].Text = "x" Or "X" Then deger = deger + 1
If [Metin9].Text = "x" Or "X" Then deger = deger + 1
If [Metin11].Text = "x" Or "X" Then deger = deger + 1
If [Metin13].Text = "x" Or "X" Then deger = deger + 1

tarzında yapılabilir zannımca. eğer kutunun içinde x veya X varsa degere 1 daha ekler. en son tüm kutulardaki sayıldıktan sonra sonuc yazdırılır.
 

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,552
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Altın Üyelik Bitiş Tarihi
29-05-2025
Rica

Sn. kocivan;

Sorunun çözülmüş haliyle olan dosyayı siteye yükleyebilir misin?

Teşekkürler.
 
Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
Altın Üyelik Bitiş Tarihi
13-09-2021
Çözüm

Çözümü ekledim herkeze ii çalışmalar.:hey:
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

İlk verdiğim koda yakın bir kodla daha pratik oluyor sanırım alttaki kodla. Formdaki bütün metin kutularını dikkate alır siz sadece "call" diyeceksiniz.
Sizin uygulamaya göre kod aşağıdadır..

Kod:
Private Sub SAYDIM()

 Dim ctl As Control
 Dim bos As Boolean
 Dim sayx As Integer

 sayx = 0

For Each ctl In Me.Controls
bos = True
 If ctl.ControlType = acTextBox Then
If Not IsNull(ctl) And ctl.Value = "x" Then bos = False
 End If
 If bos = False Then sayx = sayx + 1
 Next


Me.Metin15 = sayx

End Sub

Private Sub Metin6_AfterUpdate()
    Call SAYDIM
End Sub
Private Sub Metin9_AfterUpdate()
    Call SAYDIM
End Sub
Private Sub Metin11_AfterUpdate()
    Call SAYDIM
End Sub
Private Sub Metin13_AfterUpdate()
    Call SAYDIM
End Sub
 

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,552
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Altın Üyelik Bitiş Tarihi
29-05-2025
Bir soru

Sn. beab05;

Yukarıdaki yanıtınızda "Formdaki bütün metin kutularını dikkate alır siz sadece "call" diyeceksiniz" ifadesini kullanmaktasınız.

Buradaki "Call" 'un özel bir anlamı yada kullanımı söz konusu mudur? Bilgisizliğimi mazur görün.

Teşekkürler.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Call, SAYDIM isimli oluşturduğumuz fonksiyonu çağırıyor. Böylece her metin kutusu güncelleştirme sonrası için ayrı kod yazmıyoruz. Bu fonsyonu modüle yazsaydık veritabanının tamamını kapsayacaktı. Bu şekilde sadece ilgili form için geçerli. Yukarıdaki kodla ister 4 ister 50 tane metin kutusu olsun hepsi için geçerli bir fonsiyon oluşuyor.
 
Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
Altın Üyelik Bitiş Tarihi
13-09-2021
Formda çok fazla metin kutusu olacak tüm hepsine başvuru yaparsak kullanıcı yanlış bir yere X işareti koymuş ola bilir ozaman yanarız.beab05 sizin örneğiniz gerçektende pratik ama işte dediğim nedenden dolayı sakıncalı olabilir.Peki aralık belirtmek gibi bir şansımız yokmu sayılacak metin kutularına Ctl1 Ctl2 Ctl3 gibi isim verelim Ctl1 ve Ctl3 arasındakileri say gibi mesala.Sorunu yazdığım şekilde çözdüm ben ama pratik çözümler farklı fikirler verebilir ondan soruyorum. Herkeze ilgisinden dolayı teşekkür ederim bu arada arkadaşlar.
 
Üst