- toekang scada - http://toekangscada.com -

InTouch, SQL untuk Single dan Multi Table

Posted By toekang On April 25, 2008 @ 3:00 pm In Automation,Database,HMI/Scada,Wonderware | 83 Comments

Ada dua tipe data dalam dunia database kalau dilihat dari jumlah tabel yaitu data yang diambil dari single table dan data dari multi table. Single table biasanya hanya menyediakan informasi sederhana, untuk data yang komplek umumnya dipecah-pecah ke dalam beberapa tabel atau lebih dikenal dengan proses normalisasi. InTouch mensupport keduanya, tentunya ada sedikit perbedaan dalam menangani kedua tipe data tersebut.

Singel Tabel
Ambil contoh tabel dibawah :
graphics

Langkah pertama untuk ambil data dari tabel itu ya harus buat dulu BindList seperti ini :
graphics
Itulah fungsi BindList, yaitu memetakan antara variable di InTouch yang lebih dikenal sebagai Tag dengan kolom tabel di database.

Kemudian script untuk mengambil data adalah seperti ini :
graphics
Ngak perlu pusing dengan banyaknya kode di situ, perhatikan saja pada script yang telah toekang beri tanda(box). Untuk mengambil data dari single table cukup memakai sintak SQLSelect. Argument pertama SQLSrv\ID itu Connection ID, kedua adalah nama tabel di database, berikutnya nama BindList, dua argument lainnya adalah Where Expression dan Order Expression dikosongi karena data diambil semua dan ngak diurutkan.
Data-data itu akan ditampilkan ke dalam dua buah listbox yaitu ‘lbxName’ untuk menampilkan Nama device dan ‘lbxDesc’ untuk menampilkan deskripsi device. Hasil akhirnya adalah seperti ini :
graphics
Apakah hanya itu caranya ? tidak kita juga bisa memakai kombinasi ‘SQLSetStatement()’ dan ‘SQLExecute()’ seperti ini :
graphics
Meskipun lebih komplek tapi cara ini menawarkan fleksibelitas, karena sudah tidak lagi tergantung pada nama fisik table dan kolom di database lagi. Tabel dan kolom yang digunakan adalah tabel/kolom virtual hasil dari SQL Query.

Bingung ?? mari lihat sintak yang berbeda untuk menampilkan tabel diatas:
graphics
Hasil akhir sama, tetapi nama kolom berbeda kan? Nantinya nama kolom ini yang dipakai BindList di InTouch seperti ini:
graphics
Jika skript untuk ambil data seperti ini :
graphics
Selanjutnya untuk menangani multi teble, metode ini yang akan dipakai.

Multi Table
Terkadang untuk alasan fleksibelitas dan efisiensi tabel akhir tidak hanya dibentuk dari sebuah tabel, ia dibuat oleh beberapa tabel. Coba perhatikan tabel log berikut :
Tabel A : Data yang dibentuk dari beberapa tabel.
graphics
Perhatikan dibagian sintak SQL-nya, dari sini diketahui bahwa tabel itu dibentuk dari empat buah tabel yaitu : Tabel TDevice yang dipakai sebagai contoh untuk sigle table sebelumnya, tabel TType dan TEU :
graphics
dan tabel Log(data) itu sendiri :
graphics

Untuk mengambil data seperti yang ada dalam tabel A, seperti biasa buat dulu BindList seperti ini:
graphics

Dan ini untuk script InTouch-nya :
graphics
Ada sintak baru disitu yaitu SQLAppendStatement() untuk apa, untuk menambah perintah SQL terhadap perintah sebelumnya. Lho kenapa ngak dibuat simple aja, buatkan variabel dan masukkan semua perintah ke variabel itu. Justru itu, message variabel di InTouch kan hanya bisa menampung maksimal 131 karakter selebihnya akan diabaikan dan sintak SQL di InTouch juga harus patuh pada aturan itu, makanya perlu dipecah-pecah pakai SQLAppendStatement() ini.

Stored Procedure
Toekang sendiri kurang menyukai style diatas dimana semua kode di jejalkan ke dalam InTouch. Untuk perintah-perintah SQL yang komplek, toekang lebih memilih membuat stored procedure (sp) langsung di SQL seperti ini :
graphics
dengan ‘spGetData’ sebagai nama Stored Procedure-nya, nantinya di InTouch tinggal di eksekusi aja Stored Procedure ini dengan perintah ‘EXEC spGetData’ :
graphics
Simpel kan ? Di samping itu manfaat lain jika dibuatkan di sp ini kita dapat langsung tau hasil dari sintak-sintak SQL yang kita buat, mudah memaintenannya, lebih cepat karena langsung di proses di server. Btw ..terserah anda, nyaman pake yang mana.

Sekedar Tip !
Selalu pantau Wonderware Logger ! Seringkali kita sibuk mencari dimana letak kesalahan kode kita tanpa menengok ke fasilitas standard yang telah diberikan oleh Wonderware ini, padahal disitu sering masalah kita telah dijelaskan dengan detil.
graphics


Article printed from toekang scada: http://toekangscada.com

URL to article: http://toekangscada.com/2008/04/25/intouch-sql-untuk-single-dan-multi-table/

Copyright © 2008 toekangscada. All rights reserved.