Çözüldü Excel VBA ile LEFT JOIN Kullanma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

MESKO

Normal Üye

Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Bereketli Sahurlar.
Üstadlardan aşağıdaki sorguyu ayrıntılı olarak açıklamalarını ( özellikle AS, LEFT JOIN, ON, ) ve başka bir dosyamıza uygulamak istersek dikka etmemiz gereken püf noktaları açıklamalarını rica edeceğim.
Şimdiden teşekkürler.
Saygılar.

sorgu = "SELECT CARIKART.ID, CARIAD, VD, VN, TELEFON, FAKS, ADRES, Sum(HAREKETLER.TUTAR) AS ToplaTUTAR,"
sorgu = sorgu & " HAREKETLER.KARTID FROM CARIKART LEFT JOIN HAREKETLER ON HAREKETLER.KARTID = CARIKART.ID"
 
Çözüm
Sn. @MESKO ekte ilişkilendirdiğim rar dosyasında 2 adet dosya mevcut.
-- 1.Çalışma yapacağımız veri çekeceğimiz dosyadır.
-- 2. ise kapalı olan veri çekilecek dosyadır.
-- Kapalı dosyada "Gelen", "Giden" adına 2 adet sayfa mevcuttur. Bu iki sayada ortak alan (Sütun) sadece "Sicil" alanı (Sütunu)'dır.

Gelen:

gelen.webp


Giden:

Giden.webp


Üsteki resimlerde görüldüğü gibi her iki sayfada ortak alan sadece Sicil alanı (Sütunudur) iki sayfayı birleştirirken bu alanı eşitlememiz gerekmektedir. Diğer alanlara (Sütunlara) baktığımızda diğer sayfalarda bulunmamaktadır. Her iki sayfada bulunan alanları çalışma sayfamıza çekeceğiz ayrıca Gelen sayfasındaki Aylık tutarı Giden...
Sn. @MESKO ekte ilişkilendirdiğim rar dosyasında 2 adet dosya mevcut.
-- 1.Çalışma yapacağımız veri çekeceğimiz dosyadır.
-- 2. ise kapalı olan veri çekilecek dosyadır.
-- Kapalı dosyada "Gelen", "Giden" adına 2 adet sayfa mevcuttur. Bu iki sayada ortak alan (Sütun) sadece "Sicil" alanı (Sütunu)'dır.

Gelen:

gelen.webp


Giden:

Giden.webp


Üsteki resimlerde görüldüğü gibi her iki sayfada ortak alan sadece Sicil alanı (Sütunudur) iki sayfayı birleştirirken bu alanı eşitlememiz gerekmektedir. Diğer alanlara (Sütunlara) baktığımızda diğer sayfalarda bulunmamaktadır. Her iki sayfada bulunan alanları çalışma sayfamıza çekeceğiz ayrıca Gelen sayfasındaki Aylık tutarı Giden sayfasında ki Borc tutarını birbirinden çıkartarak yeni bir alan (sütun) oluşturacağız (AYLIK-BORC=KALAN).

Ben kendi adıma yazayım.
-- ADO'da "LEFT JOIN" fonksiyonunu iki sayfayı (belli bir kritere göre de) birleştirmek için kullanıyorum.
-- ON ile hangi alana (Sütun) göre eşitleneceği gösterilir.
-- AS fonksiyonu sorgu kodunda "Select * Form..." arasında belirtilen alan (sütun) isimlerine takma ad (değişken) koymak için kullanılır.

Örnek dosyamızda ki sorgu kodu:

VBA:
Görüntülemek için giriş yapmalısınız.
(2 satır)

Yukarıda sorgu kodunda gördüğü gibi kapalı dosyadaki sayfa isimleri bir nevi değişkene tanımlanmış S1-S2 şeklinde (zemin rengi gri olan) görünmekte.
Çalışma sayfamıza verileri çekerken alan (sütun) sıralamasını yaparken Sayfa isimlerini veya değişkenlerini yukarıdaki kodda görüldüğü gibi belirmek gerekiyor, sayfa adı belirtilmeyen alan sorgu kodundaki FROM dan sonraki belirtilen sayfada (birinci olan) ise hata vermez yani yukarıdaki sorgu kodundaki alanları belirtirken Gelen sayfasında bulunan alanların S1 diye belirtilmezse de olurdu ancak ON ile eşitlenecek alanı belirtirken kesinlikle kullanılmalıdır.
Yukarıda sorgu kodunda zemin rengi sarı olan yer üst taraflarda bahsettiğim yeni alan kısmıdır yani bu alan her iki sayfada bulunmamaktadır. Bu alan her iki sayfada ki tutarların birbirinde eksilmesidir (kalan borç, kalan ödeme şeklinde). Burada ki AS kodunun görevi bu alanı "KALAN" diye isimlendirmek. Eğer dosyadaki makro kodlarında devam ederek sütun başlıklarını da yazdıracak olsaydık bu alanı KALAN diye yazacaktı. ADO döngü kodunda bu alanı belirtirken RS("Kalan").value şeklinde olur. Başka bir deyiş ile Toplam adında alanımız olsun bunu sorgu kodunda "Select SUM(Toplam), COUNT(Toplam) From [Sayfa1$]" bu şekilde kullandığımızı varsayalım bu durumda ADO döngü de alan isimini belirtirken RS(0).value, RS.(1).value şeklinde kullana biliriz ama AS fonksiyonu ile bu alanlara yeni başlıklar verilebilir "Select SUM(Toplam) AS Top, COUNT(Toplam) AS Adet From [Sayfa1$]" bu kodda olduğu gibi. Varsayım olarak diyelim ki Sayfa adı ile alan isimlerinden bir aynı ise yani Sayfa adı Gelen ve sütun başlıklarında biride Gelen ise kodların hata verme olasılığı vardır bu durumda da AS fonksiyonunu kullanmak gereklidir.

Zaman kısıtlı olduğu için peyderpey yazdım ve bu yazdıklarımdan anlamanız için ADO biraz bilmeniz gerekmektedir. Ayrıca yazım hatası var ise Af ola.
 

Ekli dosyalar

  • Ado Left Join Örnek.rar
    19.8 KB · Görüntüleme: 15
Çözüm
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
DMCA.com Protection Status
Konuyu başlatan
Normal Üye
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
4
Geri
Üst