excel makrosu ile mdb dosyasından veri çekmek.

Katılım
9 Eylül 2007
Mesajlar
17
Excel Vers. ve Dili
2003 tr
excel makrosu ile mdb dosyasından veri çekmek.

arkadaşlar forumda ilgili yerlere baktım ve birkaç ta yapılan örneği inceledim. ama yine de bu olayı mantığı ile kavrayamadım. yapmak istediğim kısaca mdb dosyasındaki tabloda yer alan veriyi alıp excell içinde kullanmak. dao denilen yöntem ile sql kullanarak yapılıyormuş. ama kafamı karıştıran noktalardan biri de kullanılan "references"kısmındaki dosyaların çeşitliliğinden dolayı ayrıntılı kullanımının olmayışı. lütfen örneği açıklarken örneğin dosya açma, protokol kullanma vs. kısımlarda komutların formatını da bilgi olarak yazarsanız çok sevinirim ve şimdiden teşekkürü borç bilirim. saygılarımla..
bir de örnek dosya koydum yapmak istediğim uygulamayla ilgili. benim kullanacağım uygulama biraz daha karmaşık ama ben olayın temelini ve kullanım şeklini öğrenmek istiyorum. şimdiden tekrar teşekkürler...

Ekli dosyayı görüntüle 24010 :yardim: :yardim: :yardim:
 
Son düzenleme:
Katılım
9 Eylül 2007
Mesajlar
17
Excel Vers. ve Dili
2003 tr
Vereceğiniz cevapları merak ve heyecanla bekliyorum...

Allah aşkına kaç gün oldu bir yardım edecek yok mu???
 
Son düzenleme:
Katılım
9 Eylül 2007
Mesajlar
17
Excel Vers. ve Dili
2003 tr
Çok ısrarcı davrandığımdan değil de gerçekten yardıma ihtiyacım var..
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdakileri Userform'unuzun kod sayfasına aynen kopyalayınız.

VARSAYIM : xls ve mdb dosyalarınızın aynı dizin altında olduğu varsayılmıştır.

NOT : Microsoft Activex DataObject ve Microsoft ADO Ext... referanlarını işaretleyiniz. (Tools-References)

Kod:
[COLOR=green]'HESAP NO GİRİLDİĞİNDE;[/COLOR]
[COLOR=green]'Diğer bilgilerin mdb'den okunarak ilgili kutucuklara getirilmesi[/COLOR]
'---------------------------------------------
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
[COLOR=green]'Textbox1'e her veri girişi yapıldığında;[/COLOR]
Set conn = New ADODB.Connection
[COLOR=green]'Yeni bir ADO bağlantısı tanımla[/COLOR]
Set rs = New ADODB.Recordset
[COLOR=green]'Yeni bir Recordset (Veri kümesi) tanımla[/COLOR]
On Error Resume Next
[COLOR=green]'Hata durumunda işlemlere devam et[/COLOR]
BaglanilacakTablo = "hesaplar"
[COLOR=green]'Veri tabanında bağlanılmak istenen tablo tanımı[/COLOR]
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
                         & ThisWorkbook.Path & "\kasa.mdb;User Id=admin;Password=;"""
[COLOR=green]'ADO ile mdb dosyalara bağlanmak uygun protol dizesi[/COLOR]
conn.Open
[COLOR=green]'Bağlantıyı protokole uygun olarak aç[/COLOR]
Sql = "SELECT * FROM " & BaglanilacakTablo _
   & " WHERE " & BaglanilacakTablo & ".[hesap no]=" & TextBox1
[COLOR=green]'Bağlantı ile birlikte gönderilecek SQL sorgusu[/COLOR]
rs.Open Sql, conn, adOpenForwardOnly, adLockReadOnly
[COLOR=green]'SQL komutu, bağlantı şekli ve cursor tipi parametreleri ile Recordseti doldur[/COLOR]
TextBox2 = rs(1)
[COLOR=green]'Recordset'in 1.alanını Textbox2'ye getir[/COLOR]
[COLOR=green]'Recordset alan indexi 0'dan başlar[/COLOR]
TextBox3 = rs(2)
[COLOR=green]'Recordset'in 2.alanını Textbox3'ye getir[/COLOR]
TextBox4 = rs(3)
[COLOR=green]'Recordset'in 3.alanını Textbox4'ye getir[/COLOR]
rs.Close
conn.Close
[COLOR=green]'Recordset ve bağlantıyı kapat[/COLOR]
Set conn = Nothing
Set rs = Nothing
End Sub
 
