VBA ve SQL ile Accesteki Veriyi Saydırma

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Excel VBA ve SQL kullanarak Acces veri tabanı üzerinden, veri ekleme, silme gibi işlemler yapıyorum. Bir konuda yardıma ihtiacım var.
Acceste “uiayrilmasebepleri” isminde tablom ve bu tabloda “UİSEBEPLERİ” isminde başlığım var. Ayrıca yine Acceste “Uİ” adında tablom var ve bu tabloda “UISEBEBİ” isminde başlığım var.
UİSEBEPLERİ başlığı altındaki verilerin, UİSEBEBİ başlığı altındaki verilerde kaç kere geçtiğini msgbox ile göstermek istiyorum.
Örneğin; "UİSEBEPLERİ" sütununda "deneme" diye bir veri olduğunu varsayalım. Bu "deneme" değeri "UİSEBEBİ" tablosunda kaç kere geçiyor gibi

Yardımcı olabilir misiniz

Aşağıdaki benim değişken tanımlamalarım ve bağlantı kodum.

Dim baglan As New Connection

Dim rs As New Recordset

Dim dbPath As String


dbPath = ThisWorkbook.Path & "\2-DB.accdb"

baglan.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Birden çok veri sayılacak anladığım kadarıyla. Bu istediğinizi direk Access içinde bir sorgu oluşturarak yapmak daha kolay gibi geldi bana. Sonrasında bu sorgu ile oluşan tabloyu Excele çekebilirsiniz.
 

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Doğrudur hocam 5 adet veri var. O dediğinizi tam bilmiyorum ama araştırıyorum şuan
 
Katılım
12 Aralık 2015
Mesajlar
1,207
Excel Vers. ve Dili
Türkçe Ofis 2007
İhtiyacınız aşağıdaki gibi SQL metni olsa gerek.
Kod:
SELECT Count(Uİ.UISEBEBİ) AS SAY, Uİ.UISEBEBİ FROM uiayrilmasebepleri LEFT JOIN Uİ ON uiayrilmasebepleri.UİSEBEPLERİ = Uİ.UISEBEBİ GROUP BY Uİ.UISEBEBİ;
 
Son düzenleme:

Astalavista58

Altın Üye
Katılım
20 Ocak 2020
Mesajlar
242
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
20-02-2025
Ali hocam merhaba günaydın, verdiğiniz koddan ve biraz araştırma yaparak yapmak istediğime ulaştım.
Belki başkasının işine yarar diye paylaşıyorum.
Kısaaca kodu açıklayacak olursam;
A ve B tabloları arasında karşılaştırma yaparak, B tablosundaki değerlerin, A tablosunda kaç kere tekrar ettiğini tespit ederek, UserFormumdaki labellara yazıyor.

Kod:
Sub denemeee()
Dim baglan As New Connection
Dim rs As New Recordset
Dim dbPath As String

    dbPath = ThisWorkbook.Path & "\2-DB.accdb"

    baglan.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath

    Dim strSQL As String
    strSQL = "SELECT uiayrilmasebepleri.UİSEBEPLERİ, Count(*) AS KacKereGecti " & _
             "FROM uiayrilmasebepleri " & _
             "INNER JOIN Uİ ON uiayrilmasebepleri.UİSEBEPLERİ = Uİ.UISEBEBİ " & _
             "GROUP BY uiayrilmasebepleri.UİSEBEPLERİ;"

    rs.Open strSQL, baglan


    Dim i As Integer
    i = 69

    Do While Not rs.EOF
        Dim KacKereGecti As Integer
        KacKereGecti = rs.Fields("KacKereGecti").Value
        Dim UISEBEBI As String
        UISEBEBI = rs.Fields("UİSEBEPLERİ").Value
            i = i + 1
            ui.Controls("Label" & i).Caption = UISEBEBI & ": " & KacKereGecti
        rs.MoveNext
    Loop

    rs.Close
    baglan.Close
End Sub
 
Son düzenleme:
Üst