[VBA] String ve Integer değerleri ayrı ayrı toplama
#1
access-sql-9 
Arkadaşlar formum üzerinden bir toplama işlemi yapmak istiyorum ancak başaramadım. Nöbet listem var izinler form üzerine otomatik geliyor Nİ, Yİ, Sİ vb gibi. bunların sayısını alıp personelin çalışma saati ile çarpıp çalışma saatini hesapliyorum. Sorunum şu bu izinler forma geldikten sonra boş alanlara nöbetleri yazıyorum 8, 16, 24, 5 vb gibi sayısal değerler. bu değerleride toplayıp önceki hesap ettiğim değerin üzerine ekleme istiyorum. ancak arada string değerler olduğu için başaramadım bir türlü yardım bekliyorum.

Visual Basic
  1. Dim TpCalisma As Integer
  2.  
  3. intMonth = Me.ay2
  4. intYear = Me.yıl
  5.  
  6.  
  7. TpCalisma = 0
  8. For k = 1 To 31
  9.  
  10. If Me.Controls("Etiket" & Format(k, "00")).Visible = True Then
  11. If Not IsNull(Me.Controls("gun" & Format(k, "00")).Value) Then
  12. If Me.Controls("gun" & Format(k, "00")).Value = DLookup("KISALTMA", "TBL_izin_türleri", "[ÇALIŞMA SÜRESİNDEN DÜŞ] =-1") Or Me.Controls("gun" & Format(k, "00")).Value = DLookup("KISALTMA", "TBL_rapor_türleri", "[ÇALIŞMA SÜRESİNDEN DÜŞ] =-1") Or Me.Controls("gun" & Format(k, "00")).Value = DLookup("KISALTMA", "TBL_görevlendirme_türleri", "[ÇALIŞMA SÜRESİNDEN DÜŞ] =-1") Then
  13.  
  14. If Not Format(Me.Controls("Etiket" & Format(k, "00")).Value, "dddd") = "Cumartesi" Then
  15. If Not Format(Me.Controls("Etiket" & Format(k, "00")).Value, "dddd") = "Pazar" Then
  16.  
  17.  
  18. TpCalisma = TpCalisma + 1 * DLookup("[ÇALIŞMA SAATİ]", "Tbl_personel", "[ID] =" & Me.adısoyadı_liste.Column(1))
  19.  
  20. End If
  21. End If
  22. End If
  23. End If
  24. End If
  25.  
  26. Next
  27. Me.toplamcalismasuresi.Value = TpCalisma
  28. End Sub





  Alıntı
Bu mesajı beğenenler:
#2
TpCalisma = TpCalisma + 1 * cdbl(nz(DLookup("[ÇALIŞMA SAATİ]", "Tbl_personel", "[ID] =" & Me.adısoyadı_liste.Column(1)),0))

Cdbl() ---> Cift Sayiya cevirir
Nz() ------> Bos dondugunde sifir atar ve matamatiksel islem gerceklesir.



  Alıntı
Bu mesajı beğenenler:
#3
Cevap için teşekkürler Sezgin bey. Yalnız sorumda çalışma saatim de sıkıntı yok. Çalışma saatim 8, 6,5, 5 gibi sayısal ifadeler. mesele nöbet yazılan form üzerinde kutucuklara integer ve string aynı anda geliyor.

metin ifadeleri sayıp * çalışma saati ile
nöbet olarak yazılan saatleri de toplayıp en son ikisini toplyayacak. Ben şu şekilde sorunu çözdüm.

Visual Basic
  1. Private Sub saatler()
  2. Dim inta As Integer, intJ As Integer, deger As String
  3. Dim i As Integer
  4. Dim saattoplam As Integer
  5.  
  6. For inta = 1 To 31
  7. deger = Format(inta, "00")
  8. 'saattoplam = 0
  9.  
  10.  
  11. 'If Me("gun" & deger) <> "" Then
  12. saattoplam = saattoplam + Val(Nz(Me("gun" & deger), 0))
  13. 'End If
  14.  
  15. Next inta
  16. Me.saataktar = saattoplam
  17. End Sub



ilginiz için teşekkürler



  Alıntı
Bu mesajı beğenenler:
#4
Arkadaşlar daha önceden açtığım bu konu için sorun çözüldü demiştim ancak buradaki işlemde virgüllü rakamların toplanmadığını gördüm. örneğin 6,5 yazdığımda bunu hep 6 olarak hesaplıyor.

Visual Basic
  1. Private Sub calisilansaatler()
  2. Dim inta As Integer, intJ As Integer, deger As String
  3. Dim i As Integer
  4. Dim saattoplam As Integer
  5.  
  6. For inta = 1 To 31
  7. deger = Format(inta, "00")
  8.  
  9. saattoplam = saattoplam + Val(Nz(Me("gun" & deger), 0))
  10.  
  11.  
  12. Next inta
  13. Me.text_toplamcalismasüresi = saattoplam
  14. End Sub





  Alıntı
Bu mesajı beğenenler:
#5
virgüllü rakamlar hangisiyse Dim deyiminde Double olarak tanıtınız. Örnek
Visual Basic
  1. Dim inta As Double


gibi.



  Alıntı
Bu mesajı beğenenler:
#6
(10-10-2017, 18:03)onur_can demiş ki: virgüllü rakamlar hangisiyse Dim deyiminde Double olarak tanıtınız. Örnek
Visual Basic
  1. Dim inta As Double


gibi.

Sayın onur_can inta integer bir değer 1-31 arası. saattoplam'a Double olarak tanımladığım zaman da 6,5 leri yine toplamıyor 6.5 olarak yazınca topluyor. bu 6.5 veritabanında yanlış ifadeye neden olur mu? yani benim derdim 6,5 saati toplatmak. Ayrıca 6.5 yaptığımda toplatabildim ancak 6.5 çalışma saati mesai saati hesabında yanlış bir değer atıyor. 136,5 olması gerekirken 1365 yazıyor



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Alt Form Toplama Dsum Fonksiyonu osman06 6 409 27-11-2025, 16:31
Son Mesaj: osman06
  2 Sayıyı Toplama omergenc7 2 296 20-01-2025, 12:58
Son Mesaj: omergenc7
  Liste Kutusunu Gruplandırarak Toplama karacahil 2 364 06-12-2024, 19:38
Son Mesaj: karacahil
  Seçmeli Toplama Satir 2 433 02-12-2024, 11:48
Son Mesaj: Satir
  [VBA] Bir Tabloda Alan Türü Uzun Metin Olan Iki Ayrı Alanı Karşılaştırmak abkbek 13 1.189 10-11-2023, 22:26
Son Mesaj: abkbek
  [SORGU] Farklı Tablolarda Yer Alan Satış Bilgilerini Toplama Sorgusu Lidervet 1 481 09-11-2023, 00:54
Son Mesaj: dsezgin
  Tabloda 0'ın Altındaki Negatif Değerleri 0 Olarak Yazmak Yada Boş Bos Göstermek ofbayoglu61 4 579 15-07-2023, 13:16
Son Mesaj: ofbayoglu61
  [FONKSiYON] Ardışık Sayı Toplama 1 Er Artan Ahmet51 3 479 27-03-2023, 13:58
Son Mesaj: halily

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi