Skip to main content

AccessTr.neT


Excel Ado Kullanımı

Excel Ado Kullanımı

Çözüldü #1
Arkadaşlar elimizdeki kodu analiz etmeme yardımcı olur musunuz kod şudur

Private Sub connectExcelSheet()
    Dim Sql As String
    Dim BasTarih As Long, BitTarih As Long
    Dim VTSonSatir As Long
    Dim ADO_RS As ADODB.Recordset
    Dim ADO_CN As ADODB.Connection
    Dim ToplamTutar As Double
    '
    ToplamTutar = 0
   
    VTSonSatir = Sheets("DetayVeri").Cells(1048576, 8).End(xlUp).Row
   
    BasTarih = Cells(1, Selection.Column)
    BitTarih = Cells(2, Selection.Column)
   
    Sql = "SELECT TARIH, NAKIT_AKIS_KODU, HESAP_KODU, HESAP_ADI, ACIKLAMA, Doviz_TL, Doviz_USD, Doviz_EURO "
    Sql = Sql & vbCrLf
    Sql = Sql & "FROM [DetayVeri$E10:AH" & VTSonSatir & "] "
    Sql = Sql & vbCrLf
    Sql = Sql & "WHERE SUBE_UNVAN = '" & Cells(Selection.Row, 11) & "' "
    Sql = Sql & "AND RaporGrupKodu = '" & Cells(Selection.Row, 12) & "' "
    Sql = Sql & "AND YilAyGun Between " & BasTarih & " AND " & BitTarih & " "
    Sql = Sql & vbCrLf
    Sql = Sql & "ORDER BY TARIH "
   
    Cells(1, 1) = SQL
    '
    Set ADO_RS = New ADODB.Recordset
   
    Set ADO_CN = New ADODB.Connection
    ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 8.0;hdr=yes"""
    ADO_CN.Open
    ADO_RS.Open SQL, ADO_CN, 3, 1
    '
    '  Eğer Hiç Kayıt Yoksa
        If ADO_RS.RecordCount = 0 Then
        ADO_RS.Close
        ADO_CN.Close
        Set ADO_RS = Nothing
        Set ADO_CN = Nothing
        MsgBox "Kayıt Bulunamadı.", vbCritical, "Veri Yok"
        Exit Sub
        End If
    ADO_RS.MoveFirst
        Do While Not ADO_RS.EOF
        Lst_Detay.AddItem
    '        Lst_Detay.Column(0, Lst_Detay.ListCount - 1) = ADO_RS.Fields("Departman").Value
    '        Lst_Detay.Column(1, Lst_Detay.ListCount - 1) = ADO_RS.Fields("MuhasebeHesapNo").Value
    '        Lst_Detay.Column(2, Lst_Detay.ListCount - 1) = Format(ADO_RS.Fields("FullTarih").Value, "DD/MM/YYYY")
    '        Lst_Detay.Column(3, Lst_Detay.ListCount - 1) = ADO_RS.Fields("FisNo").Value
    '        Lst_Detay.Column(4, Lst_Detay.ListCount - 1) = ADO_RS.Fields("Aciklama").Value
    '        Lst_Detay.Column(5, Lst_Detay.ListCount - 1) = Format(ADO_RS.Fields("Tutar_TL").Value, "#,###.00")
    '        ToplamTutar = ToplamTutar + ADO_RS.Fields("Tutar_TL").Value
        ADO_RS.MoveNext
        Loop
   
   
   
    Lst_Detay.TextAlign = fmTextAlignRight
    Txt_KayitSayisi.Text = ADO_RS.RecordCount
    Txt_ToplamTutar.Text = Format(ToplamTutar, "#,###.00")
   
    ADO_RS.Close
    ADO_CN.Close
    Set ADO_RS = Nothing
    Set ADO_CN = Nothing
    '
    'Lst_Detay.Height = 445
   
    DoEvents
End Sub
@benbendedeilem
Son Düzenleme: 18/01/2020, 09:00, Düzenleyen: accessman.
Cevapla
#2
Baştaki tanımlamaları geçelim şuradan başlayalım

VTSonSatir = Sheets("DetayVeri").Cells(1048576, 8).End(xlUp).Row

"1048576" satır değeri galiba ama o sayfadaki son dolu sayfayı mı yazmış neye göre belirlenmiş 
"xlUp" de yukarı tara demek heralde ama bunun neden sondan başa olduğunu anlamadım
son satır bulmada daha önce paylaşılan farklı kombinasyonlar var ilk boş gördüğünde son satır diye geri dönenler var
bana lazım olan belirlenen sutun aralığına göre dolu olan son sutunu bulan cümlecik nedir acaba mesela bu olabilir mi

Kod
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
şu örnek buldum
.rar Find Last Cell VBA Example.rar (Dosya Boyutu: 65,81 KB | İndirme Sayısı: 7)
Son Düzenleme: 18/01/2020, 09:29, Düzenleyen: accessman.
Cevapla
#3
benim işimi görecek herhalde bu modul olabilir sayfadaki sağdan ve alttan en son dolu olan hücrenin satır numarasını buluyor
.rar m_Find.rar (Dosya Boyutu: 972 Bayt | İndirme Sayısı: 1)
@benbendedeilem
Son Düzenleme: 18/01/2020, 09:55, Düzenleyen: accessman.
Cevapla
#4
kodu analiz etmeye devam edelim

BasTarih = Cells(1, Selection.Column)


SQL = Sql & "WHERE SUBE_UNVAN = '" & Cells(Selection.Row, 11) & "' "


burada "Selection.Row" ve  "Selection.Column" nedir anlamadım muhtemelen bizim tarihleri tuttuğumuz hücrenin satır, sutun numarası 
ama sonradan girilen bir değer midir yoksa o satırdaki son satır, sutun mudur 
Son Düzenleme: 18/01/2020, 10:21, Düzenleyen: accessman.
Cevapla
#5
gelelim Excel cümlesine "from" dan önce yazan bu kısımda

SQL = "SELECT TARIH, NAKIT_AKIS_KODU, HESAP_KODU, HESAP_ADI, ACIKLAMA, Doviz_TL, Doviz_USD, Doviz_EURO "

bunlar veri aldığımız sutunların ilk hücrelerimi yani sutun başlıklarımı yoksa istediğimiz herhangi bir isim olabilir mi
Son Düzenleme: 18/01/2020, 10:11, Düzenleyen: accessman.
Cevapla
#6
geldik bağlantı cümlesine

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 8.0;hdr=yes"""

burada
"ThisWorkbook.FullName" değişken midir sabit midir 
"excel 8.0" kullandığımız excele göre değişen bir değer midir
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da