Kayıtta Dolu Olan Alanları Saymak

1 2
10/10/2024, 21:23

truhi

Hocalarım merhaba,

Bir tabloda
Alan1, Alan2, Alan3, ...... , Alan9, Alan10 olarak 10 farklı alan mevcut,

Bu alanlarda dolu olan tüm hücreler "X" olarak belirtilmiş durumda,

bu alanlardan toplam kaç alana dolu, kaç alan boş hesaplama yöntemi ile nasıl bulabiliriz?

"DoluAlan" adında yeni bir alan oluşturup buradaki 10 alandan kaç adeti dolu olduğunu sayı ile yazacak.

Hesaplamayı Tabloda yada sorguda yapabilirim, fark etmez.

Kod:
IIF([Alan1]="X";1;0) + IIF([Alan2]="X";1;0) + IIF([Alan3]="X";1;0) +  .....  + IIF([Alan10]="X";1;0)

gibi...
Alanlar tek-tek toplanarak yapılabilir ama; ben daha pratik ve kullanışlı bir çözüm arıyorum.

yardımlarınız için şimdiden teşekkürler,
iyi akşamlar.
10/10/2024, 23:05

onur_can

Alanların boş ve dolu olarak kontrol edilip değişkenlere aktarılabilir fakat, siz bu olayı tek bir kayıt üzerinden mi yapmak istiyorsunuz yoksa tabloda bulunan tüm kayıtlarda mı
Örneğin;
Tabloda 15 tane kayıt olsun, her bir kayıt 10 alandan oluşuyor doğrumu, şimdi;
1.Kayıtta 5 alan boş, 5 alan dolu,
2.kayıtta 7 alan boş, 3 alan dolu,
3.kayıtta 4 alan boş, 6 alan dolu,
4.kayıtta 9 alan boş, 1 alan dolu,
.......
.......
15.kayıtta 2 alan boş 8 alan dolu
tüm kayıtlarda boş alanların sayısı 56
dolu olan kayıtların sayısı 87
duruma göre kodda değişir.
11/10/2024, 13:53

truhi

(10/10/2024, 23:05)onur_can yazdı: Alanların boş ve dolu olarak kontrol edilip değişkenlere aktarılabilir fakat, siz bu olayı tek bir kayıt üzerinden mi yapmak istiyorsunuz yoksa tabloda bulunan tüm kayıtlarda mı
Örneğin;
Tabloda 15 tane kayıt olsun, her bir kayıt 10 alandan oluşuyor doğrumu, şimdi;
1.Kayıtta 5 alan boş, 5 alan dolu,
2.kayıtta 7 alan boş, 3 alan dolu,
3.kayıtta 4 alan boş, 6 alan dolu,
4.kayıtta 9 alan boş, 1 alan dolu,
.......
.......
15.kayıtta 2 alan boş 8 alan dolu
tüm kayıtlarda boş alanların sayısı 56
dolu olan kayıtların sayısı 87
duruma göre kodda değişir.


Hocam Satır- satır yani her bir kayda ayrı bakacak

Tabloda 15 tane kayıt olsun, her bir kayıt 10 alandan oluşuyor doğrumu, şimdi;
1.Kayıtta 5 alan boş, 5 alan dolu,
2.kayıtta 7 alan boş, 3 alan dolu,
3.kayıtta 4 alan boş, 6 alan dolu,
4.kayıtta 9 alan boş, 1 alan dolu


iyi Çalışmalar.
11/10/2024, 17:08

atoykan