Katılım
9 Eylül 2007
Mesajlar
17
Excel Vers. ve Dili
2003 tr
çok ama çok teşekkür ederim hemen deneyeceğim...
 
Katılım
9 Eylül 2007
Mesajlar
17
Excel Vers. ve Dili
2003 tr
tekrar teşekkür ediyorum ilginiz ve yardımınız için.

rs.Open Sql, conn, adOpenForwardOnly, adLockReadOnly
'SQL komutu, bağlantı şekli ve cursor tipi parametreleri ile Recordseti doldur

kısmında kullanılan parametrelerin açıklamalarını ve diğer varyasyonları aceba nasıl öğrenebilirim ?
yapmış olduğum benzer bir uygulamada daha önceden "dış veri al" komutu ile veri çektirerek kullandığım bir veri tabanına (access) aynı anda yukardaki kodla bağlanamadım. (aynı dosyaya)

aceba bu readonly parametresinden mi yoksa benim önceden kullanmış olduğum "dış veri al" komutunun sorgu kısmından mı parametre değiştirmem gerekiyor?
:roll:
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
rs.Open Sql, conn, adOpenForwardOnly, adLockReadOnly
'SQL komutu, bağlantı şekli ve cursor tipi parametreleri ile Recordseti doldur

kısmında kullanılan parametrelerin açıklamalarını ve diğer varyasyonları aceba nasıl öğrenebilirim ?


Türkçe meali şu :

"rs" nesnesiyle, veritabanından, bazı seçtiğim kayıtları ayıklamak ve almak istiyorum.

Bu seçimi yapmak için Sql adlı string'de belirtilen sorguyu kullan.

"conn" adlı açık bağlantı protokolü ve şeklini kullan.

Cursor Tipi olarak;, "adOpenForwardOnly" kullan. Çünkü, çektiğim veriler içinde sadece ileri hareket etmek istiyorum. Hatta bu sorgu için cursor'ı hareket ettirmeme bile gerek yok. ("adOpenForwardOnly" bu kısıtlı özelliklerine rağmen, hızlı bir sorgu yürütür)

Kilitleme tipi olarak, "adLockReadOnly kullan. Çünkü, veri tabanının değiştirmeye karşı korumalı (kilitli) olmasını istiyorum ki bir kazaya kurban gitmesin :)

Cursor Tipi ve Kilit Tiplerine yönelik birçok seçenek mevcut. İhtiyaca göre bunların değişik varyasyonları Recordset nesnesi için kullanılabilir.

Cursor Tipleri :
(1) adOpenForwardOnly - 0
(2) adOpenKeyset-1
(3) adOpenDynamic-2
(4) adOpenStatic-3

Kilit Tipleri :
(1) adLockReadOnly-1
(2) adLockPessimistic-2
(3) adLockOptimistic-3

(4) adLockBatchOptimistic-4

Kimi yerlerde; rs.Open Sql, conn, 1, 3 şeklinde kullanıldığını görürsünüz. Yukarıdakileri açıklamalara dikkate alırsak, bunun şöyle olduğunu söyleyebiliriz :


rs.Open Sql, conn, adOpenKeySet, adLockOptimistic.

Eğer parametrelerin kullanımı konusunda tecrübeniz yoksa; bu kalıbı kullanmanızı tavsiye ederim. Her koşulda (Kayıt Ekleme, Silme, Değiştirme, Görüntülemede) işinizi görür.

aceba bu readonly parametresinden mi yoksa benim önceden kullanmış olduğum "dış veri al" komutunun sorgu kısmından mı parametre değiştirmem gerekiyor?


Eğer amacınız sadece veritabanındaki kayıtları okuyup getirmek ise; adLockReadOnly’nin hiçbir zararı olmaz. Muhtemelen başka satırlarda bir veya birkaç hata vardır. Kodu ve hata satırını yazarsanız yardımcı olmaya çalışırız.
 
Üst