yazdığım kodlar bilgi sahibi birinin bilinçli olarak yazdığı kodlar değil, daha ziyade el yordamıyla internetten bulunana kodların deneme yanılma yoluyla elde edilen sonuçlarının yorumlamasından ibaret o nedenle açıkçası nasıl açıklayabilirim ben de tam olarak bilmiyorum. ama adım adım açıklamaya çalışayım
HTML:
mesela yukardaki koddaki
1 - FROM [Sayfa1$C2
] bu kod
sayfa1'deki
C2
sütunlarındaki veriyi alır
2 - "SELECT [F1] & '-' & [F2] " burada sadece 2 sütun alındığı için ilk sütun
C sütunu 1. alandır ve veriyi alırken
[F1] olarak tanımlanır,
D sütunu ise
[F2] olarak tanımlanır, siz
C-D bileşimini almak istediğinizden
SELECT [F1] & '-' & [F2] bileşimini aldık.
3 - bir tabloda aynı değere sahip satırlardan sadece birini almak istediğimiz için (belli değere sahip her satır "123-Ali" gibi veriler belli bir kitaba gönderildiğinden sadece o kitabı tanımlamak için benzersiz satırları almak için)
group by kullandık.
4 - "HAVING len([F1] & '-' & [F2])>2 " excelde maalesef silinmiş olsa bile o hücreye bir defa veri girilmişse
ADO o satırı da tabloda bir kayıt gibi görür biz o boş hücrenin alınmasını engellemek için
C-D uzunluğunun 2den büyük olması gerektiği koşulunu
having ile ekledik.
yani yukardaki kod kısaca bize: sayfa1 deki C2

arasındaki verilerden sadece C-D uzunluğu 2den büyük olanları getir
yani C ve D sütunlarında en az bir karakter veri varsa orada bilgi vardır al getir
HTML:
bu kısım verilerin alınacağı sayfa
1 - data source=ThisWorkbook.FullName verilerin alınacağı kitabın adı: yani veriler bu kodun çalıştığı kitaptan alınacak
2 - hdr=No veri alınacak aralıkta tablo adlarının olmadığını söyler. Sayfa1'deki ilk satırda başlıklar vardı (Adı Soyad-pozisyonu-Skala....)
biz ise aralık olarak verilerin olduğu 2. satırdan it,baren almıştık
C2
yani aldığımız aralıkta sadece veriler var başlık yok
HTML:
1 - CN.Open burada verilerin alınacağı kitap ile bağlantıyı sağladık
2 - RS_Grp.Open SQL_Grp, CN, 3, 1 yukardaki
SQL_Grp = "SELECT [F1] & '-' & [F2] " sorgusunu bu kodla çalıştırdık, dikkat ederseniz bir üstteki maddede
CN.open ile kurduğumuz bağlantıyı RS_Grp.Open SQL_Grp,
CN, 3, 1 burada sorguyu oluşturmak için kullandık
yukardaki kodlar kısaca
CN ile veri alınacak kitapla bağlantı kurduk,
RS_Grp ile de verilerin gönderileceği kitapların (123-Muhammed gibi...) adını aldık. aşağıdaki odlar ise kitap adlarına göre o değere sahip kitaplara ilgili veriyi göndermek için
HTML:
burada verileri göndereceğimiz kitabın yapısıyla ilgili bilgileri alabilmek için gerekli kod yazılıyor
hedef kitaptaki
A1:N arasındaki tabloyu/bilgieri alacağız.
RS_Alt hedef sayfadaki alan adlarını daha sonra aşağıdaki sorguda kullanacağız
SQlEkle = "INSERT INTO [Sayfa1$] ([F1], [F2], [F3], [F4], [F5], [F6], [F9], [F10], [F11]) IN '" & hdfAdres & RS_Grp(0) & ".xlsx' 'EXCEL 8.0;' " & _
"select " &
RS_Alt(1).Name & ", " &
RS_Alt(4).Name & ", " &
RS_Alt(6).Name & ", " &
RS_Alt(7).Name & ", " &
RS_Alt(8).Name & ", " & Replace(
RS_Alt(9).Name, ",", ".") & ", " &
RS_Alt(12).Name & "," &
RS_Alt(10).Name & ", " &
RS_Alt(11).Name & " from [Sayfa1$] " & _
"Where ([" & RS_Alt(2).Name & "] & '-' & [" & RS_Alt(3).Name & "]='" & RS_Grp(0) & "' );"
HTML:
buradaki kod yukardaki Recordset ile aldığımız kitap adlarını sırayla alıp işlemi yapıp sonraki kitap adına geçer
yukardaki kod kısaca aşağıdaki değerleri dönderir
123456-Ahmet |
234567-Mehmet |
345678-Hasan |
sırasıyla önce
123456-Ahmet sonra
234567-Mehmet sonra
345678-Hasan böyle böyle her benzersiz değer için işlem yapar
HTML:
burada mesela ilk değer
RS_Grp(0) nin değeri
123456-Ahmet ise
123456-Ahmet kitabına bağlantı sağlar
HTML:
bu kısım verilerin aktarılacağı
123456-Ahmet kitabından ilgili bilgileri almak için sayfaya bağlantı sağlar
HTML:
1 - RS_Hdf.Open "select * from [sayfa1$]", ADO_CNHdf, 3, 1 hedef ile bağlantı kuruldu
2 - "INSERT INTO [Sayfa1$] ([F1], [F2], [F3], [F4], [F5], [F6], [F9], [F10], [F11]) IN '" & hdfAdres & RS_Grp(0) & ".xlsx' 'EXCEL 8.0;' " hedefteki [F1],[F2].....yani a,b,c sütunlarına
3 - select " & RS_Alt(1).Name & ", " & RS_Alt(4).Name & ", " & RS_Alt(6).Name & ", " & RS_Alt(7).Name & ", " & RS_Alt(8).Name & ", " & Replace(RS_Alt(9).Name, ",", ".") & ", " & RS_Alt(12).Name & "," & RS_Alt(10).Name & ", " & RS_Alt(11).Name & " from [Sayfa1$] bu alanlardaki verilerden
4 - Where ([" & RS_Alt(2).Name & "] & '-' & [" & RS_Alt(3).Name & "]='" & RS_Grp(0) & "' );" değerine sahip olanları ekle