10 alanlı tablonuza dayalı bir form oluşturduğunuzu varsayalım. Oluşturduğunuz 10 textboxta bu alanların verileri olacaktır. Bunlara ek olarak ilişkisiz 2 textbox ekleyip birini txt_BosAlan birini txt_DoluAlan diye adlandırırsak formun geçerli olduğu (Form_Current) olayında tanımlayacağımız
Dim AlanSay As Integer, DoluAlan As Integer, BosAlan As Integer
    Dim ctl As Control
   
    AlanSay = 0
    DoluAlan = 0
    BosAlan = 0
   
    For Each ctl In Me.Controls    'Tüm kontroller döngüye sokularak
        If ctl.ControlType = acTextBox And Not IsNull(ctl.ControlSource) Then  'burada denetim kaynağı olmayanlar hariç textboxlar tanımlı ancak sayımı net yapmak için alan isimlendirmelerine göre kriter eklenebilir
            AlanSay = AlanSay + 1  'formdaki kontrollere göre alan sayısı belirlenir
            If Nz(ctl.Value, "") <> "" Then    'Kontrolde herhangi bir değer mevcut mu kontol edilir
                DoluAlan = DoluAlan + 1    'Mevcut ise dolu alan sayısı 1 arttırılır
            Else
                BosAlan = BosAlan + 1    'Değilse boş alan sayısı 1 arttırılır
            End If
        End If
    Next ctl
   
    Me.txtDoluAlan.Value = DoluAlan    'Sonuçlar ilgili alanlara yazıdırılır
    Me.txtBosAlan.Value = AlanSay - DoluAlan    'Burada işlem ile de yazılabilir =BosAlan denilerek doğrudan sonuç da işlenebilir
şeklinde bir kod bize istediğimiz sonucu verecektir. Döngünün If ctl.ControlType = acTextBox And Not IsNull(ctl.ControlSource) Then kısmı denetimleri tablo alanlarına dayanmayan ilişkisiz textboxlarımızı sayımın dışında bırakacağından kontrol sayısı tablodaki tüm alanları eklediğiniz varsayımı altında alan sayısını verecektir keza aynı şekilde illa ki 10 alanlı bir tablo olması gerekmez alan sayısını da otomatik olarak hesaplamanıza yardımcı olacaktır.
11/10/2024, 17:12

truhi

(11/10/2024, 17:08)atoykan yazdı: 10 alanlı tablonuza dayalı bir form oluşturduğunuzu varsayalım. Oluşturduğunuz 10 textboxta bu alanların verileri olacaktır. Bunlara ek olarak ilişkisiz 2 textbox ekleyip birini txt_BosAlan birini txt_DoluAlan diye adlandırırsak formun geçerli olduğu (Form_Current) olayında tanımlayacağımız
Dim AlanSay As Integer, DoluAlan As Integer, BosAlan As Integer
Dim ctl As Control

AlanSay = 0
DoluAlan = 0
BosAlan = 0

For Each ctl In Me.Controls 'Tüm kontroller döngüye sokularak
If ctl.ControlType = acTextBox And Not IsNull(ctl.ControlSource) Then 'burada denetim kaynağı olmayanlar hariç textboxlar tanımlı ancak sayımı net yapmak için alan isimlendirmelerine göre kriter eklenebilir
AlanSay = AlanSay + 1 'formdaki kontrollere göre alan sayısı belirlenir
If Nz(ctl.Value, "") <> "" Then 'Kontrolde herhangi bir değer mevcut mu kontol edilir
DoluAlan = DoluAlan + 1 'Mevcut ise dolu alan sayısı 1 arttırılır
Else
BosAlan = BosAlan + 1 'Değilse boş alan sayısı 1 arttırılır
End If
End If
Next ctl

Me.txtDoluAlan.Value = DoluAlan 'Sonuçlar ilgili alanlara yazıdırılır
Me.txtBosAlan.Value = AlanSay - DoluAlan 'Burada işlem ile de yazılabilir =BosAlan denilerek doğrudan sonuç da işlenebilir
şeklinde bir kod bize istediğimiz sonucu verecektir.

Hocam bahsetmiş olduğunuz kodlar formda kullanılacak galiba;
ben tablo yada sorgu üzerinde yapmak için sormuştum
teşekkürler,
11/10/2024, 17:15

atoykan

Evet form için, sorularınız hep Access olduğundan Excel olduğunu gözönüne almadan ezbere yazmışım pardon. Excel içinde bu işlem çok daha kolay boş hücrede çokeğersay formülü ile pratik bir şekilde boş ve dolu alanları sayabilirsiniz.

Örneğin  ÇOKEĞERSAY(A1:J1;"<>") formülü A1:j1 arasında dolu hücre sayısını verir, ÇOKEĞERSAY(A1:J1;"") ise boş hücre sayısını verir. Exceli doğru mu denemeden yazamıyorum o yüzden editledim cevabı.
1 2