Excel Ado Toplam Alma

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Değerli hocalarım aşağıda Ado sorgusunda toplam süreleri yıl bazında almak istiyorum yardımcı olur musunuz?

Rich (BB code):
   ''2 tarih arası işlem yapılan TC ve izin türü kiriter toplamı
    YIL = "2022"
    İzin_Türü = "'Yıllık İzin'"
    query_yıllık_izin = "SELECT [TC KİMLİK NO],AYRILIS,[İZİN TÜRÜ],SUM(GÜN) + SUM(YOL) FROM [İzinArsiv$E5:Q59999] " & _
            "WHERE AYRILIS >=" & CLng(CDate(tarih1)) & " and AYRILIS <=" & CLng(CDate(tarih2)) & " and [TC KİMLİK NO] = " & İşlem_Yap_TC & " and [İZİN TÜRÜ] = " & İzin_Türü & "" & _
            "GROUP BY [TC KİMLİK NO]"
    rs.Open query, con, 3, 1
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,269
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Merhaba,

238177

SQL:
SELECT `İzinArsiv$`.`TC KİMLİK NO`, `İzinArsiv$`.`ADI SOYADI`, Year(`İzinArsiv$`.AYRILIS) AS [Yıl], Sum(`İzinArsiv$`.GÜN + `İzinArsiv$`.YOL) As [İZİN SÜRESİ]
FROM `İzinArsiv$` `İzinArsiv$`
GROUP BY `İzinArsiv$`.`TC KİMLİK NO`, `İzinArsiv$`.`ADI SOYADI`, Year(`İzinArsiv$`.AYRILIS)
.
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Hocam teşekkür ederim kodu kopyaladım da işaretler çok karışmış düzeltemedim
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,535
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Görmek istediğiniz sonuç Zeki beyin paylaştığı şekilde mi olacak?
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Hocam zeki hocamın yazdığını hiç anlamadım ki çözümlemeye çalıştım olmadı :)
ben ayrı ayrı izinlerin toplamını almak istiyorum sadece toplam sayıyı örnek dosya içinde yazdım yine personelin iki tarih arsında veya son 1 yıl içersinde kullandığı toplam gün+yol gerekiyor userformda label tanımadım onlara arayacam
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,535
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben paylaştığı görseldeki sonucu kastetmiştim.

O sonuç sizin için yeterli mi?
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Evet hocam ama yıl yıl ayırmaya gerek yok belirdiğim tarih aralığında vermesi önemli iki tarih arasında personelin kullandığı izin türlerine göre izin sürelerinin toplamını bulmak istiyorum tek sayı gerekiyor yani anlatabildim umarım hocam
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Merhaba,

Ekli dosyayı görüntüle 238177

SQL:
SELECT `İzinArsiv$`.`TC KİMLİK NO`, `İzinArsiv$`.`ADI SOYADI`, Year(`İzinArsiv$`.AYRILIS) AS [Yıl], Sum(`İzinArsiv$`.GÜN + `İzinArsiv$`.YOL) As [İZİN SÜRESİ]
FROM `İzinArsiv$` `İzinArsiv$`
GROUP BY `İzinArsiv$`.`TC KİMLİK NO`, `İzinArsiv$`.`ADI SOYADI`, Year(`İzinArsiv$`.AYRILIS)
.
Hocam burda bana sadece 55 gerekiyor liste değil
 
Katılım
15 Mart 2005
Mesajlar
353
Excel Vers. ve Dili
Microsoft 365 En 64 Bit
Altın Üyelik Bitiş Tarihi
20-03-2024
Merhaba,

C++:
'...............
    YIL = "2022"
    İzin_Türü = "Yıllık İzin"
    queryYillikPlanli = "SELECT [TC KİMLİK NO], [ADI SOYADI], Sum([GÜN] + [YOL]) AS IZIN_GUNU FROM [İzinArsiv$E5:Q59999] " & _
                            "WHERE [İZİN TÜRÜ] =  ""Yıllık İzin"" AND Year([AYRILIS]) = " & YIL & "  " & _
                                "GROUP BY [TC KİMLİK NO], [ADI SOYADI] "
    rs.Open queryYillikPlanli, con, 3, 1
    '...............
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,310
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Zeki Bey'in MS Query'si ile;


