oledb bağlantı - koşullu sorgu

hmtstc

Altın Üye
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Altın Üyelik Bitiş Tarihi
10-04-2025
merhaba arkadaşlar, OLEDB bağlantı yapıp verileri alabiliyorum, hatta burada 0 dan büyükleri gibi bir koşul varsa onu da yapıyorum ancak istediğim farklı.

veritabanı sayfasında binlerce satır var, ben çalışan sayfasındaki verileri veritabanına sorgu ile çekiyorum. ama burada her iki sayfanın ilk sütunları da ID NUMBER lar var. bunlar tekil numara. bu numaraya göre eş satırdaki veriyi getirmesini nasıl sağlarım.

kıymetli yardımlarınızı rica ederim.

Kod:
Sub sorgulama()
Dim son As Long
Dim target1 As String
eski = WorksheetFunction.Max(3, Cells(Rows.Count, "A").End(3).Row)
yol = ThisWorkbook.Path
hedefkitap = "abc.xlsm"
tümü = yol & "\" & hedefkitap
son = "1048576" ' bunu da yapamadım. kapalı kitabın son satırını bulamadığım için böyle yazdım.

    Set con = VBA.CreateObject("adodb.Connection")
    
    con.Open "provider=microsoft.ace.oledb.12.0;data source=" & tümü & ";extended properties=""Excel 12.0;hdr=No"""
    sorgu = "select F12,F13,F14 " & _   'F1 de yani A sütununda ID NUMBER eşlediği satıra aynı satırın 12 13 14 üncü hücrelerini çekecek.
      "from[anasayfa$A4:L" & son & "] where F1 =rows(1)" ' burada bir olay var diye düşünüyorum.
      
    Set rs = con.Execute(sorgu)
    Range("A4").CopyFromRecordset rs
    
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,766
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
F1 = ID NO yazmayı denediniz mi?
 

hmtstc

Altın Üye
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Altın Üyelik Bitiş Tarihi
10-04-2025
Yani mantığıma oturmadığı için denemedim. F1 sorguladığımın A sütunu ve her satırın IDNO değeri farklı. Ben sadece o satırkara göre sorgulasın istiyorum. Ve ben böyle bir filtrr daha eklemek istiyorum. F sütunu Tamamlandı ise o sayırı güncelleme şeklinde.
 

hmtstc

Altın Üye
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Altın Üyelik Bitiş Tarihi
10-04-2025

Korhan Ayhan

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

"A" sütununda ID NO 1 olan ve "F" sütununda Tamamlandı yazan kayıtları listeler.

C++:
Sorgu = "Select F11,F13,F14 From [anasayfa$A4:O" & Son & "] Where F1= 1 And F6 = 'Tamamlandı'"[(code]
 

hmtstc

Altın Üye
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Altın Üyelik Bitiş Tarihi
10-04-2025
Korhan hocam, ID NO her satır için değişkenlik gösteriyor, for next ile ID yi değiştirip binlerce satır için binlerce sorgu tekrarlatmak çok mantıklı gelmedi bana, kesin var bi inceliği ama bilemedim.
 

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
Sanki burada kavram karmaşası var gibi ......

Belli bazı ID'lere ait mi sorgulama yapılmak isteniyor, yoksa tüm kayıtlarda F6 alanı "Tamamlandı" olan kayıtlar mı?

Örnek dosya olmadan anlamak da zor...

.
 

hmtstc

Altın Üye
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Altın Üyelik Bitiş Tarihi
10-04-2025
Haluk hocam dosya çok karışık olduğu için veremiyorum ne yazık ki gizlilikten dolayı.

sorguladığım sayfanın A sütununda ID NO lar yazılı, yine verileri almak istediğim sayfanın A sütunundada aynı ID NO lar var. L sütununda da durum bilgileri yazılı iki dosyada da.

Ben sorguyu kurduğumda ID NO ya denk gelen satıra bilgiyi yazmasını istiyorum. Bunu aşağıda for next döngüsü ile sağladım.
Durumu tamamlandı olanlar için de and ile sorguya ekleme yaptım.

Kod:
Sub sorgulama()
Dim son As Long
Dim target1 As String
eski = WorksheetFunction.Max(3, Cells(Rows.Count, "A").End(3).Row)
yol = ThisWorkbook.Path
hedefkitap = "abc.xlsm"
tümü = yol & "\" & hedefkitap
son = "1048576"
Set alan = Columns("A:A")
Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & tümü & ";extended properties=""Excel 12.0;hdr=No"""
 '   On Error Resume Next
    For i = 4 To Cells(Rows.Count, 1).End(3).Row
        If Cells(i, 2) = "abc" Then
        Dim deger As Long
            deger = Cells(i, 1)
            sorgu = "select F8,F9,F10,F11,F12 " & _
              "from[liste$A4:L" & son & "] where F1=" & deger & " And F8 <> 'Tamamlandı'"
             Set rs = con.Execute(sorgu)
            Range("L" & i).CopyFromRecordset rs
        End If
    Next i
    
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
Dosyanın orjinalini vermenize gerek yok, aynı tablo özelliklerinde ama gerçek olmayan verilerden oluşan bir dosya olması yeterli....

.
 

hmtstc

Altın Üye
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Altın Üyelik Bitiş Tarihi
10-04-2025
hocam sorgulama olayını çözüm ama sorguladığım dosya kapalı iken mükemmel çalışıyor. sorgu açık iken çalışmıyor. bunu nasıl çözebilirm ?
 

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
Dosya zaten açıksa, o zaman niye ADO ile uğraşıyorsunuz .... onu anlamadım.

.
 

hmtstc

Altın Üye
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Altın Üyelik Bitiş Tarihi
10-04-2025
hocam toplam 4 dosya var. A dosyası ana dosya. BCD dosyaları ayrı ayrı dosyalar ve kullanıcı dosyaları. ben A ya B C D den sorguluyorum. B C D ye de A dan sorguluyorum.

sorguların hepsi tamam ama bir t anında B dosyası açıksa ve A sorgu çekerse dosya açık olduğu için çekemiyor. Bunu çözersem konu kapanmış olacak. her şeyi hallettim tek bu kaldı
 

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
O zaman; sorgudan önce dosyanın açık olup olmadığını kontrol etmek sizin için bir çözüm olabilir ....

.
 
Üst