![]() |
Access den Excel e sayfa bazlı veri gönderimi - Baskı Önizleme +- AccessTr.neT (https://accesstr.net) +-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html) +--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html) +--- Konu Başlığı: Access den Excel e sayfa bazlı veri gönderimi (/konu-access-den-excel-e-sayfa-bazli-veri-gonderimi.html) |
Access den Excel e sayfa bazlı veri gönderimi - kdurmaz - 14/02/2009 Sevgili hocalarımız, sevgili forum üyeleri... Başlığı özellikle bu şekilde yazmak istedim çünkü benim yapmayı düşündüğüm seçimli veri gönderimi forumdaki diğer örneklerden biraz farklı. Ben sorumu açıklayayım, sizler icabında varolan örnekleri benim sorunuma nasıl uyarlayacağımı da anlatabilirsiniz. Sorum şu: Access Tablomda varolan verileri alan bazında, istediğim alandaki değer değişiminde excele atarken ayrı sayfalar halinde atması. Dahada açıklayıcı olsun: Diyelimki kişi bilgilerini tuttuğum bir veritabanım olsun. Ben bunları excele göndermek istiyorum ama her kişinin bilgisini excelde aynı dosyada ayrı ayrı sayfalara atmasını istiyorum ve o sayfaya ilgili kişinin ismini yazmasını istiyorum. Dediğim gibi forumdaki ilgili örnekleri inceledim ama benim sorunumu karşılamadığını düşündüm. Eğer yanılıyorsam bilgilendirin lütfen. Umarım yeterince açık anlatabilmişimdir. Saygılarımla, Kadir Cvp: Access den Excel e sayfa bazlı veri gönderimi - esrefigit - 14/02/2009 Kod:
Option Compare Database buda düğme kodu yalnız unutma eskisini siler yenisini ekler Kod:
Dim stFile As String Cvp: Access den Excel e sayfa bazlı veri gönderimi - kdurmaz - 16/02/2009 Sevgili esrefigit, Yardım için teşekkür ederim. Fakat, veritabanı konusunda genel olarak çok bilgili olduğum söylenemez dolayısıyla vb kodları konusunda çok iyi olmadığımdan, döngüye bağlamanın nasıl olduğunu bilmiyorum. İşin bu kısmını da benim için açıklığa kavuşturabilir misiniz? Örnek: Benim veritabanımdaki kişiler A,B ve C olsun. Sizin verdiğiniz kodlar A kişisinin verilerini yazdırdı diyelim, B ve C için ne yapmalıyım ki bu döngü devam etsin. Saygılar Cvp: Access den Excel e sayfa bazlı veri gönderimi - esrefigit - 16/02/2009 bunun için sanırım örnek eklemeniz gerekir Cvp: Access den Excel e sayfa bazlı veri gönderimi - kdurmaz - 17/02/2009 Örneği ekledim. Bahsettiğim konuyu örneğe uyarlayacak olursak: [ED] tablosundaki kişilerin bilgilerini excele atarken herbirini aynı dosyada ama ayrı sayfalara yerleştirmesini istiyorum. Sizin vermiş olduğunu kodları ilave etmedim, yanlış birşeyler yapmamak için. Veritabanı henüz tasarım aşamasında olduğundan tasarımın kusuruna bakmazsınız umarım. ![]() Cvp: Access den Excel e sayfa bazlı veri gönderimi - esrefigit - 17/02/2009 öncelikle tablo yapıların çok karmaşık olduğu için kod yavaş çalışmakta ama senin istediğin oldu modül bölümü geneldir açıklamaya gerek yoktur lakin kodun bu bölümünü açıklama gereği duydum diğer ilgilenen arkadaşlar içinde sanırım faydalı olur Private Sub Komut0_Click() rstkayit diye bir ado kaydı belirledik Dim rstkayit As New ADODB.Recordset ------------------------------------------- strsql diye bir string alanı oluşturdukki bununla tabloyu açalım Dim strsql As String ---------------------------------------------- strsql diye bir string alanı oluşturdukki bununla tabloyu ikinci defa açalım Dim strsql2 As String ------------------------------------------------------------ stfile diye bir string alan oluşturdukki buna Excel sayfasının yerini tarif edelim Dim stFile As String ----------------------------------------------------- ad diye bir alan oluşturdukki buna ilk açtığımız tablodan isimleri alalım Dim ad As String ------------------------------------------------------------- CurrentProject.Path veritabanımızın olduğu yer diğerini kendimiz ekledik stFile = CurrentProject.Path & "\" & "ED.xls" ----------------------------------------------------- burda strsql adlı alana tablonun sorgusunu yazdık strsql = "SELECT * From GMDETAY " --------------------------------------------------------- rstkayit alanının yeni bir kayıt alanı olduğunu söyledik Set rstkayit = New ADODB.Recordset ---------------------------------------------------- rstkayit alanının strsql le verdiğimiz sorguyu açacağını belirttik ve sadece okunabilir olduğunu söyledik adLockReadOnly rstkayit.Open strsql, CurrentProject.Connection, adOpenStatic, adLockReadOnly --------------------------------------------------------------- burda rstkayit ile açtığımız tabloyu dolanmaya başlıyoruz ilk kayıttan itibaren If rstkayit.EOF <> True Then Do ----------------------------------------------------------- ad alanına her kayıtta EDAD alanındaki isimi alıyoruz ad = rstkayit("EDAD") ----------------------------------------------------------------- strsql2 alanına bir sorgu belirledik ve bu sorguyu ad alanına verdiğimiz isim ile sınırladıkki her kayıtta exceel sayfasına her shet ayrı bir kayıt olarak alabilelim strsql2 = "SELECT * From GMDETAY WHERE EDAD Like '" & ad & "*'" ---------------------------------------------------------------- burda modülü çağırıyoruz strsql2 açtırarak ona ad alanına aldığımız ismide ekleyerek A1 hücresinden başlamak üzere her sayfaya bir kişi olmak üzere kayıtları exceele aktarıyoruz Call CopyRs2Sheet(strsql2, stFile, ad, "A1") ----------------------------------------------------------- burda rstkayit sonraki kayıt sonraki kayıt diye döndürüyoruz rstkayit.MoveNext ------------------------------------------------- rstkayit son kaydına kadar bu işlem devam etsin diyoruz Loop Until rstkayit.EOF End If ----------------------------------------------------------------- burda rstkayit da verdiğimiz tablo ile bağlantıyı kesiyoruz Set rstkayit = Nothing Set conn = Nothing -------------------------------------------------------- sanırım bunu söylememe gerek yok End Sub unutmadan Excel sayfasını kesinlikle silmiyorsun ve veritabanının olduğu yerde olmalı ve aynı isimde olmalı şayet değiştirisen "ED.xls" burdanda değiştirmen gerekir |