ADO yönteminde Tanımlanmış Tablo ya da AD kullanmak

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Excelde sayfa adlarından bazıları sadece sayısal ifade bunlarda hata veriyor sorunu çözemedim yardımcı olabilecek var mı

C++:
sheetNames = Array("kisiselbilgi", "ruhsatbilgi", "silahbilgi", "arsiv", 1, 2, 3, 4) ' Veri alınacak sayfa isimleri listesi
For i = LBound(sheetNames) To UBound(sheetNames)
    sheetName = sheetNames(i)

    If IsNumeric(sheetName) Then
        sheetName = "'" & sheetName & "'"
    End If

    sql = "SELECT * FROM [" & sheetName & "$E7:CA] WHERE [TC Kimlik No] = " & arananTC & " "

    rs.Open sql, cn, 3, 1

    lastRow = s1.Cells(s1.Rows.Count, "A").End(3).Row + 1

    For j = 0 To rs.Fields.Count - 1
        s1.Cells(lastRow, j + 1).Value = sheetName & " - " & rs.Fields(j).Name
    Next j

    s1.Range("A" & lastRow + 1).CopyFromRecordset rs
    rs.Close
Next i
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Dış veri al özelliğini kullanarak Excel' in nümerik sayfa isimlerini nasıl aldığını bir kontrol edin. (Pratik olarak... )
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Bakıyorum hocam
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Hocam şu şekilde görünüyor Name : "1" : String

yukarıda bu şekilde eklemiştim
If IsNumeric(sheetName) Then
sheetName = "'" & sheetName & "'"
End If
 

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
Demek ki, zaten "String" olarak alıyor...... O zaman, bahsettiğiniz "If - End If" bloğunu komple silip, deneyin...

.
 
Son düzenleme:

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
244480

Hocam döngü içersine girmeden bu hatayı verdi
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Şuan kodlarım bu şekilde hata veriyor çalışan kodlardan da oldum :)
Hata açıklaması şu şekilde
rs.Open sql, cn, 3, 1 satırında
Hata -2147467259: Bağlanmış Microsoft Excel çalışma sayfanızı görüntülemek için yapılan bağlantı kesildi.

Kod:
sub test2()
Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
Set s1 = ThisWorkbook.Worksheets(testsayfa.Name)
s1.Cells.Clear
    'dosya konumu belirleme
    db_file = ThisWorkbook.Path & "\slhruhsat_data.xlsx"
    extName = "xlsx"
    If extName = "xlsx" Then ' Excel dosya uzantısı "xlsx" ise
        extType = " Xml" ' extType değişkenine " Xml" atanıyor
    ElseIf extName = "xlsb" Then ' Excel dosya uzantısı "xlsb" ise
        extType = "" ' extType değişkenine boş değer atanıyor
    ElseIf extName = "xlsm" Then ' Excel dosya uzantısı "xlsm" ise
        extType = " Macro" ' extType değişkenine " Macro" atanıyor
    Else ' Yukarıdaki şartlar sağlanmıyorsa
        Exit Sub ' Prosedürden çıkılıyor
    End If

    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0" ' Veritabanı sağlayıcısı olarak "Microsoft.ACE.OLEDB.12.0" atanıyor
        .Properties("Data Source") = db_file ' Veritabanının dosya yolu belirtiliyor
        .Properties("Extended Properties") = "Excel 12.0" & extType & ";HDR=YES" ' Bağlantı özellikleri belirtiliyor
        .Open ' Bağlantı açılıyor
    End With
    

arananTC = sh_Entry.Range("I7").Value
sheetNames = Array("kisiselbilgi", "ruhsatbilgi", "silahbilgi", "arsiv", "islemler", "adres", "ruhsatbilgiii", "ruhsatbilgii") ' Veri alınacak sayfa isimleri listesi

Dim sql As String

Dim i As Integer
'For i = LBound(sheetNames, 2) To UBound(sheetNames, 2)
For i = LBound(sheetNames) To UBound(sheetNames)
    sheetName = sheetNames(i)
    If IsNumeric(sheetName) Then
        sheetName = "'" & sheetName & "'"
    End If
    sql = "SELECT * FROM [" & sheetName & "$E7:CA] WHERE [TC Kimlik No] = " & arananTC & " "
    On Error Resume Next
    rs.Open sql, cn, 3, 1
    If Err.Number <> 0 Then
        MsgBox "Hata " & Err.Number & ": " & Err.Description
        Debug.Print "Hata " & Err.Number & ": " & Err.Description
    End If
    On Error GoTo 0
    
    lastRow = s1.Cells(s1.Rows.Count, "A").End(3).Row + 1

    For j = 0 To rs.Fields.Count - 1
        s1.Cells(lastRow, j + 1).Value = sheetName & " - " & rs.Fields(j).Name
    Next j

    s1.Range("A" & lastRow + 1).CopyFromRecordset rs
    rs.Close
Next i

End Sub
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Demek ki, zaten "String" olarak alıyor...... O zaman, bahsettiğiniz "If - End If" bloğunu komple silip, deneyin...

.
Sildim düzeldi hocam ama dediğim gibi uyumadan önce denediğim kodlar çalışmadı sabah çalıştı anlamadım olay
 
Katılım
24 Aralık 2008
Mesajlar
1
Excel Vers. ve Dili
2003 türkce
Tablo olarak tanımlanmış aralığı ya da tanımlı AD ları, ADO sorgusunda kullanabiliyor muyuz?
"Select [Sütun1],[Sütun2] from [Sayfa1] Where [Sütun2]=5" gibi bir cümlede, Sayfa1 yerine Tablo ismini ve Sütunlar yerine tablonun alanlarını verebiliyor muyuz?
Örnek var mıdır?
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=\\SERVER\K.......Excel$\FIYAT_SABLONU_XXXX.xlsm;" & "Extended Properties=""Excel 12.0 Macro;HDR=YES;IMEX=1"";" Örneğindeki gibi HDR=NO olarak kullanılırsa ADO alan(sütün) isimlerini F1,F2,F3... olarak isimlendiriyor,
"Select [F1],[F2] from [Sayfa1$] Where [F2]=5" şeklinde kullanabileceğinizi düşünüyorum. M.G.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@dandini ,

Soruda excelin EKLE menüsündeki TABLO olarak kullanılan nesnesinden bahsedilmiş. Sizin önerinizde tanımlı tablo tam olarak nereye eklenecek?
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Amacını son dolu satıra göre işlem yapmak a ben şöyle kullanıyorum.

Önce

son=Sheets("Data").cells(Rows.Count,"A").End(3).row

İle son satır numarasını buluyorum.

Sonra da sorguda

From [Data$A1:M" & son & "]

Şeklinde adres belirtiyorum.
Hocam Data$A1:M" bu şekilde bıraksanız kendisi algılıyor
 
Üst