Capture.PNG

.
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Merhaba,

C++:
'...............
    YIL = "2022"
    İzin_Türü = "Yıllık İzin"
    queryYillikPlanli = "SELECT [TC KİMLİK NO], [ADI SOYADI], Sum([GÜN] + [YOL]) AS IZIN_GUNU FROM [İzinArsiv$E5:Q59999] " & _
                            "WHERE [İZİN TÜRÜ] =  ""Yıllık İzin"" AND Year([AYRILIS]) = " & YIL & "  " & _
                                "GROUP BY [TC KİMLİK NO], [ADI SOYADI] "
    rs.Open queryYillikPlanli, con, 3, 1
    '...............
Msgbox rs yazdım sonuç çıkmadı ama ben liste şeklinde istemiyorum sadece toplam kaç gün izin kullanmış onu istiyorum Zeki hocamın MS Query'si ile yaptığı yöntemde yer alan 55 sayısını istiyorum.

@Haluk hocam teşekkür ederim MS Query öğrenemedim henüz birde ben dinamik bir sonuç için uğraşıyorum ben sadece 1 yılda kullanmış olduğu toplam izin süresi olan 55 sayısını bulmak istiyorum
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Hocam recordset nesnesi ile bir şeyler yapmaya çalıştım
238203
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Tek satırlık kod ile çözemedim bu şekilde yaptım hocam

Rich (BB code):
   '....

    'İZİN TOPLAMLARINI AL

    query = "SELECT [TC KİMLİK NO],[İZİN TÜRÜ],AYRILIS,GÜN,YOL FROM [İzinArsiv$E5:Q59999] WHERE [TC KİMLİK NO]=" & İşlem_Yap_TC & " Order by AYRILIS desc"

          

 

 

    'Set rs = con.Execute(query)

    rs.Open query, con, 3, 1

  

    toplamyıllıkizinsüresi = 0

    toplamraporsüresi = 0

    toplamidariizinsüresi = 0

    toplamyıllıkmezaret = 0

  

    ''RecordSet sonuçlarını belirli alanlara yazdırmak için döngü

    Do Until rs.EOF 'until true olana kadar döngü döner

     'MsgBox rs.Fields.Item(2).Value 'izin ayrılıs tarihi

     If rs.Fields.Item(2).Value > DateValue("01.01.2022") And rs.Fields.Item(2).Value < DateValue("31.12.2022") Then

            If rs.Fields.Item(1).Value = "Yıllık İzin" Then

                 toplamyıllıkizinsüresi = toplamyıllıkizinsüresi + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value

             ElseIf rs.Fields.Item(1).Value Like "Yıllık Mazeret İzni" & "*" Then

                toplamyıllıkmezaret = toplamyıllıkmezaret + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value

             ElseIf rs.Fields.Item(1).Value Like "İdari İzin" & "*" Then

                toplamidariizinsüresi = toplamidariizinsüresi + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value

             ElseIf rs.Fields.Item(1).Value Like "Rapor" & "*" Then

                toplamraporsüresi = toplamraporsüresi + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value

        End If

     End If

 

    rs.movenext 'bir sonraki değere

    Loop

  

    lbl_kalan_yıllık_izin_süresi = 30 - toplamyıllıkizinsüresi & " GÜN YILLIK İZNİ KALDI"

    lbl_mezaret_izin_süresi = toplamyıllıkmezaret & " GÜN MEZARET İZNİ KULLANMIŞ"

    lbl_idari_izin_süresi = toplamidariizinsüresi & " GÜN İDARİ İZİN KULLANMIŞ"

    lbl_rapor_süresi = toplamraporsüresi & " GÜN RAPOR KULLANMIŞ"

  

    On Error Resume Next

    rs.Close: Set rs = Nothing

    con.Close: Set con = Nothing
 
Katılım
15 Mart 2005
Mesajlar
353
Excel Vers. ve Dili
Microsoft 365 En 64 Bit
Altın Üyelik Bitiş Tarihi
20-03-2024
Msgbox rs yazdım sonuç çıkmadı ama ben liste şeklinde istemiyorum sadece toplam kaç gün izin kullanmış onu istiyorum Zeki hocamın MS Query'si ile yaptığı yöntemde yer alan 55 sayısını istiyorum.

