Soru Ado ile arananın satır numarasını bulma

Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.
Ado ile arananın satır numarası nasıl bulunur?
Bir kod bulup uyarladım lakin kod aranan varsa aynısını mesaj kutusunda çıkarıyor.
Örneğe göre mesajda 6 çıkmalı 5 çünkü 6.cı satırda olduğu için.

https://dosya.co/7juem2e3h23o/Ado_ile_Aranan_Row.rar.html


Rich (BB code):
Private Sub CommandButton1_Click()

Dim con As Object, rs As Object
Dim sql As String

Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                    ";Extended Properties=""Excel 12.0;HDR=no;Imex=1;"""

sql = "Select f1 FROM [Sayfa1$A2:A65536]"

rs.Open sql, con, 1, 1
rs.Find "f1 = 5"

MsgBox rs!f1
con.Close
Set con = Nothing
Set rs = Nothing


End Sub
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Güncel,yokmudur çözüm?
Kısaca normal vba daki find ile bulunanın satırını bulduğumuz gibi Ado ilede bulunanın satır numarası lazım.
Belki lazım olur diye açtım konuyu :)
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,788
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Bunu bir dene

Kod:
Private Sub CommandButton1_Click()

Dim con As Object, rs As Object
Dim sql As String

Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                    ";Extended Properties=""Excel 12.0;HDR=no;Imex=1;"""
sql = "Select f1 FROM [Sayfa1$A2:A65536]"
rs.Open sql, con, 1, 1

aranan = 5
say = 1
While Not rs.EOF
say = say + 1
If rs(0) = aranan Then MsgBox rs(0) & Chr(10) & say
rs.MoveNext
Wend

'rs.Find "f1 = 5"
'MsgBox rs!f1
con.Close
Set con = Nothing
Set rs = Nothing


End Sub
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Akşama deneyebilirim gördüğüm kadarıyla döngü ile olmuş.Döngüsüzde oluyor mu?
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Akşama deneyebilirim gördüğüm kadarıyla döngü ile olmuş.Döngüsüzde oluyor mu?
Deneyiniz.

Kod:
Private Sub CommandButton1_Click()

Dim con As Object, rs As Object
Dim sql As String

Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                    ";Extended Properties=""Excel 12.0;HDR=no;Imex=1;"""

sql = "Select top 5 f1 FROM [Sayfa1$A2:A65536]"
rs.Open sql, con, 1, 1
rs.movelast
MsgBox rs(0).Value
con.Close
Set con = Nothing
Set rs = Nothing


End Sub
 

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
@FERAZ , aradığınız kod şöyle bir şey sanırım ....

Kod:
Private Sub CommandButton1_Click()
    'Haluk - 30/04/2019
    '
    Dim con As Object, rs As Object
    Dim sql As String
   
    Set con = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                        ";Extended Properties=""Excel 12.0;HDR=No;Imex=1;"""
   
    strRecord = "5"
   
    sql = "Select F1 FROM [Sayfa1$A1:A65536]"
   
    rs.Open sql, con, 1, 1
    rs.Find "F1 =" & strRecord
   
    MsgBox "Aranan verinin (" & strRecord & ") tablodaki sırası = " & rs.AbsolutePosition & vbCrLf & vbCrLf _
           & "(Sıra Numarasına başlık satırı dahildir....)"
   
    con.Close
    Set con = Nothing
    Set rs = Nothing
End Sub
.
 
Son düzenleme:
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Kodları bu akşam deneyeceğim inşAllah.
Mobilden kodları okuduğumdan anladığım kadarıyla Haluk hocamızınki tam istediğim sanıyorum.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
@FERAZ , aradığınız kod şöyle bir şey sanırım ....

Kod:
Private Sub CommandButton1_Click()
    'Haluk - 30/04/2019
    '
    Dim con As Object, rs As Object
    Dim sql As String
  
    Set con = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                        ";Extended Properties=""Excel 12.0;HDR=No;Imex=1;"""
  
    strRecord = "5"
  
    sql = "Select F1 FROM [Sayfa1$A1:A65536]"
  
    rs.Open sql, con, 1, 1
    rs.Find "F1 =" & strRecord
  
    MsgBox "Aranan verinin (" & strRecord & ") tablodaki sırası = " & rs.AbsolutePosition & vbCrLf & vbCrLf _
           & "(Sıra Numarasına başlık satırı dahildir....)"
  
    con.Close
    Set con = Nothing
    Set rs = Nothing
