• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Formda Alan İçindeki Verileri Saydırma

Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
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:
 
Ekteki dosyayı inceleyin.. Takıldığınız yer olursa buraya yazın. Kolay gelsin.
 
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.
 
Sayın kocivan
Tam okumamışım.. Özür dilerim.. İstediğiniz şekilde yapmak için de araştırıyorum..
 
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..
 
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.
 
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;)
 
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.... :)))
 
Yok hocam, istenilenin ne olduğunu tam öğrenmeden uğraşmak istemiyorum ama merak ta ediyorum ;) Herneyse soru sahibi açıklar umarım...
 
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.
 
İlginize teşekkür ederim tabi bu konu için daha ii bir çözüm öneriniz varsa onuda öğrenmek isterim.
 
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.
 
Rica

Sn. kocivan;

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

Teşekkürler.
 
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
 
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.
 
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.
 
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.
 
Geri
Üst