• DİKKAT

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

Left Join Operatöründe hata

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,
Ekli dosyada Hedef sayfasında;
Kaynak Sayfasından "DüşeyAra" formülü ile aldığım verileri, aşağıdaki kodda ADO "Left Join" operaatörü ile almak istediğimde hiç beklemediğim bir şekilde veri geliyor.

DüşeyAra ile aldığım veriler doğru gelirken; Left Join operaatörü ile saçma sapan veriler geliyor.
nerede hata yapıyorum, bir türlü içinden çıkmadım.

şimdiden teşekkürler,
iyi çalışmalar.

Kod:
Sub LeftJoinAction()
Dim Con As Object, RS As Object
Dim WS As Worksheet, Sht As Worksheet
Dim Rng As Range, tmpArray As Variant
Dim myFile As String, qry As String
Dim LR As Long, LC As Byte, i As Byte

Dim arrMs As Variant

'''On Error GoTo errMsg

Set WS = Sheets("Hedef")

WS.Range("D:E").ClearContents

myFile = ThisWorkbook.FullName

Set Con = VBA.CreateObject("adodb.Connection")

    strConnection = _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "User ID=Admin;" & _
        "Data Source='" & myFile & "';" & _
        "Extended Properties=""Excel 12.0;hdr=yes"""
 
    sorgu = _
        "Select t2.[VP Name] from [Hedef$] as t1 " & _
        "left join " & _
       " [Kaynak$] as t2 " & _
        "on t1.[Cost centre] = t2.[CC code]"

Con.Open strConnection

Set RS = Con.Execute(sorgu)

WS.Activate

WS.Range("D2").CopyFromRecordset RS

80:

Set RS = Nothing
Con.Close
Set Con = Nothing

Set WS = Nothing

Exit Sub

errMsg:
MsgBox "There seems to be an error" & vbCrLf & Err.Description

End Sub
 

Ekli dosyalar

Merhaba.
Dosyanızı deneyemedim ama ado ile first ve left join ile bence tam sonuç alınabilinir.
 
Merhaba.
Dosyanızı deneyemedim ama ado ile first ve left join ile bence tam sonuç alınabilinir.
Hocam bende sizinle aynı fikirdeyim ama burada neden olmuyor?

iyi pazarlar...
 
Merhaba,

Verileriniz düzensiz olduğu için istediğiniz sonuçlar gelmiyor.
Sayı gibi görünse de metin olan ifadeler var.
Ayrıca düşeyara'da tek sonuç geliyor olabilir ama aranan değere ait diğer sonuçlarda Left join'de gelir.
ADO nesnesini kullanacaksınız veritabanının düzgün ve stabil olması gerekir
 
Hocam bende sizinle aynı fikirdeyim ama burada neden olmuyor?

iyi pazarlar...
İyi pazarlar.
Altın üye olmaığım için dosyanızı inceleyemedim.Ama unutmazsam harici siteye örnek yükleyebilirim first ile.Ayrıca imex=1 ekleyebilirsinizde düzensizse üstadın dediği gibi ise.
 
Diğer sorunuzda paylaştığım bilgiyi yenilemek isterim. Burada belirttiğim kurallara dikkat etmenizde fayda var.


Ek olarak örnek dosyayı inceleyebilirsiniz. Yardımcı sorgu kullanarak çözüm ürettim.
 

Ekli dosyalar

Korhan Bey, "Tekrarsız Liste" sayfasına sütun başlıklarını da aktarmanız gerekiyor, yoksa kod çalışmıyor.

.
 
Hatırlatmanız için teşekkürler Haluk bey.

Dosyayı revize ettim.
 
Alttaki gibi sonuç getiriyor tabii A3 deki veri sayıya çevirilince.
Belki bunada bir çözüm bulunabilinir bakarım sonra.

CSS:
        sorgu = "select K.ilkVPName from [Hedef$] as H left join " & _
                 "(select [CC code] ,first([VP Name]) as ilkVPName from [Kaynak$] group by [CC code]) as K " & _
                  "on K.[CC code]= H.[Cost centre]"
 
on (K.[CC code]& '')= (H.[Cost centre]& '')
Yukardaki gibi tek tırnaklar ekleyince çalıştı ne hikmetse A3 deki sayı olmasada.

C#:
        sorgu = "select K.ilkVPName from [Hedef$] as H left join " & _
                 "(select [CC code] ,first([VP Name]) as ilkVPName from [Kaynak$] group by [CC code]) as K " & _
                  "on (K.[CC code]& '')= (H.[Cost centre]& '')"
 
on (K.[CC code]& '')= (H.[Cost centre]& '')
Yukardaki gibi tek tırnaklar ekleyince çalıştı ne hikmetse A3 deki sayı olmasada.

C#:
        sorgu = "select K.ilkVPName from [Hedef$] as H left join " & _
                 "(select [CC code] ,first([VP Name]) as ilkVPName from [Kaynak$] group by [CC code]) as K " & _
                  "on (K.[CC code]& '')= (H.[Cost centre]& '')"
Hocam Teşekkürler,
ekli dosyada olduğu gibi; Kaynak dosyasında Out adında 3. bir sütun ekleyerek; bu alanda sadece "1" değeri olanları sorgulatarak çözüm üretebilir miyiz,
sorgunun sonuna;

WHERE K.[Out] = 1

ekledim, ama hata verdi.

iyi günler, iyi çalışmalar.
 

Ekli dosyalar

C#:
    Sorgu = " Select K.ilkVPName " & _
            " From [Hedef$] As H " & _
            " Left Join " & _
            " ( " & _
            "   Select [CC code] ,First([VP Name]) As ilkVPName From [Kaynak$]  Where [Out] = 1 Group By [CC code] " & _
            " )  As K  " & _
            " On (K.[CC code]& '')= (H.[Cost centre]&'') "

.
 
C#:
    Sorgu = " Select K.ilkVPName " & _
            " From [Hedef$] As H " & _
            " Left Join " & _
            " ( " & _
            "   Select [CC code] ,First([VP Name]) As ilkVPName From [Kaynak$]  Where [Out] = 1 Group By [CC code] " & _
            " )  As K  " & _
            " On (K.[CC code]& '')= (H.[Cost centre]&'') "

.
Teşekkürler Haluk;
Hocam iyiki varsınız!
 
Geri
Üst