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

Kirim email ke