Excel Vba ile Acceste sorgu çalıştırmak

crpzz37

Altın Üye
Katılım
4 Kasım 2016
Mesajlar
90
Excel Vers. ve Dili
2010 versıyonunu kullanmaktayım makro dılınde yazım yapmaktayım
Altın Üyelik Bitiş Tarihi
05-04-2027
Merhabalar ;

Acces üzerindeki veritabanın da bir sorgum bulunmakta. Bu sorugu manuel olarak çalıştır diyip çalıştırmaktayım. Ancak excel userform daki kayıt butonuna bastıktan sonra sorguyu çalıştıramadım. Konuda yardımcı olursanız sevinirim.
 

crpzz37

Altın Üye
Katılım
4 Kasım 2016
Mesajlar
90
Excel Vers. ve Dili
2010 versıyonunu kullanmaktayım makro dılınde yazım yapmaktayım
Altın Üyelik Bitiş Tarihi
05-04-2027
konu ile ilgili yardımcı olabilirseniz çok sevinirim. Acceste manuel olarak çalıştırdığım sorgumu excel üzerinden çalıştırıp sonuçlarını excele geri almak istiyorum.
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Örnek dosya olmadan yardımcı olmak biraz zor oluyor ama Access'teki sorguyu çalıştırmak yerine aynı sorguyu Excel'e yazıp kullanmayı deneyebilirsiniz. Access veri tabanı bağlantısı Excel ile kolayca yapılabilir ve verileri doğrudan okuyup işleyebilirsiniz.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,304
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Aşağıdaki örnek kodu inceleyin.....

Burada, Excel dosyası ile aynı yerdeki "Sample.accdb" isimli Access dosyasındaki mevcut "qrRegions" isimli sorgu çalıştırılarak, veriler Excel'e alınmaktadır.

Kodun çalışması için VBA editöründe Tools>References bölümünden "Microsoft ActiveX Data Objects 6.1 Library" referansı eklenmelidir.



C#:
Sub Test()
'   Haluk - 08/07/2020
'
'   Reference: Microsoft ActiveX Data Objects 6.1 Library

    Dim objADO As ADODB.Connection
    Dim objRS As ADODB.Recordset
    Dim strFile As String
    Dim strSQL As String
    
    Set objADO = New ADODB.Connection
    Set objRS = New ADODB.Recordset
    
    strFile = ThisWorkbook.Path & "\" & "Sample.accdb"
    
    With objADO
        If Val(Application.Version) < 14 Then
            .Provider = "Microsoft.Jet.OLEDB.4.0"
        Else
            .Provider = "Microsoft.Ace.OLEDB.12.0"
        End If
       .ConnectionString = strFile
       .Open
    End With
    
    strSQL = "qrRegions"
    
    With objRS
       .CursorType = adOpenStatic
       .CursorLocation = adUseClient
       .LockType = adLockBatchOptimistic
       .ActiveConnection = objADO
       .Source = strSQL
       .Open
    End With
    
    If objRS.RecordCount > 0 Then
        For j = 0 To objRS.Fields.Count - 1
            Cells(1, j + 1) = objRS.Fields(j).Name
        Next
        Range("A2").CopyFromRecordset objRS
    End If
    
    If objRS.State = adStateOpen Then objRS.Close
    If objADO.State = adStateOpen Then objADO.Close
    
    Set objRS = Nothing
    Set objADO = Nothing
End Sub

.
 

crpzz37

Altın Üye
Katılım
4 Kasım 2016
Mesajlar
90
Excel Vers. ve Dili
2010 versıyonunu kullanmaktayım makro dılınde yazım yapmaktayım
Altın Üyelik Bitiş Tarihi
05-04-2027
Aşağıdaki örnek kodu inceleyin.....

Burada, Excel dosyası ile aynı yerdeki "Sample.accdb" isimli Access dosyasındaki mevcut "qrRegions" isimli sorgu çalıştırılarak, veriler Excel'e alınmaktadır.

Kodun çalışması için VBA editöründe Tools>References bölümünden "Microsoft ActiveX Data Objects 6.1 Library" referansı eklenmelidir.



C#:
Sub Test()
'   Haluk - 08/07/2020
'
'   Reference: Microsoft ActiveX Data Objects 6.1 Library

    Dim objADO As ADODB.Connection
    Dim objRS As ADODB.Recordset
    Dim strFile As String
    Dim strSQL As String
   
    Set objADO = New ADODB.Connection
    Set objRS = New ADODB.Recordset
   
    strFile = ThisWorkbook.Path & "\" & "Sample.accdb"
   
    With objADO
        If Val(Application.Version) < 14 Then
            .Provider = "Microsoft.Jet.OLEDB.4.0"
        Else
            .Provider = "Microsoft.Ace.OLEDB.12.0"
        End If
       .ConnectionString = strFile
       .Open
    End With
   
    strSQL = "qrRegions"
   
    With objRS
       .CursorType = adOpenStatic
       .CursorLocation = adUseClient
       .LockType = adLockBatchOptimistic
       .ActiveConnection = objADO
       .Source = strSQL
       .Open
    End With
   
    If objRS.RecordCount > 0 Then
        For j = 0 To objRS.Fields.Count - 1
            Cells(1, j + 1) = objRS.Fields(j).Name
        Next
        Range("A2").CopyFromRecordset objRS
    End If
   
    If objRS.State = adStateOpen Then objRS.Close
    If objADO.State = adStateOpen Then objADO.Close
   
    Set objRS = Nothing
    Set objADO = Nothing
End Sub

.
haluk bey çok teşekkür ederim çok sağolun
 
Üst