• DİKKAT

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

oledb bağlantı - koşullu sorgu

  • Konbuyu başlatan Konbuyu başlatan hmtstc
  • Başlangıç tarihi Başlangıç tarihi
Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
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
 
F1 = ID NO yazmayı denediniz mi?
 
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.
 
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]
 
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.
 
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...

.
 
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
 
Dosyanın orjinalini vermenize gerek yok, aynı tablo özelliklerinde ama gerçek olmayan verilerden oluşan bir dosya olması yeterli....

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

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

.
 
Geri
Üst