• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

ADO Recordsetten istenilen kaydın alınması

  • Konbuyu başlatan Konbuyu başlatan mtbi00
  • Başlangıç tarihi Başlangıç tarihi
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.
 
Merhaba,

Sorguyu ona göre oluştursanız olmuyor mu?
 
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.
 
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
 
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.
 
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.
 
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.
 
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:
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.
 
Geri
Üst