Left Join Operatöründe hata

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
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

Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.
Dosyanızı deneyemedim ama ado ile first ve left join ile bence tam sonuç alınabilinir.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
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...
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
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
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
 

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
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

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
Korhan Bey, "Tekrarsız Liste" sayfasına sütun başlıklarını da aktarmanız gerekiyor, yoksa kod çalışmıyor.

.
 

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
Hatırlatmanız için teşekkürler Haluk bey.

Dosyayı revize ettim.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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]"
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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]& '')"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
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

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
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]&'') "
.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
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!
 
Üst