ADO Recordsetten istenilen kaydın alınması

Katılım
28 Kasım 2008
Mesajlar
191
Excel Vers. ve Dili
excel 2003
excel 2010
Merhaba,

ADO'yu yeni öğrenmeye başladım. Kapalı dosyadan veri alabiliyorum. Ama recordsetin içindeki istediğim veriyi alamıyorum. Çok aradım ama, ya göremedim yada bulamadım. Sizden ricam recordset in için bulunan verilerden nasıl bir tanesini alabilirim. Örneğin recordsettin içindeki bilgiler şöyle;

ADI ==> Başlık
AHMET
MEHMET
VELİ
AYŞE
ASLI
ORHAN
MURAT

Ben buradaki AYŞE ismini textbox1 aktarmak istiyorum. rs.Fields.Item(0) ile en baştaki bilgiyi alabiliyorum ama sadece AYŞE 'yi alamıyorum. Bunu nasıl yapabilirim. Yardımcı olursanız sevinirim.

Textbox1.value = rs.Fields.Item(0) ile AHMET geliyor. Ama ben AYŞE'yi getirmek istiyorum. 0 değerini 1 - 2 - 3 ile değiştiriyorum ama hata veriyor.

İyi çalışmalar.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Sorguyu ona göre oluştursanız olmuyor mu?
 
Katılım
28 Kasım 2008
Mesajlar
191
Excel Vers. ve Dili
excel 2003
excel 2010
Merhaba,

Sorguyu ona göre oluştursanız olmuyor mu?
Sorgu için başlık şartı var ya, o benim elimi kolumu bağlıyor. Excel sayfasında şu şekilde kayıtlı;

A Sütünu

ADI
AHMET
MEHMET
VELİ
AYŞE
ASLI
ORHAN
MURAT

Sorguda From [Sayfa1!A4:A4] dediğimde başlık olmadığı için hata veriyor.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba.
Başlık olmadan da sorgu yapılabiliyor yanlış anımsamıyorsam, arama yaparsanız bulabilirsiniz.
Uğraşmam derseniz recordset te döngü ile istediğiniz veriyi alabilirsiniz.
aşağıdaki kodları kendinize uyarlayınız.

Kod:
    With rs
        Do Until .EOF
            Debug.Print rs.Fields(1) & " " & rs.Fields(0) & " " & rs.Fields(2)
            Syf.Range("D" & i) = rs.Fields(1)   'Ürün İsmi
            Syf.Range("G" & i) = rs.Fields(0)   'Kategori Adı
            Syf.Range("I" & i) = rs.Fields(2)   'Gideceği Yer
        .MoveNext
        i = i + 1
        Loop
    End With
 
Katılım
28 Kasım 2008
Mesajlar
191
Excel Vers. ve Dili
excel 2003
excel 2010
Merhaba.
Başlık olmadan da sorgu yapılabiliyor yanlış anımsamıyorsam, arama yaparsanız bulabilirsiniz.
Uğraşmam derseniz recordset te döngü ile istediğiniz veriyi alabilirsiniz.
aşağıdaki kodları kendinize uyarlayınız.

Kod:
    With rs
        Do Until .EOF
            Debug.Print rs.Fields(1) & " " & rs.Fields(0) & " " & rs.Fields(2)
            Syf.Range("D" & i) = rs.Fields(1)   'Ürün İsmi
            Syf.Range("G" & i) = rs.Fields(0)   'Kategori Adı
            Syf.Range("I" & i) = rs.Fields(2)   'Gideceği Yer
        .MoveNext
        i = i + 1
        Loop
    End With
Hocam merhaba,

Öncelikle ilginiz için teşekkür ederim. Ama benim verim tek sutunda. Yani sadece A sutunu var. A sutunundaki bilgileri recordsete yüklediğimde örneğin 3 ncü sıradaki bilgiyi almak istiyorum. Belki yazdığınız döngüde alınabiliyor ama aramada verilen değer değişirse sonuç alınamaz diye düşünüyorum. Tek sutunluk bir recordsette 3 ncü satırdaki bilgi nasıl çekilir onu bulmam lazım. Tekrar teşekkür ederim.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Yazışmalar uzan sürecek anlaşılan, örnek dosyanızı paylaşım sitelerinden birine yüklerseniz çözüme ulaşmak daha hızlı olacaktır.
Dosya.co, dosya.tc gibi siteler olabilir.
 
Katılım
28 Kasım 2008
Mesajlar
191
Excel Vers. ve Dili
excel 2003
excel 2010
Merhaba,
Yazışmalar uzan sürecek anlaşılan, örnek dosyanızı paylaşım sitelerinden birine yüklerseniz çözüme ulaşmak daha hızlı olacaktır.
Dosya.co, dosya.tc gibi siteler olabilir.
Hocam merhaba,

Teşekkür ederim. Vermiş olduğunuz döngüyle hallettim. For next döngüsüne soktum recordseti. 3 ncü değere gelince döngüyü durdurup o anki rs("ADI") değerini hücreye yazdırdım. Belki kulağı tersten göstermiş oldum ama çalıştı. Benim aradığım movenext olayıymış. Çok teşekkür ederim ilginize.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Döngüye gerek yok ... Recordset'in "Move" metoduyla belirlediğiniz bir kayıta konumlanabilirsiniz....




.
C#:
Sub Test()
'   Haluk - 14/03/2022
    Dim DB As Object, RS As Object
   
    Set DB = CreateObject("DAO.DBEngine.120").OpenDatabase(ThisWorkbook.FullName, False, False, "Excel 8.0; HDR=No; IMEX=1;")
   
    Set RS = DB.OpenRecordset("Select F1 From [Sheet1$A2:A] Where F1 Is Not Null")
   
    RS.Move 2
    MsgBox RS(0)
   
    RS.Close
    DB.Close
    Set DB = Nothing
End Sub
.
 
Son düzenleme:
Katılım
28 Kasım 2008
Mesajlar
191
Excel Vers. ve Dili
excel 2003
excel 2010
Döngüye gerek yok ... Recordset'in "Move" metoduyla belirlediğiniz bir kayıta konumlanabilirsiniz....




.
C#:
Sub Test()
'   Haluk - 14/03/2022
    Dim DB As Object, RS As Object
  
    Set DB = CreateObject("DAO.DBEngine.120").OpenDatabase(ThisWorkbook.FullName, False, False, "Excel 8.0; HDR=No; IMEX=1;")
  
    Set RS = DB.OpenRecordset("Select F1 From [Sheet1$A2:A] Where F1 Is Not Null")
  
    RS.Move 2
    MsgBox RS(0)
  
    RS.Close
    DB.Close
    Set DB = Nothing
End Sub
.
Hocam sizede çok teşekkür ederim. Öğrenmek istediğim tam da buydu. Bu arada ADO ile (engin bilgilerinize dayanarak) kapalı dosyada A sutunundaki ilk boş hücreyi nasıl bulabiliriz. VBA da sheets("KITAP1").range("A1000000).end(3).xlup komutunu ADO da nasıl çalıştırabiliriz. Bu konuda da yardımcı olursanız sevinirim. İyi geceler.
 
Üst