End Sub
.
(y)
Hocam birden fazla aranan değerden varsa ilk bulduğununmu satırını veriyor?
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Evet ilk bulduğunu satır numarasını veriyormuş.:D
 

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
Evet ilk bulduğunu satır numarasını veriyormuş.:D

Aynı veriden 1'den fazla varsa;

Kod:
Sub Test2()
    'Haluk - 30/04/2019
    '
    Dim con As Object, rs As Object
    Dim sql As String
   
    Set con = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                        ";Extended Properties=""Excel 12.0;HDR=No;Imex=1;"""
   
    strRecord = "5"
   
    sql = "Select F1 FROM [Sayfa1$A1:A65536]"
   
    rs.Open sql, con, 1, 1
    
    rs.Find "F1 =" & strRecord
    
    If rs.EOF Then
        MsgBox "Aranan veri (" & strRecord & ") tabloda bulunamadı...!"
        Exit Sub
    End If
    
     Do Until rs.EOF = True
        rs.Find "F1 =" & strRecord
        If rs.AbsolutePosition > 0 Then
            MsgBox "Aranan verinin (" & strRecord & ") tablodaki sırası = " & rs.AbsolutePosition & vbCrLf & vbCrLf _
                 & "(Sıra Numarasına başlık satırı dahildir....)"
        End If
        rs.MoveNext
    Loop
   
    con.Close
    Set con = Nothing
    Set rs = Nothing
End Sub
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Teşekkür ederim,hocam.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Deneyiniz.

Kod:
Private Sub CommandButton1_Click()

Dim con As Object, rs As Object
Dim sql As String

Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                    ";Extended Properties=""Excel 12.0;HDR=no;Imex=1;"""

sql = "Select top 5 f1 FROM [Sayfa1$A2:A65536]"
rs.Open sql, con, 1, 1
rs.movelast
MsgBox rs(0).Value
con.Close
Set con = Nothing
Set rs = Nothing


End Sub
Orion1 hocam yanlış anlamışsınız olayı.Kodu denedim mesela kodunuzdaki 5 yerine 85 yazdım mesaj kutusunda 99 çıktı :)
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Bunu bir dene

Kod:
Private Sub CommandButton1_Click()

Dim con As Object, rs As Object
Dim sql As String

Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                    ";Extended Properties=""Excel 12.0;HDR=no;Imex=1;"""
sql = "Select f1 FROM [Sayfa1$A2:A65536]"
rs.Open sql, con, 1, 1

aranan = 5
say = 1
While Not rs.EOF
say = say + 1
If rs(0) = aranan Then MsgBox rs(0) & Chr(10) & say
rs.MoveNext
Wend

'rs.Find "f1 = 5"
'MsgBox rs!f1
con.Close
Set con = Nothing
Set rs = Nothing


End Sub
Halit hocam kod doğru çalıştı :)
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Aynı veriden 1'den fazla varsa;

Kod:
Sub Test2()
    'Haluk - 30/04/2019
    '
    Dim con As Object, rs As Object
    Dim sql As String
  
    Set con = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    con.Open = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
                                        ";Extended Properties=""Excel 12.0;HDR=No;Imex=1;"""
  
    strRecord = "5"
  
    sql = "Select F1 FROM [Sayfa1$A1:A65536]"
  
    rs.Open sql, con, 1, 1
   
    rs.Find "F1 =" & strRecord
   
    If rs.EOF Then
        MsgBox "Aranan veri (" & strRecord & ") tabloda bulunamadı...!"
        Exit Sub
    End If
   
     Do Until rs.EOF = True
        rs.Find "F1 =" & strRecord
        If rs.AbsolutePosition > 0 Then
            MsgBox "Aranan verinin (" & strRecord & ") tablodaki sırası = " & rs.AbsolutePosition & vbCrLf & vbCrLf _
                 & "(Sıra Numarasına başlık satırı dahildir....)"
        End If
        rs.MoveNext
    Loop
  
    con.Close
    Set con = Nothing
    Set rs = Nothing
End Sub
Haluk hocam aradığım buydu.
Kod bitince en sonda hata veriyor.
On error resume next vs... ayarlarım orayı.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Herkesin eline sağlık sağolun.
 
Üst