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:
Giden:
Ü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:
İçeriği 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.