Tüm Versiyonu Göster : CopyFromRecordset ve sütun başlıkları
erkankamilonas
11-06-2008, 13:00
CopyFromRecordset kullanarak VEriTabanlarından veri aldırıyorum. Ancak sütun başlıkları gelmiyor. Mutlka bu işlevi kullanmamam gerekiyor, çünkü verileri Excele inanılmaz drecede hızlı çekiyor, tek eksiğim Verilerin veritababanındaki sütun başlıkları olmadan gelmesi.
Yardımcı olacak arkadaşlara teşekkürlerimi sunarım. :)
Sub VeriAl()
Sayfa1.Cells.Delete
Call Baglan("\\sql\MALİYET K SYSTEM\VERİ.mdb", "SELECT SİPARİS.[YMAMÜL TANIMI]," & _
"[STOK MALZEMEHAREKET].[MALZEME CİNSİSTH], " & _
"[STOK MALZEMEHAREKET].[İRSALİYE TARİHSTH], " & _
"[STOK MALZEMEHAREKET].[KAPANIS STH], " & _
"[RED TUTANAK].[RED NEDENİ], [RED TUTANAK].OPERATOR1 " & _
"FROM (SİPARİS LEFT JOIN [STOK MALZEMEHAREKET] ON SİPARİS.[ÜRÜN NO] = [STOK MALZEMEHAREKET].[ÜRÜN NOSTH]) " & _
"LEFT JOIN [RED TUTANAK] ON SİPARİS.[ÜRÜN NO] = [RED TUTANAK].[RÜRÜN NO] " & _
"WHERE (((SİPARİS.[FATURA ACIKLAMASI])='PLAN'))" & _
"ORDER BY SİPARİS.[SEVK TARİHİ];")
Sayfa1.Range("A1").CopyFromRecordset Rec
Call BaglantiKes
Sayfa1.Cells.Columns.AutoFit
End Sub
http://www.excel.web.tr/showthread.php?t=50388
erkankamilonas
11-06-2008, 13:36
Teşekkürler
Şöyle birşey olabilir....
sayfa1.range("a1")= rec.fields(0).name
sayfa1.range("b1")= rec.fields(1).name
sayfa1.range("c1")= rec.fields(2).name
sayfa1.range("a2").CopyFromRecordset Rec
erkankamilonas
11-06-2008, 13:51
Ellerinize sağlık, bende DAO ile ilgisi ne konunun demiştim ve mesajı incelememiştim, şimdi baktığımda gördüm ve şöyle düzenledim
Sayfa1.Range("A2").CopyFromRecordset Rec
On Error Resume Next
For byt = 0 To Rec.Fields.Count
Cells(1, byt + 1) = Rec.Fields(byt).Name
Next byt
Önemli değil.....
Alanlar çok fazla sayıda değilse, döngü kullanmayın... daha hızlı olur.
red_lion_72
11-06-2008, 15:35
Selam,
Bende her seferinde sütun başlıkları için ayrı bir kod yazıyordum. :)
Teşekkürler.
erkankamilonas
17-06-2008, 09:06
Rec.Fields(1).Name
kullanarak sütun başlıklarını aldım. Peki Tablo adlarını nasıl yazdırabiliriz.
Yani; İlgili sütun hangi Table dan alınmış?
Merhaba;
Aşağıdaki örnekte, Excel VBA ile bağlantı kurduğum bir MDB dosyasındaki tablo isimlerini aşağıdaki gibi alıyorum.
Siz kendinize göre uyarlayabilirsiniz herhalde...
Sub Test()
Dim DatabasePath As String
Dim Cat As Object
Dim i As Integer
DatabasePath = "D:\TestFolder\vt1.mdb"
Set Cat = CreateObject("ADOX.Catalog")
Cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabasePath
For i = 1 To Cat.tables.Count - 1
If Not Left(Cat.tables(i).Name, 4) = "MSys" Then MsgBox Cat.tables(i).Name
Next
End Sub
erkankamilonas
17-06-2008, 14:26
Teşekkürler ancak şöyle bir sorunum var;
Sub VT_VeriAl()
Application.ScreenUpdating = False
Sayfa1.Cells.Delete
Call BaglanExecute("\\sql\MALİYET K SYSTEM\VERİ.mdb", "SELECT DISTINCT " & _
"SİPARİS.[YMAMÜL TANIMI], SİPARİS.SADET, SİPARİS.[FİRMA KODUGELİR], SİPARİS.[MAMÜL KODU], SİPARİS.[MAMÜL TANIMI], SİPARİS.[SİPARİS TARİHİ], SİPARİS.[TESLIM TARIHI], SİPARİS.[SİPARİS LTL], SİPARİS.[SİPARİS LEURO], SİPARİS.[SİPARİS LDOLAR], SİPARİS.[SEVK TARİHİ], SİPARİS.YMAMÜLGRUP, SİPARİS.[FATURA NO], SİPARİS.[ÜRETİM TARİHİ], SİPARİS.[ÜRETİM TUTARI], SİPARİS.[FATURA TARİHİ], SİPARİS.[FATURA ACIKLAMASI], SİPARİS.[FATURA TUTARI], SİPARİS.HESAPTL, SİPARİS.[KKONTROL TARİHİ], SİPARİS.[KKONTROL YAPILDI], SİPARİS.[YI/YD], SİPARİS.[SİPARİS MALZEME], [STOK MALZEMEHAREKET].[TALEP TERMİNİ], [STOK MALZEMEHAREKET].[BİRİM FİYATYTLSTH], [STOK MALZEMEHAREKET].[BİRİM FİYATEUROSTH], [STOK MALZEMEHAREKET].[BİRİM FİYATDOLARSTH], [STOK MALZEMEHAREKET].TEDARİKCİSTH, [STOK MALZEMEHAREKET].TERMİNSTH, [STOK MALZEMEHAREKET].[MALZEME CİNSİSTH], [STOK MALZEMEHAREKET].[İRSALİYE TARİHSTH], [STOK MALZEMEHAREKET].[KAPANIS STH], [RED TUTANAK].[RED ADEDİ], " & _
"[RED TUTANAK].[RED TARİHİ], [RED TUTANAK].[RED MALZEME], [RED TUTANAK].[RED TUTAR], [RED TUTANAK].TEZGAH, [RED TUTANAK].OPERATOR1, [RED TUTANAK].OPERATOR2, [RED TUTANAK].[RED NEDENİ], [RED TUTANAK].RACIKLAMA, SİPARİS.[ÜRÜN NO], SİPARİS.[SIPARIS NO], SİPARİS.KAPANIS " & _
"FROM (SİPARİS LEFT JOIN [STOK MALZEMEHAREKET] ON SİPARİS.[ÜRÜN NO] = [STOK MALZEMEHAREKET].[ÜRÜN NOSTH]) LEFT JOIN [RED TUTANAK] ON SİPARİS.[ÜRÜN NO] = [RED TUTANAK].[RÜRÜN NO] " & _
"WHERE (((SİPARİS.[FATURA ACIKLAMASI])='PLAN'))" & _
"ORDER BY SİPARİS.[SEVK TARİHİ];")
Sayfa1.Range("A2").CopyFromRecordset Rec
On Error Resume Next
For int1 = 0 To Rec.Fields.Count
Sayfa1.Cells(1, int1 + 1) = Rec.Fields(int1).Name
Next int1
Call BaglantiKes
'Sayı Formatları
'Sayfa1.Range("I:K, Q:Q, T:T, V:V").NumberFormat = "#,##0.00"
Sayfa1.Cells.Columns.AutoFit
Sayfa1.Range("1:1").Font.Bold = True
End Sub
Sub Test()
Dim DatabasePath As String
Dim Cat As Adox.Catalog
Dim i As Integer, Biriktir As String
DatabasePath = "\\sql\MALİYET K SYSTEM\VERİ.mdb"
Set Cat = CreateObject("ADOX.Catalog")
Cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabasePath
For i = 1 To Cat.Tables.Count - 1
Select Case Left(Cat.Tables(i).Name, 4)
Case Is <> "MSys"
Debug.Print Cat.Tables(i).Name
End Select
Next
Cat.ActiveConnection.Close
End Sub
Şöyle bir sorunum var, Table adlarının tümü listeleniyor, bana ise sadece sorgumda kullandığım table adları lazım.
Yani Excel çektiğim verilerin ilk satırı verilerin çekildiği tablonun adı, ikinci satır şu an kodlarımda olduğu gibi sütun adları olmalı
vBulletin v3.7.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.