AccessTr.neT
Excel Ado Kullanımı - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Excel (https://accesstr.net/forum-microsoft-excel.html)
+--- Forum: Excel Cevaplanmış Soruları (https://accesstr.net/forum-excel-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Excel Ado Kullanımı (/konu-excel-ado-kullanimi.html)

Sayfalar: 1 2 3 4 5 6


Excel Ado Kullanımı - accessman - 18/01/2020

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


Cvp: Excel Ado Kullanımı - accessman - 18/01/2020

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


Cvp: Excel Ado Kullanımı - accessman - 18/01/2020

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


Cvp: Excel Ado Kullanımı - accessman - 18/01/2020

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 


Cvp: Excel Ado Kullanımı - accessman - 18/01/2020

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


Cvp: Excel Ado Kullanımı - accessman - 18/01/2020

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