Access'den Excel'e Veri Aktarma Sorunu

1 2
13/09/2021, 14:56

karacaayt

Arkadaşlar ekte gönderdiğim dosyalarla Access sorgu tablosundan excel' veri almaya çalışıyorum Vba kodlarını yazdım ama bir türlü beceremedim yardımcı olursanız sevinirim.
13/09/2021, 15:31

berduş

access veritabanındaki sorgunuz hatalı önce onu düzenlemelisiniz?
sorgu kodunuzu aşağıdaki kodla değiştirebilirsiniz
unutmayın bu kod accessteki  sorgu1 kodu
SELECT Personel.Ad, Personel.Soyad, Sum(Satıs.tutar) AS İfade1
FROM Personel INNER JOIN Satıs ON Personel.Sicil = Satıs.Sicil, Satıs AS Satıs_1 INNER JOIN Personel AS Personel_1 ON Satıs_1.Sicil = Personel_1.Sicil
GROUP BY Personel.Ad, Personel.Soyad;
kodu aşağıdaki gibi düzenleyip dener misiniz?
bu kod ise Excelde olacak
Dim Sql As String
Dim ADO_RS As ADODB.Recordset
Dim ADO_CN As ADODB.Connection

SQL = "SELECT * FROM Sorgu1 WHERE Ad = 'Fatih'"


Set ADO_RS = New ADODB.Recordset
Set ADO_CN = New ADODB.Connection

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & ThisWorkbook.Path & "\Örnek.accdb;"
   
ADO_CN.Open
ADO_RS.Open SQL, ADO_CN, 3, 1 ' güncelleme yapabilmek için 1,3 0lmalı yada  adOpenKeyset, adLockOptimistic

Sheets("Sayfa1").Range("A3").CopyFromRecordset ADO_RS


son:
ADO_RS.Close
ADO_CN.Close
Set ADO_RS = Nothing
Set ADO_CN = Nothing

kusura bakmayın unutmuşum belirtmeyi 
referanslardan Microsoft ActiveX Data Object x.x Library eklenmeli
13/09/2021, 17:23

karacaayt

@berduş Üstat yardımın için çok teşekkürler, seni de uğraştırıyorum ama access'teki sorgu1 için verdiğin Sql kodu ile toplam sütununda veriler hatalı oldu yani topla sonucu doğru değil.
 
Bir de üstat verileri ayrı ayrı hücrelere yardırmak için ne  yapmalı aşağıdaki kodu kullandım ama hata verdi.

Kod:
Sheets("Sayfa1").Range("A4") = ADO_RS.Fields("Ad")
 
13/09/2021, 17:34

berduş

(13/09/2021, 17:23)karacaayt yazdı: toplam sütununda veriler hatalı oldu yani topla sonucu doğru değil.
sorgunuzdaki amacı bilmediğimden çalışan bir sorgu olsun diye yazmıştım aslında sorgu kısmı için yeni konu açıp orada ayrıntılı açıklamada bulunarak sormanız daha uygun
(13/09/2021, 17:23)karacaayt yazdı: ayrı ayrı hücrelere yardırmak için ne  yapmalı
amacınız tam olarak ne o önemli bütün sorguyu alacaksanız önerdiğim CopyFromRecordset ADO_RS kodu zaten tüm veriyi alıyor
ama amacınız belli bir kaydın verilerini belli hücreler aktarmaksa
Sheets("Sayfa1").Range("A4") = ADO_RS.Fields("Ad")
aslında doğru hata vermemesi gerek
dosyanızın hata veren haliyle ekler misiniz?
16/09/2021, 16:37

karacaayt

Kod:
Sheets("Sayfa1").Range("A3").CopyFromRecordset ADO_RS
 Sorun bu kod ile aşağıdaki kodu aynı anda çalışmıyormuş, bunu silince düzeldi. 

Kod:
Sheets("Sayfa1").Range("A4") = ADO_RS.Fields("Ad")

Şimdi de şöyle bir sorumun var. Sorgudaki belirli bir kolonu Excel de belirli bir kolona yazdırmak istiyorum ama beceremedi. Örneğin sorgudaki "Ad" kolonunundaki bütün verileri  Excel de "B4" hücresinden aşağı doğru yazdır diyebilir miyim?
16/09/2021, 16:47

berduş

Sorgudan gelen tüm veriler mi sayfaya aktarılacak yoksa sadece belli başlı sütunlar mı?
mesela Sheets("Sayfa1").Range("A2").CopyFromRecordset ADO_RS kodu sorgudaki tüm verileri A2'den aşağı doğru kopyalar
isterseniz verileri alrken kullandığınız sorguda alanların yerini değiştirerek istediğiniz alanın istediğiniz sütuna gelmesini sağlayabilirsiniz
ama açıkçası kast ettiğinizi tam anlamadım sadece tek sütun mu alınacak
yoksa 2. sütun B2'ye 6. sütun C2 arada 3 sütun boş bırak 3 sütun D2'ye tarzı bir şey mi istediğiniz
gerekirse elle girerek görünmesini istediğiniz sonucu hazırlar mısınız
1 2