Oke, jadi lookup table di SQL itu adalah dengan perintah JOIN Ada tabel1 (header di row 1) dan tabel2 (header di row 1). Keduanya memiliki sebuah (bisa lebih) field yang sama. Dalam hal ini field 'GG'
Nah, berarti, antara tabel1 dan tabel2 dapat dijejerkan dong (kiri-kanan -- yang disebut pertama dia dikiri). Ketika dijejerkan, pasti yang GG-nya di tabel1 jejer dengan yang GG-nya di-tabel2 bernilai sama. Bayangkan sudah dijejerkan dan yang belum punya pasangan masing tampak kalau ada data kosong disana. Sekarang inginnya hanya yang beririsan saja (alias ada ditabel1 dan juga ada ditabel2 -- ada dikedua tabel). Join type ini namanya INNER JOIN. Setelah punya bayangan jika kedua tabel (beserta selruuh fieldnya) berjejer berdasar kesamaan nilai GG, maka jika tabel1 punya 15 kolom (fields) dan tabel2 punya 21 kolom (fields), maka hasil jejeran adalah sebuah tabel besar dengan 36 kolom, dimana pada 36 kolom itu ada kolom GG berjumlah 2, yaitu 1 milik tabel1 dan 1 lagi milik tabel2. Tentu ingin dipilih fields tertentu saja yang akan ditampilkan bukan, dalam kasus ini misal ingin field Gula dan Garam milik tabel2, ditambah field GG milik tabel1. Jadi kita ingin sebuah tabel hasil : GG (tabel1) Gula (tabel2) Garam (tabel2) Sampai sini sudah jelas ? Nah. Itu yang dinyatakan oleh baris SQL yang pertama : SQL = "SELECT a.GG, b.Gula, b.Garam " yang artinya isi variabel SQL dengan sebuah teks perintah SQL berbunyi 'Pilih field GG dari tabel a, lalu field Gula dari tabel b, lalu field Garam dari tabel b' Tentu saja komputer masih bingung, siapa tabel a dan siapa tabel b. Oleh sebab itu, di baris berikutnya, isi data variabel SQL ditambah lagi dengan keterangan asal tabel itu. SQL = SQL & "FROM `New_Target$` AS a " yang artinya isi variabel SQL dengan nilai variabel SQL sebelumnya, diberi tambahan data kalimat 'Dari tabel New_Target (milik Excel karena ada tanda $ dan diapit ` ) dan nyatakan tabel ini sebagai tabel a' Jadi di tabel a harus ada field GG. Karena New_Target (yang ada field GG) disebut pertama, maka letaknya disebelah kiri. Otomatis tabel b diletakkan jejer disebelah kanan. Langkah selanjutnya adalah perintah menjejerkan : SQL = SQL & "INNER JOIN `Lookup_Tabel$` AS b " artinya : isi variabel SQL dengan nilai variabel SQL sebelumnya, lalu tambah dengan teks kalimat SQL erbunyi 'Gabungkan berjejeran dengan mengambil data irisannya saja (INNER JOIN) terhadap tabel Lookup_Tabel (milik Excel karena ada $ dan diapit ` ), yang tabel tersebut dinyatakan sebagai tabel b' Jadi, pada tabel Lookup_Tabel harus ada field Gula dan Garam (seperti yang sudah dinyatakan dalam perintah Select di atas). Tentu menjejerkan butuh kejelasan tentang kunci penjejerannya. Baris berikut untuk hal itu. SQL = SQL & "ON a.GG = b.GG " artinya : sambung lagi isi SQL dengan 'dijejerkan pada kondisi field GG tabel a sama dengan field GG tabel b' Nah sampai sini proses join sudah selesai. Baris SQL berikut adalah penyediaan ruang untuk melakukan filter. SQL=SQL & "WHERE 1=1 " artinya SQL disambung dengan 'lakukan penyaringan yang memenuhi kondisi (WHERE) nilai 1 sama dengan nilai 1 (tentu semua data akan TRUE dan ditampilkan)' Tapi, baris ini hanya nilai default filter. Jika kebelakang akan dikodingkan kriteria filter hasil data hanya untuk yang GG bernomor genap saja, maka 1=1 ditambah dengan mudah, karena patokannya jelas, yaitu kata WHERE 1=1. Baris berikutnya adalah contoh proses sorting hasil. Disini field GG disort Ascending SQL=SQL & "ORDER BY a.GG" artinya : urutkan hasil berdasar prioritas satu yaitu field GG dari tabel a dengan urutan dari A sampai Z. Jadi, jika digabungkan jadi satu tanpa dipecah pecah, kalimat perintah SQL-nya adalah : SELECT a.GG, b.Gula, b.Garam FROM `New_Target$` AS a INNER JOIN `Lookup_Tabel$` AS b ON a.GG = b.GG WHERE *1=1* ORDER BY a.GG Begitulah ceritanya. Semua pakai bahasa lugas bukan... Yang biru itu kata perintah dalam bahasa SQL, seperti FOR... IF.. THEN... SUB di vb / vba. Kid. 2009/8/31 Posi, Yugustin (PTI-SOR) <[email protected]> > > > Terimakasih kebaikannya Pak. > > Sayang saya sangat buta dengan SQL. Selama ini baru belajar VB excel itupun > sangat dasar. > > > > Kalu ada kesempatan, mohon bantuannya untuk dikirimkan penjelasan mengenai > rumus tersebut (yang sudah Kid buatkan) > > > > Salam, > > Gusti > > > ------------------------------ > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *kid > *Sent:* Monday, August 31, 2009 2:09 PM > > *To:* [email protected] > *Subject:* Re: [belajar-excel] Table Lookup dalam VB > > > > > > ooo MsgBox itu ya... maksudnya untuk informasi dimana (di prosedur apa) > letak koding untuk ubah SQL Command, dan sisanya adalah informasi proses > biasa. > > Jadi, jika akan mengubah SQL Command atau bahkan membuat dinamis SQL > Command-nya, maka ke prosedur OlahData() > > Atau buat prosedur lain yang akhirnya menjalankan prosedur ExecuteSQL() > Batasan untuk prosedur ExecuteSQL() disini hanyalah untuk membaca file > excel saja. Connections STring untuk DBMS lain dihilangkan. > > Kid. > > 2009/8/31 Posi, Yugustin (PTI-SOR) <[email protected]> > > > > Terimakasih banyak Kids, > > Cuma saya kurang mengerti dengan bahasanya (maklum ilmu masih basic banget > J > > > > Saat saya jalankan dengan klik command button Lookup database, masih ada > pesan yang kid create. Itu maksudnya gimana ya Kid. > > > > Mohon pencerahannya. > > > > Salam, > > Gusti > > > ------------------------------ > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *kid > *Sent:* Monday, August 31, 2009 1:51 PM > *To:* [email protected] > *Subject:* Re: [belajar-excel] Table Lookup dalam VB > > > > > > Dear Gusti, > > Kata kunci dari Anda yang dipakai pada file terlampir adalah "melookup ", > berarti dari sebuah daftar berisi item saja, akan diisi property si item, > dalam hal ini property Gula dan Garam. > > File terlampir memanfaatkan Object ListObjects, yang ada mulai xl2003. > Tapi, sebenarnya dibuat dengan xl2007 dan berjalan dengan baik sampai saat > ini, termasuk ketika harus ambil data dari oracle dan sqlserver. > > Data manipulation tetap SQL jagoannya. > Data calculation jelas Excel dong... > > Selamat mencoba. > Kid. > > 2009/8/31 Posi, Yugustin (PTI-SOR) <[email protected]> > > > > Dear All, > > Mohon bantuannya… > > Saya bermaksud membuat VB (Macro) untuk melookup data dari satu table ke > table yang lain. > > > > Misalnya dalam file contoh : > > Sheet Data to be Updated adalah table hasil > > Sheet Lookup table adalah table yang datanya akan di ambil / di lookup > > > > Ke depannya data tersebut akan sangat banyak. > > Saya sudah berhasil membuatnya dengan bahasa for…. Tapi macronya jalan > lama….. sekali….. > > Mohon bantuan dari teman-teman. > > > > Salam, > > Gusti > > > > > > > > > > > > >