@Haluk hocam teşekkür ederim MS Query öğrenemedim henüz birde ben dinamik bir sonuç için uğraşıyorum ben sadece 1 yılda kullanmış olduğu toplam izin süresi olan 55 sayısını bulmak istiyorum
Merhaba,

Siz başta yıllık izin dediğiniz için Where komutunda "Yıllık İzin" koymuştum.

O zaman aşağıdaki kodu deneyin. Sonucu Sayfa 2'ye yazdırır.

C++:
'...................
    YIL = "2022"
    queryYillikPlanli = "SELECT [TC KİMLİK NO], [ADI SOYADI], Sum([GÜN] + [YOL]) AS IZIN_GUNU FROM [İzinArsiv$E5:Q59999] " & _
                            "WHERE Year([AYRILIS]) = " & YIL & "  " & _
                                "GROUP BY [TC KİMLİK NO], [ADI SOYADI] "
    rs.Open queryYillikPlanli, con, 3, 1
    Sayfa2.Range("A1").CopyFromRecordset rs
    '...................
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Hocam ayrı ayrı toplamları gerekiyor izin türleri dosyada yazdıklarım son mesajda if komutuylada atamasını yaptığım şekliyle gerekiyor tekrar bakma şansınız var mı
 
Katılım
15 Mart 2005
Mesajlar
353
Excel Vers. ve Dili
Microsoft 365 En 64 Bit
Altın Üyelik Bitiş Tarihi
20-03-2024
Hocam ayrı ayrı toplamları gerekiyor izin türleri dosyada yazdıklarım son mesajda if komutuylada atamasını yaptığım şekliyle gerekiyor tekrar bakma şansınız var mı
Bu şekilde mi istiyorsunuz?

C++:
'...................
    YIL = "2022"
    queryYillikPlanli = "SELECT [TC KİMLİK NO], [ADI SOYADI], [İZİN TÜRÜ], Sum([GÜN] + [YOL]) AS IZIN_GUNU FROM [İzinArsiv$E5:Q59999] " & _
                            "WHERE Year([AYRILIS]) = " & YIL & "  " & _
                                "GROUP BY [TC KİMLİK NO], [ADI SOYADI], [İZİN TÜRÜ] "
    rs.Open queryYillikPlanli, con, 3, 1
    Sayfa2.Range("A1").CopyFromRecordset rs
'...................
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Sayfa2.Range("A1").CopyFromRecordset rs
yerine msgbox olarak personelin 2022 yılında kullandığı yıllık planlı, yıllık mezaret,rapor, idari iznin toplamını bulmak istiyorum. Aşağıda yazdığım döngüde yer alan değerleri bulmaya çalışıyorum.
Kod:
Do Until rs.EOF 'until true olana kadar döngü döner

     'MsgBox rs.Fields.Item(2).Value 'izin ayrılıs tarihi

     If rs.Fields.Item(2).Value > DateValue("01.01.2022") And rs.Fields.Item(2).Value < DateValue("31.12.2022") Then

            If rs.Fields.Item(1).Value = "Yıllık İzin" Then
                 toplamyıllıkizinsüresi = toplamyıllıkizinsüresi + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value
             ElseIf rs.Fields.Item(1).Value Like "Yıllık Mazeret İzni" & "*" Then
                toplamyıllıkmezaret = toplamyıllıkmezaret + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value
             ElseIf rs.Fields.Item(1).Value Like "İdari İzin" & "*" Then
                toplamidariizinsüresi = toplamidariizinsüresi + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value
             ElseIf rs.Fields.Item(1).Value Like "Rapor" & "*" Then
                toplamraporsüresi = toplamraporsüresi + rs.Fields.Item(3).Value + rs.Fields.Item(4).Value
            End If
     End If
    rs.movenext 'bir sonraki değere
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,310
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bir de ekli dosyaya bakın o zaman...


.
 

Ekli dosyalar

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
217
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Hocam eline koluna sağlık tam istediğim gibi kodu çözmeye çalışıyorum iç içe sorgu olmuş örnek olması açısından çok iyi
 
Üst