Anda di halaman 1dari 242

POWERBUILDER #1

Powerbuilder adalah bahasa pemrograman database visual, dg fitur dan kelebihankelebihan antara lain :
- termasuk golongan 4GL/bhs pemrograman generasi keempat
- memakai metodologi RAD (Rapid Application Development) sehingga
pengerjaan program akan cepat.
- client/server (2-tier maupun 3-tier)
- oop atau berorientasi object dll.
Untuk latihan sample yg anda perlukan adalah :
- PowerBuilder product www.sybase.com
- Database dengan mysql product www.mysql.com
Mari kita mulaijalankan PB anda spt ini :

Penjelasan gambar di atas adalah :


1. Menu Bar (menu-menu dari PB)
2. Toolbar (icon-icon toolbar PB)
3. Window System Tree (berisi informasi sistem object dan object aplikasi yg lain
semacam function, events, window dll.)
4. Window Clip (digunakan untuk menempatkan output ke dlm window clip)
5. Window Output (output informasi spt error message dan proses yg lain)
6. Painter (layar editor tempat membuat object)
Anda bisa menampilkan atau tidak window yg ada dengan mengaturnya di menu
Window spt tampak di gambar atas.
mztolo 2006 PB pemula

Selanjutnya untuk memulai pembuatan program klik icon New

spt ini :

Di bahasa pemrograman lain di sebut juga project, di PB di sebut Workspace atau area
kerja kita.
Tampak modul spt ini :

Perhatikan di page Workspace pilih icon Workspace dan klik OK

Ketik nama workspace nya siswa dan saya simpan di folder c:\samplePB

mztolo 2006 PB pemula

Klik tombol SAVE


Tampak workspace siswa telah tercipta :

Klik tombol New

lagi dan pilih page Target :

Pilih target type nya, yaitu Application karena kita akan membuat aplikasi.
Klik tombol OK
mztolo 2006 PB pemula

Ketik nama targetnya misal siswa juga.spt ini :

Waktu anda klik di entrian bawah selanjutnya akan tampak spt ini.

mztolo 2006 PB pemula

Klik tombol FINISH maka target tercipta dan hasilnya akan tampak spt ini :

Dan kalau anda lihat di direktory samplePB akan tampak spt ini :

Keterangan :
siswa.pbw adalah nama file workspacenya
siswa.pbt adalah nama file targetnya
siswa.pbl adalah nama file librarynya

mztolo 2006 PB pemula

Ok selanjutnya klik tombol New

kembali untuk membuat window :

Pilih page PB Object dan klik Window serta tombol OK

Tampak window atau form yg anda buat sudah tampak di painter anda..

mztolo 2006 PB pemula

Agar view tampak luas anda bisa close terlebih dahulu window clip dan window output,
dan hanya menyisakan window system tree serta painter.
Selanjutnya mari kita tambahkan text di dalam window itu..

Klik kontrol command button spt tampak di atassampai tampil spt ini :

Pilih Static text spt tampak di gambar atas dan klik di area window/form anda spt ini :

mztolo 2006 PB pemula

Seperti tampak pada gambar di atas..selanjutnya ganti text/caption none anda


misalnya dg tulisan spt ini Latihan 1st ku

Anda bisa atur font nya spt ini di properties-nya

Atau bisa anda atur lewat ini

mztolo 2006 PB pemula

Selanjutnya tambahkan command button /tombol di window/form itu.caranya klik


control command buttonnya dulu dan pilih command button spt ini :

Selanjutnya klik di area window spt ini dan atur text nya shg menjadi spt di bawah.

Untuk title/caption window nya sendiri anda klik di area kosong window dan ganti tiltle
nya :

mztolo 2006 PB pemula

Menjadi spt ini..misalnya

Selanjutnya double click di tombol Close untuk mengisi click eventnya spt ini :

Anda ketik close(parent) yg artinya menutup parent dari tombol itu ..parent adalah
tempat tombol berada dg arti lain window itu.
Untuk kembali ke desain window tadi klik page/tab/frame Layout spt tampak di
gambar di bawah.

Spt ini

mztolo 2006 PB pemula

10

Klik tombol save

sampai tampil modul spt ini :

Ketik nama window-nya w_utama dan klik tombol OK


Tampak juga jika anda ingin menambahkan comments/komentar.dan nama library dari
window yg anda buat.
Hasilnya spt initampak di window system tree anda :

mztolo 2006 PB pemula

11

Anda bisa close window yg anda buat dg klik tombol close spt ini :

Selanjutnya untuk memanggil form ini pada saat aplikasi jalan pertama kali.
Double klik di object aplikasi siswa dan ketik koding spt berikut :

Anda perhatikan comments/komentar di event di mulai dg tanda //


open(w_utama) artinya buka/jalankan window utama ini.
Catatan :
Dalam koding command button Close di window w_utama bisa anda ganti menjadi
close(w_utama) karena nama window itu adalah w_utama
Selanjutnya close dan save spt ini :

mztolo 2006 PB pemula

12

Untuk test run program anda klik icon ini

dan lihat hasilnya

Inilah latihan aplikasi 1st anda . J


Klik tombol close untuk release/close window/form tersebut..
Oklalu bagaimana membuat file EXE nya ?!
Langkah selanjutnya adalah kita harus membuat project nya dg klik tombol New
.pilih tab/page Project pilih item Application dan klik tombol OK spt ini :

mztolo 2006 PB pemula

13

Tampak modul spt ini dan isi spt tampak di gambar :

Perhatikan nama Execute File Name nyaharus komplit termasuk direktorynya


Klik tombol close atau klik icon save untuk menyimpan project ini :

mztolo 2006 PB pemula

14

Ketik nama project dan komentar yg di inginkan serta klik tombol OK


Hasilnya spt ini

Selanjutnya klik menu Run di atas serta klik .Full Build Workspace spt ini

Tampak report build nya di window output :

Kalo ada error akan tampil juga di window output ini..

mztolo 2006 PB pemula

15

Berikutnya klik menu Run lagi dan pilih Deploy Workspace

Tampilan di window outputnya spt ini.finish dan sukses !

Tampak isi direktory samplePB anda spt ini :

Klik file siswa.exe .yaprunning well J


Untuk selanjutnya jika anda mau implementasi atau install di client cukup file
siswa.exe, file siswa.pbd dan file2 runtime PB nya yg anda sertakan.
Okdengan demikian sample 1st untuk PB cukup sekian dulunantikan sample2
berikutnya yg sudah mulai dg database J
Siapkan diri anda dg database mysql, myodbc, mysqlfront tentunya atau interface mysql
yg lain.
Akhir kata.sukses untuk anda !!

mztolo 2006 PB pemula

16

POWERBUILDER #2
Dalam PB #2 ini anda akan belajar membuat window type mdi! dan cara membuat
menu, buka workspace yg pernah anda buat di latihan PB #1 :

Rancangan aplikasi yg akan di buat nantinya adalah berupa aplikasi dg layar utama dan
ada menu untuk menjalankan window/form/modul entri yg ada.
Jadi tidak spt waktu latihan 1st di PB #1 yg tampil hanya berupa window tunggal saja.
Tipe data window utama untuk aplikasi dan bersifat spt screen, di PB dikenal sebagai
type window mdi! (multiple document interface)
Sebuah type window mdi!, type window ini sendiri harus memiliki menu
Ok sebelum anda tambah bingung..ikuti saja langkah2 berikut.
Membuat MENU :
Klik tombol New pilih tab PB Object pilih Menu dan klik tombol OK

mztolo 2006 PB #2 membuat menu

Tampak di painter anda modul menu paintertempat anda membuat menu

Klik kanan pada text untitled0 spt ini dan klik Insert Submenu Item

Ketik &File spt tampak di gambar di bawah ini.

Tanda & pada nama2 menu di gunakan sbg shortcutsehingga bisa di panggil dengan
menekan ALT+F

mztolo 2006 PB #2 membuat menu

Tampak juga di propertiesnya spt ini..

Klik kanan di &File dan klik Insert Submenu Item untuk membuat sub-menunya

Ketik Entri &Siswa spt tampak di gambar bawah

mztolo 2006 PB #2 membuat menu

Ulangi langkah2 di atas untuk membuat sub-menu berikutnyasehingga hasilnya spt ini

Di layar sebelah kanan tampak layout/display/preview tampilan menu yg telah di buat.


Selanjutnya buat menu item lain dg cara klik kanan &File dan klik spt di bawah ini..

Ketik spt tampak berikut ini.

Dan buat sub-menu Transaksi serta menu item berikutnya sehingga hasilnya spt ini

mztolo 2006 PB #2 membuat menu

Save dan beri nama mn_siswa spt tampak di gambar bawah

Dengan demikian proses pembuatan menu sudah selesai J


Tampak mn_siswa sudah ada di tree system anda :

mztolo 2006 PB #2 membuat menu

Ok selanjutnya double click window w_utama .

Perhatikan :
Title
WindowType
WindowState
Icon

=Program Entri Data Siswa


=mdi!
=maximized!
=Form!

Selanjutnya klik tombol di kanan entrian MenuName

mztolo 2006 PB #2 membuat menu

Tampak modul spt ini

Dan klik tombol OKsehingga tampak di properties spt gambar di bawah ini.

Save perubahan window w_utama.

dan coba run aplikasi klik icon

mztolo 2006 PB #2 membuat menu

Yap..sukses. J

Hapus text Latihan 1st ku dan tombol Close..maka jika di run akan spt ini

Note :
Menu-menu di atas belum berisi command/koding, sehingga jika anda klik menu Exit
pun window/aplikasi tdk akan Close atau Exit
Bagaimana cara mengisinya ?
Mari kita lakukan..
Double click di mn_siswa untuk melakukan modifikasi menu tersebut
Selanjutnya double click di menu item E&xit agar event click nya aktif.

mztolo 2006 PB #2 membuat menu

Ketik koding spt tampak di gambar bawah.

Perhatikan :
if messagebox('Exit','Anda Yakin ?',question!,YesNo!) = 1 then
halt
end if
Note :
m_file.m_exit artinya m_exit (E&xit) merupakan sub-menu dari m_file (&File)
Pada saat anda klik menu Exit maka akan keluar pertanyaan spt ini

Jika anda klik tombol Yes maka sistem akan HALT alias berhenti atau close(nilai
return valuenya 1, kalo 2 adalah No perhatikan susunan YesNo! yes=1 ..no=2)
Perhatikan gambar di atas dan perhatikan koding-nyaanda bisa ambil kesimpulan
sendiri.misal question! itu simbol ? spt tampak di gambar.begitu juga text yg
lainnya.
Untuk koding yg lain akan dibuat sambil jalannantikan sample berikutnya J
Sukses untuk anda !!

mztolo 2006 PB #2 membuat menu

POWERBUILDER #3
Untuk latihan berikut ini Anda siapkan database sekolah dengan table tblsiswa di
mysql anda, adapun struktur tablenya spt ini :
1. nis char(8)
2. nama varchar(50)
3. kota varchar(15)
4. tgllhr date
5. jkel char(1)
6. tabungan float(10,0)
Spt tampak di bawah ini, dg mySQLFront 2.5 :

Selanjutnya buka workspace yg pernah anda buat di latihan PB sebelumnya :

mztolo 2006 PB #3 koneksi data

Setelah database mysql anda create selanjutnya adalah membuat koneksi database dengan
cara.klik icon Database

Klik tombol + di depan ODB ODBC sehingga ter-expand.


Klik kanan di ODB ODBC dan klik New Profile.

mztolo 2006 PB #3 koneksi data

Tampil modul Database Profile Setup ODBC spt ini

Isi data/value spt tampak di atas..


Profile Name:
=sekolah
User ID:
=root
Isolation Level:
=Read Uncommitted
Driver-Specific Parameters: =
DRIVER={MySQL ODBC 3.51 Driver};DESC=;DATABASE=sekolah;
SERVER=guzrud;UID=root;PASSWORD=;PORT=3306;OPTION=3;STMT=;
Note :
sekolah adalah nama databasenya
guzrud adalah nama servernya, sesuaikan dg nama server anda
root adalah id standard koneksi ke mysql nya
Commit on Disconnect jangan di centang !
Klik tombol Apply

mztolo 2006 PB #3 koneksi data

Klik tab Preview sehingga tampak spt ini..

Klik tombol Copy untuk mengcopy listing profile koneksinya.(perhatikan kalo copy
listing tersebut masih dlm kondisi ter-blok spt tampak di gambar atas)
Gunanya untuk apa ?! nanti anda tahu J
Klik tombol Test Connection untuk memastikan connection successful..

Yap.sukses. !!
Klik tombol OK..
Selanjutnya untuk keluar dari modul profile ini klik tombol OK lagi

mztolo 2006 PB #3 koneksi data

Tampak profile koneksi sekolah telah tercipta..

Klik kanan dan Connect

Perhatikan tanda centang warna hijau yg menandakan koneksi yg aktif.

mztolo 2006 PB #3 koneksi data

Ok selanjutnya double click object application siswa.

Dalam open event nya di atas command open(w_utama) klik kanan mouse dan
paste listing kode profile koneksinya .shg hasilnya spt ini( jadi tahu kan kenapa
tadi anda diminta untuk click tombol Copy lihat hal. 4)

Tambahkan command untuk connect stl listing tersebut sbl open(w_utama)


connect;
if SQLCA.SQLDBCode<>0 then
messagebox('Koneksi Gagal',SQLCA.SQLErrText,stopsign!)
halt close
end if
Note :
connect; adalah perintah untuk konek ke database sesuai listing SQLCA nya
jika SQLCA.SQLDBCode bernilai selain 0 (nol) maka koneksi gagaljika koneksi gagal
maka sistem close.
SQLCA sendiri di PB adalah sebuah object dg type Transaction yg berfungsi
menangani koneksi ke database, SQLCA di deklarasikan sbg variable yg bersifat global
dan merupakan object standard PB untuk koneksi ke database.

mztolo 2006 PB #3 koneksi data

Sehingga menjadi spt ini

Mmmmm kenapa harus ada 2x koneksi lalu yg di pakai yg mana ?


Dua-duanya di pakai..
Koneksi di Database akan kepakai pada saat kita desain datawindow.interface untuk
datanya (baik sbg query maupun editing dan report)
Sedangkan koneksi di object aplikasi dipakai untuk koneksi pada saat aplikasi itu running
Simpan perubahan yg terjadi ini akan terpakai pada saat pembuatan datawindow, ada
di sample berikutnya J
Dengan demikian proses pembuatan profile koneksi data sudah selesai J
Sukses untuk anda !!

mztolo 2006 PB #3 koneksi data

POWERBUILDER #4
Sample kali ini adalah membuat modul entry untuk data siswa.
Modul ini berupa window dgn beberapa tombol dan datawindow sbg interface datanya.
Datawindow sendiri berfungsi sbg display, serta memungkinkan user untuk
memanipulasi, update data dan informasi yg lain.
Window sendiri dalam hal ini berfungsi sbg tempat datawindow tersebut.
Jadi kalo digambarkan akan memiliki urutan sb :
Data Datawindow Window
Mari kita mulai.Klik tombol New sampai tampil spt ini..

Pilih tab DataWindow, pilih Freeform dan klik tombol OK

Klik tombol Next >

mztolo 2006 PB #4 datawindow

Klik table tblsiswa dan klik tombol Add All serta diikuti tombol OK, sampai tampil
modul spt ini

Klik tombol Next >


mztolo 2006 PB #4 datawindow

Untuk mengakhiri klik tombol Finish datawindow anda sudah jadi

mztolo 2006 PB #4 datawindow

Setup/lihat update properties datawindow-nya.klik menu Rows dan klik menu


Update Propertiesnyaspt ini

Perhatikan .setting updatenya sudah benar.klik OK

Note :
Allow Updatesnya sudah di centang
Table to Updatenya sudah benar
Updateable Columnsnya sudah benar
Unique Key Column(s)nya juga sudah benar sesuai primary key mysql sbg databasenya.
Begitu juga klausa dan key modifikasinya juga sudah benar.

mztolo 2006 PB #4 datawindow

Save datawindow tersebutdg nama dw_entri_siswadan klik OK

Tampak di system tree anda

Selanjutnya membuat window sbg tempat kontrol datawindow dw_entri_siswa tersebut


Tidak perlu saya jelaskan secara rinci langkah2 nya karena di sample sebelumnya telah
ada sample membuat window.

Perhatikan di window ini ada 9 tombol spt tampak di gambar atas..


mztolo 2006 PB #4 datawindow

Perhatikan propertiesnya .anda buat spt contoh ini..

Klik datawindow dw_entri_siswa yg ada di system tree dan drag ke window.spt ini

mztolo 2006 PB #4 datawindow

Rapikan sehingga menjadi spt ini(atur lebar dan tata letakknya)

Perhatikan properties datawindow dw_entri_siswa.

Name control datawindow ini adalah dw_1 .nama ini bisa anda ganti sesuai
keinginan andasementara kita pakai dw_1 dulu..
Double click di area kosong window untuk mengaktifkan open event nya dan ketik :
dw_1.setTransObject(SQLCA)
Selanjutnya mari kita isi click event dari masing2 tombolnya..
Kita mulai dari tombol Retrieve.. double click tombol tsb.ketik koding ini :
dw_1.retrieve()
Note :
dw_1 adalah nama dari kontrol datawindownya spt yg dijelaskan di atas
setTransObject(SQLCA) berfungsi untuk memberikan sepisifikasi object transaksi yg di
pergunakan, dalam hal ini adalah SQLCA.
retrieve() adalah perintah untuk SELECT (table/view) atau EXEC (store procedure).
Double click tombol Add dan ketik koding berikut.(untuk menambah)
dw_1.ScrollToRow(dw_1.insertrow(0))
dw_1.setcolumn(1)
dw_1.setfocus()
mztolo 2006 PB #4 datawindow

Note :
insertrow(0) berfungsi untuk menambahkan data baru
scrolltorow() tersendiri berfungsi untuk mengeser pointer ke row baru/kosong tsb.
setcolumn(1) aktifkan kolom 1
setfocus() aktifkan kursor
Double click tombol Update dan ketik koding berikut(untuk menyimpan)
if dw_1.update()=1 then
commit;
messagebox('Info..','Penyimpanan Sukses !',information!,ok!)
else
rollback;
messagebox('Info..','Penyimpanan Gagal !',information!,ok!)
return
end if
Note :
Jka update() sukses, return value =1 maka commit jika tidak akan di rollback atau di
kembalikan spt keadaan sbl proses editing.
Double click tombol Delete dan ketik koding berikut(untuk hapus data)
if messagebox("Hapus Data","Anda Yakin ?",Exclamation!,YesNo!,2)=2 then return -1
if dw_1.rowcount()>0 then
dw_1.deleterow(0)
dw_1.setfocus()
if dw_1.update()=1 then
commit;
messagebox('Info..','Penghapusan Sukses !',information!,ok!)
else
rollback;
messagebox('Info..','Penghapusan Gagal !',information!,ok!)
return -1
end if
else
return -1
end if

Note :
deleterow(0) berfungsi untuk menghapus row aktif.
Double click tombol Close dan ketik koding berikut(untuk close window)
close(parent)

mztolo 2006 PB #4 datawindow

Double click tombol << dan ketik koding berikut(untuk go top)


if dw_1.getrow() = 1 then
messagebox(":)","Data pertama !",Information!,Ok!)
else
dw_1.scrolltorow(1)
end if
Note :
getrow() berfungsi untuk mengecek row aktif di datawindow .jika = 1 artinya di row
pertama.
scrolltorow(1) artinya mengeser pointer ke record/row 1
Double click tombol < dan ketik koding berikut(untuk ke row sebelumnya)
if dw_1.getrow() = 1 then
messagebox(":)","Data pertama !",Information!,Ok!)
else
dw_1.scrollpriorrow()
end if
Note
scrollpriorrow() untuk menggeser pointer ke row sebelumnya
Double click tombol > dan ketik koding berikut(untuk ke row berikutnya)
if dw_1.getrow() =dw_1.rowcount() then
messagebox(":)","Data terakhir !",Information!,Ok!)
else
dw_1.scrollnextrow()
end if
Note :
rowcount() untuk mengetahui jml row/record yg ada di datawindow
scrollnextrow() untuk ke row berikutnya
Double click tombol >> dan ketik koding berikut(untuk go bottom)
if dw_1.getrow() = dw_1.rowcount() then
messagebox(":)","Data terakhir !",Information!,Ok!)
else
dw_1.scrolltorow(dw_1.rowcount() )
end if
Note :
scrolltorow(jml row datawindow) artinya sama juga ke row terakhir
Ok..koding sudah selesai save window anda dg nama w_entri_siswa

mztolo 2006 PB #4 datawindow

Selanjutnya double click menu Entri &Siswa dan ketik koding untuk memanggil
window w_entri_siswa spt ini

Perhatikan koding di m_file.m_entrisiswa :


opensheet(w_entri_siswa,w_utama,2,original!)
Note :
Membuka window w_entri_siswa sbg sheet atau lembar kerja yg bernaung di bawah/di
dalam window w_utama.
Angka 2 menunjukkan nomor menu item yg diasosiasikan dg sheet yg di buka.
original! menandakan window di open sesuai ukuran aslinya.
(anda bisa melihat detail penjelasan di help PB.blok command yg ingin dilihat detail
helpnya dan tekan tombol Shift + F1)
Kenapa dipakai opensheet() bukan open(w_utama) spt contoh sebelumnya ?
Kalo anda pakai open(w_utama) maka akan di anggap window terpisah dari window
mdi!-nya dan bersifat tdk always on the top atau modeless
Save perubahan di menu mn_siswa ..
Jalankan aplikasi anda..klik tombol Run

mztolo 2006 PB #4 datawindow

klik menu File > Entri Siswa

10

Begitulah tampilan sheet/window entri anda..jika data sudah ada klik tombol
Retrieve untuk menampilkan data yg pernah di entri.
Klik tombol ADD isi data spt ini dan klik tombol Update

Yap.data tersimpan dg sukses J klik OK


Ok dengan demikian sample datawindow dan window entri sudah selesai J
Apakah sample di atas sudah maksimal ?! Jelas belum.
Anda masih bisa mempercantik tampilan-nya dan memberikan toolbars sheetnya
Akan di bahas di sample berikutnya
Sukses untuk anda !!

mztolo 2006 PB #4 datawindow

11

POWERBUILDER #5

Perhatikan sheet/window entri yg pernah anda buat sebelumnya


Masih lugu dan belom di make-up J

Dari system tree double click window entri siswa w_entri_siswa shg tampak spt ini
Dan rightclick di area datawindow control nya.shg tampak spt berikut

Untuk modifikasi datawindow nyaklik Modify DataWindow

mztolo 2006 PB #5 sheet/window

Sehingga tampak spt di bawah.

Paling atas adalah design layout dari datawindownyaspt anda pernah buat
Bawahnya adalah preview dari datawindownya
Sedang yg paling bawah adalah list dari field2 databasenya.
Tekan dan tahan tombol control dan klik text keterangan dari field2 yg ada spt ini

mztolo 2006 PB #5 sheet/window

Lalu di propertiesnya anda setting border nya spt iniunderline

Hasilnya spt ini.

Selanjutnya coba click area kosong dari datawindow anda dan klik lagi text Tgllhr :
seperti ini :

mztolo 2006 PB #5 sheet/window

Ubah property text Tgllhr : di kolom textnya spt tampak..berikut ini :

Ganti Text yg ada dg Lahir : saja.shg tampak spt ini dan hasilnya.

Anda coba ubah Jkel : menjadi Sex : shg tampak spt ini hasil akhirnya.

mztolo 2006 PB #5 sheet/window

Tekan dan tahan tombol control lagi serta click semua field yg ada.spt ini :

Atur property border nyaspt ini :

Hasilnya spt ini :

mztolo 2006 PB #5 sheet/window

Anda juga bisa coba pilihan tampilan border yg lain :

Selanjutnya rapikan dan rapatkan item2 atau field yg ada di situspt ini :

Serta rapatkan band detail anda ke atas.klik mouse dan geser ke atas spt ini :

Okclose painter editing datawindow ini dan jgn lupa save perubahan yg ada.

mztolo 2006 PB #5 sheet/window

Perhatikan window anda.spt ini :

Rapikan datawindow control dan tombol2 yg ada di window/sheet tersebut.spt ini :

Anda juga bisa atur border/borderstyle datawindow control nya shg menjadi spt ini :

mztolo 2006 PB #5 sheet/window

Close dan save perubahan tersebut..lalu jalankan aplikasi dan panggil window/sheet :

Lebih indah bukan .. J


Dengan demikian sample make-up text, control field, window dan datawindow control
sudah selesai J
Anda bisa coba sendiri dg efek bold, italic dan warna sesuai selera anda .
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #5 sheet/window

POWERBUILDER #6
Jalankan aplikasi anda dan buku sheet/window entri data siswa spt ini
Klik data di nis dan tekan tombol ENTER ! Apa yg terjadi ?!

Data akan bergeser/bergerak ke record selanjutnya.


Untuk menggeser pointer dari satu field/kolom ke field/kolom lain, misal dari nis ke
nama bisa anda pakai tombol tab atau tabulator
Bagimana jika kita ingin mengeser pointer antar field/data dg tombol panah atas/bawah
atau tombol enter ?
Anda harus menambahkan event di datawindow controlnya.
Mari kita lakukan J
Pada kondisi window painter editing klik datawindow control anda.

Selanjutnya klik tab Event List yg ada di bawahspt tampak di gambar

mztolo 2006 PB #6 event di datawindow

Selanjutnya klik kanan mouse dan pilih Add untuk menambah event baru.

Pilih powerbuilder object-nya datawindow control yg bernama dw_1

mztolo 2006 PB #6 event di datawindow

Ketik di Return Type pilih long dan untuk Event Name ketik ue_tombol
Selanjutnya di Event ID: pilih pbm_dwnkey
Dan hasilnya akan spt ini..

Selanjutnya anda bisa mengetik koding di dalam event ue_tombol ini.(ingat nama ini
bebas ya.tdk harus ue_tombol, justru yg penting adalah Event ID nya.
Anda perhatikan argument type keycode dan namenya key serta keyflags adalah
default value yg di punyai pbm_dwnkey jika ini blom keluar/ada biarkan saja, pada
saat close event editor ini nantinya jika keluar info untuk Ignore tekan Yes saja.

mztolo 2006 PB #6 event di datawindow

Isi koding event-nya spt ini :


int li_column_number,li_column_count,first_column
boolean lb_enter,lb_dwnrow,lb_uparrow
lb_enter
lb_dwnrow
lb_uparrow

=keydown(keyenter!)
=keydown(keydownarrow!)
=keydown(keyuparrow!)

li_column_number =dw_1.getcolumn()
li_column_count
=integer(dw_1.object.datawindow.column.count)
first_column =1
if keyflags=0 then
if lb_enter or lb_dwnrow then
if li_column_number=integer(dw_1.object.datawindow.column.count) then

dw_1.setcolumn(first_column)
else
dw_1.setcolumn(li_column_number + 1)
end if
elseif lb_uparrow then
if li_column_number=1 then
dw_1.setcolumn(integer(dw_1.object.datawindow.column.count))
else
dw_1.setcolumn(li_column_number - 1)
end if
end if
elseif keyflags=1 then
if lb_uparrow then
if li_column_number=integer(dw_1.object.datawindow.column.count) then
dw_1.setcolumn(first_column)
else
dw_1.setcolumn(li_column_number + 1)
end if
elseif lb_enter or lb_dwnrow then
if li_column_number=1 then
dw_1.setcolumn(integer(dw_1.object.datawindow.column.count))
else
dw_1.setcolumn(li_column_number - 1)
end if
end if
else
return 0
end if
return 1

mztolo 2006 PB #6 event di datawindow

Keterangan :
Keyflags = 0 artinya tanpa ada penekanan tombol kombinasi dg tombol function lain.
Keyflags = 1 ada penekanan tombol dg Shift
Keyflags = 2 ada penekanan tombol dg Ctrl
Keyflags = 3 ada penekanan tombol dg Shift + Ctrl
Keyflags = 4 ada penekanan tombol dg Alt dst-nya.
Keydown berfungsi untuk menentukan tombol apakah yg di tekan user.
Keydown(enter!) artinya jika/apakah yg di tekan ENTER..
Anda perhatikan koding berikut ini.
li_column_number =dw_1.getcolumn()
// getcolumn() untuk mengetahui posisi kolom aktif
li_column_count
=integer(dw_1.object.datawindow.column.count)
// untuk mengetahui jml kolom dlm 1 row/record
Selanjutnya..
if lb_enter or lb_dwnrow then
// apakah yg di tekan enter atau panah bawah ?
if li_column_number=integer(dw_1.object.datawindow.column.count) then

// jika posisi kolom aktif = kolom terakhir/jml kolom


dw_1.setcolumn(first_column)
// posisi pointer kembali ke kolom pertama
else
dw_1.setcolumn(li_column_number + 1)
// jika tidak maka jalankan pointer ke kolom berikutnya
end if
elseif lb_uparrow then
// jika yg di tekan tombol panah atas
if li_column_number=1 then
// jika di posisi kolom 1 (pertama)
dw_1.setcolumn(integer(dw_1.object.datawindow.column.count))
// jalankan pointer di kolom terakhir
else
dw_1.setcolumn(li_column_number - 1)
// jika tdk di posisi terakhir maka jlnkan pointer ke kolom sblm nya
end if
end if
Demikianlah semoga bisa memberikan gambaran event penekanan tombol di datawindow
Note :
Lalu apakah kita harus membuat event ini di semua datawindow ? Yap benar
Tidak efisien dong kalo hrs ketik koding lagi ? Benar sekali
Lalu solusinya bagaimana ? Yaitu dg membuat function yg bisa di panggil oleh event
ini, jadi cukup koding 1x saja.
Nanti anda akan belajar cara membuat function..tunggu aja J

mztolo 2006 PB #6 event di datawindow

Coba jalankan aplikasi dan buka sheet entri data siswaspt ini

Klik di kolom Nama dan coba tekan tombol ENTER atau panah atas/bawah
Dan coba juga dikombinasikan dg tombol Shift
Dengan demikian sample pembuatan event keydown di datawindow control sudah
selesai J
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #6 event di datawindow

POWERBUILDER #7
Berikut ini cara membuat function
Spt biasa dari kondisi workspace aplikasi anda klik tombol New..

Pilih tab PB Object terus pilih Function dan klik tombol OK


Dan ketik spt tampak di gambar bawah

Return type = integer (0 tdk ada action, 1 ada action)


Function name = f_tekantombol (nama functionnya)
Argument name = dw_1 dg argument type datawindow
Selanjutnya untuk menambah parameter klik kanan mouse dan pilih Add Parameter
Tambahkan..
Argument name = keyflags (untuk kontrol tombol kombinasi apa yg di tekan)

mztolo 2006 PB #7 function

Lakukan langkah yg sama untuk menambah parameter lagi.spt gambar di bawah

Selanjutnya copy saja koding ue_tombol ke dalam fungsi ini


Perhatikan..
int li_column_number,li_column_count
first_column jgn disertakan di dlm koding inisbg ganti kita sudah buat di argument
name-nya.

mztolo 2006 PB #7 function

Berikut koding komplitnya :


int li_column_number,li_column_count
boolean lb_enter,lb_dwnrow,lb_uparrow
lb_enter
lb_dwnrow
lb_uparrow

=keydown(keyenter!)
=keydown(keydownarrow!)
=keydown(keyuparrow!)

li_column_number
li_column_count

=dw_1.getcolumn()
=integer(dw_1.object.datawindow.column.count)

if isnull(first_column) then
first_column =1
end if
if keyflags=0 then
if lb_enter or lb_dwnrow then
if li_column_number=integer(dw_1.object.datawindow.column.count) then
dw_1.setcolumn(first_column)
else
dw_1.setcolumn(li_column_number + 1)
end if
elseif lb_uparrow then
if li_column_number=1 then
dw_1.setcolumn(integer(dw_1.object.datawindow.column.count))
else
dw_1.setcolumn(li_column_number - 1)
end if
end if
elseif keyflags=1 then
if lb_uparrow then
if li_column_number=integer(dw_1.object.datawindow.column.count) then
dw_1.setcolumn(first_column)
else
dw_1.setcolumn(li_column_number + 1)
end if
elseif lb_enter or lb_dwnrow then
if li_column_number=1 then
dw_1.setcolumn(integer(dw_1.object.datawindow.column.count))
else
dw_1.setcolumn(li_column_number - 1)
end if
end if
else
return 0
end if
return 1

mztolo 2006 PB #7 function

Simpan function yg baru saja anda buat..

Tampak di system tree anda.fungsi sudah tercipta.

Buka event ue_tombol di datawindow control dan ganti dg spt ini

Anda cukup ketik return f_tekantombol(this,keyflags,1)

mztolo 2006 PB #7 function

Note :
Anda ingat waktu membuat function f_tekantombol ?
Disana ada 3 parameter.dw_1, keyflags dan first_column
Oleh karena itu value yg di lewatkan jg berjumlah 3 spt ini :
f_tekantombol(this,keyflags,1)
this = merujuk datawindow itu sendiri
keyflags = keyflags yg di tekan.
1 = merujuk posisi pointer di kolom 1
Close dan save perubahan yg ada di ue_tombol
Jalankan aplikasi dan test fungsinyayap berjalan sukses !!
Fungsi ini bisa anda pakai untuk datawindow control yg lain.
Untuk fungsi yg lain cara pembuatannya sama, tinggal sesuaikan parameter yg ada.
Dengan demikian sample pembuatan function sudah selesai J
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #7 function

POWERBUILDER #8
Coba jalankan dan buka sheet entri data siswa anda spt ini.

Perhatikan modul di atas ada 9 tombol yg di pakai


Bagaimana jika kita ingin buat semacam toolbar saja ?
Atau di PB istilahnya menu sheet/window..
Langkah2 nya sama dg waktu anda membuat menu yg ada di sample terdahulu
Klik New pilih Menu di tab PB Object dan klik tombol OK
Selanjutnya buat menu pertama Retrieve dg icon spt tampak di bawah ini :

mztolo 2006 PB #8 menu sheet/window

Lanjutkan dg item menu yg lain shg hasilnya spt ini

Perhatikan picture2 yg ada sudah disediakan oleh PB..


Klik tombol save beri nama mn_sheet dan klik OK

Untuk koding isinya biarkan kosong dulu.

mztolo 2006 PB #8 menu sheet/window

Selanjutnya buka dan modifikasi form entri data siswa.spt ini

Perhatikan di MenuName isi dg menu sheet nya.dan simpan/save perubahan form ini
Pada saat modul sheet entri data siswa di jalankan akan tampak spt ini

Langkah selanjutnya ?
1. Membuat event untuk retrieve, add, update, delete, close, top, prior, next dan bottom.
2. Mengisi event2 tersebut dg koding spt yg ada di tombol2 itu
3. Delete semua tombol yg adakrn sudah tdk kita pakai lagi
4. Isi koding di menu sheet anda untuk menjalankan koding yg ada di sheet/window
Okmari kita lakukan satu per satu J

mztolo 2006 PB #8 menu sheet/window

Membuat event di sheet/window :


ue_retrive = untuk event retrieve
ue_add = untuk event add
ue_update = untuk event update
ue_delete = untuk event delete
ue_close = untuk event close
ue_top = untuk event top
ue_prior = untuk event prior/previous
ue_next = untuk event next
ue_bottom = untuk event bottom
Double click w_entri_siswa dari system tree anda untuk modifikasi.
Klik tab event di bawah dan ..dari modul event itu klik kanan mouse.lalu pilih Add

Ketik nama event-nya ue_retrieve spt ini..dan isi koding event-nya

mztolo 2006 PB #8 menu sheet/window

Klik kanan di event tersebut dan pilih New Event

Ketik nama event-nya ue_add .

Lakukan hal yg sama untuk event2 berikutnya.


Isi ue_update :
if dw_1.update()=1 then
commit;
messagebox('Info..','Penyimpanan Sukses !',information!,ok!)
else
rollback;
messagebox('Info..','Penyimpanan Gagal !',information!,ok!)
return
end if

mztolo 2006 PB #8 menu sheet/window

Isi ue_delete :
if messagebox("Hapus Data","Anda Yakin ?",Exclamation!,YesNo!,2)=2 then return

if dw_1.rowcount()>0 then
dw_1.deleterow(0)
dw_1.setfocus()
if dw_1.update()=1 then
commit;
messagebox('Info..','Penghapusan Sukses !',information!,ok!)
else
rollback;
messagebox('Info..','Penghapusan Gagal !',information!,ok!)
return
end if
else
return
end if
Isi ue_close :
close(this)
Isi ue_top :
if dw_1.getrow() = 1 then
messagebox(":)","Data pertama !",Information!,Ok!)
else
dw_1.scrolltorow(1)
end if
Isi ue_prior :
if dw_1.getrow() = 1 then
messagebox(":)","Data pertama !",Information!,Ok!)
else
dw_1.scrollpriorrow()
end if
Isi ue_next :
if dw_1.getrow() =dw_1.rowcount() then
messagebox(":)","Data terakhir !",Information!,Ok!)
else
dw_1.scrollnextrow()
end if
Isi ue_bottom :
if dw_1.getrow() = dw_1.rowcount() then
messagebox(":)","Data terakhir !",Information!,Ok!)
else
dw_1.scrolltorow(dw_1.rowcount() )
end if
mztolo 2006 PB #8 menu sheet/window

Kalo anda perhatikan koding yg di tulis di event2 tersebut ada yg mirip sekali dg koding
yg ada di click event tombol dan ada juga yg perlu di sesuaikan.
Misal di tombol close dan di event ue_close
Yg pertama tertulis close(parent) yg ke dua tertulis close(this)
Bagi anda yg sudah memahami bahwa koding mengacu pada object yg ada pasti sudah
tahu.ketika di tombol pake parent krn sheet tersebut adalah parent dari tombol, tetapi
ketika di event yg notabene ada di sheet tersebut maka cukup pake kata this.
Begitu jg return value, krn event ini semua (None) untuk return type/value nya maka,
koding yg dulu di tombol ada return -1 cukup kita tuliskan return saja..
Ok..selanjutnya hapus semua tombol yg ada..serta save.

Dan isi koding di menu sheet nya .


Doubleclick mn_sheet untuk modifikasi.kemudian doubleclick item retrieve serta
isi koding spt ini

Lakukan hal yg sama untuk item menu yg lain...


Untuk ue_add spt ini parentwindow.triggerevent ("ue_add") dst-nya.
mztolo 2006 PB #8 menu sheet/window

Setelah semua di isi dan di simpan/save jalankan aplikasi dan open sheet nya yap

Atau spt ini.

Atau spt ini.

mztolo 2006 PB #8 menu sheet/window

Anda juga bisa memakai menu text nyaspt ini

Perlu saya jelaskan juga bahwa logika tombol pada dasarnya sama juga dg apa yg pernah
saya berikan samplenya untuk aplikasi developer yg lain
Begitu juga koding yg ada masih dpt dikembangkan, semisal untuk data master detail.
Ok ..saya harapkan anda tekun dan teliti serta jgn patah semangatitu lah yg akan
membawa anda ke level selanjutnya dan level yg tak akan anda duga nantinya J
(jgn lupa perbanyak doa dan rasa syukur kepada Nya)
Dengan demikian sample pembuatan menu sheet sudah selesai J
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #8 menu sheet/window

POWERBUILDER #9
Latihan kali ini kita akan mencoba membuat sample untuk entri sheet master detail,
atau header detail.
Maka di perlukan 2 table lagi spt ini (untuk mySQL saya pake myISAM) :
Master tblhujian dg key nis

Detail tbldujian dg key kode yg merupakan nilai hasil autoincrement

Sebelum anda membuat datawindownya, pastikan koneksi ke database sekolah masih


aktif atau terkoneksi :

mztolo 2006 PB #9 sheet/window master detail

Untuk selanjutnya mari kita buat datawindow untuk masternya terlebih dahulu.
Klik tombol new
dan klik tombol OK

di dalam tab DataWindow pilih type datawindow Freeform

Pilih Quick Select .terus perhatikan Retrieve on Preview tdk usah di centang
maksudnya apa.agar pada waktu window tercipta tdk langsung tampil di preview
Mengapa ? Jika data kosong no problem tapi kalo data anda jutaan maka anda harus
nunggu preview selesai dulu setiap kali anda modifikasi datawindow itu.

Selanjutnya stl memilih spt di atas klik tombol Next

Pilih tblhujian pilih semua field/kolomnya dan klik OK

mztolo 2006 PB #9 sheet/window master detail

Klik tombol NEXT dan klik FINISH sampai tampil spt ini :

Rapikan menjadi spt ini :

Bagaimana jika untuk nis saya ingin tampilkan nama siswa jadi bukan nis nya.
Atau dg kata lain dlm bentuk combobox
Untuk membuat combobox yg me-refer ke data lain di PB anda harus membuat suatu
datawindow baru yg diistilahkan dropdown datawindow
Nah krn data nis ini nanti me-refer dari data tblsiswa maka waktu membuat
drowdown datawindow kita memakai data dari tblsiswa tersebut.
Coba save dulu window yg baru saja anda buat ini dg nama dw_entri_h_ujian
Selanjutnya buat window baru, langkahnya sama dg cara di atas hanya anda pilih type
window tabular.
Dengan sumber data tblsiswa dan di ambil kolom nis dan nama spt ini :

Anda tarik band header ke atas dg mouse anda, sehingga judul kolom tertutup (atau anda
hapus dan tarik band header ke atas jg boleh).

Tujuannya apa ? Kita tidak mau memakai header/judul kolom tersebut.


Selanjutnya klik detail nis dan hapusdg menekan tombol DEL

mztolo 2006 PB #9 sheet/window master detail

Kenapa kolom nis disertakan diwaktu awal membuat dropdown datawindow ini jika
akhirnya di hapus ?
Memang benar data ini di hapus tetapi pada dasarnya hanya di hapus di tampilan saja,
sedangkan data nis sebenarnya tetap harus ada dan nantinya dipakai untuk dikirimkan
ke datawindow parentnya yaitu dlm hal ini dw_entri_h_ujian
Geser kolom nama merapat ke depan..

Terus percantik dg merubah properti bordernya ..

Hasilnya spt ini.

Simpan dg nama dddw_siswa


Selanjutnya buka kembali datawindow dw_entri_h_ujian.
Klik kolom nis dan tarik perlebar spt ini dg mouse :

mztolo 2006 PB #9 sheet/window master detail

Selanjutnya klik tab EDIT di properties datawindow ini.


Setting spt tampak di gambar bawah

Style Type nya : DropDownDW


Always Show Arrow di centang
H ScrollBar di centang
DataWindow isi dg nama dddw_siswa
Display Column atau kolom data yg ingin di tampilkan adalah nama
Data Column atau data yg ingin disimpankan ke datawindow dw_entri_h_ujian di
kolom nis
(dengan demikian sewaktu kita memilih nama siswanya, data nis dari dddw_siswa akan
dikirim ke nis yg ada di dw_entri_h_ujian)

mztolo 2006 PB #9 sheet/window master detail

Tampak hasilnya spt ini :

Rapikan shg menjadi spt ini.(kasih jarak sedikit di bagian bawah detail)

Simpan kembali perubahan ini


Selanjutnya buat sheet/window master detailnya
Mmmmmm.. cara cepatnya adalah buka sheet anda yg sudah jadi w_entri_siswa
Save As sebagai w_entri_ujian
Hapus datawindow yg ada di situ yg merupakan datawindow w_entri_siswa
Selanjutnya ganti dg datawindow dw_entri_h_ujian

Tampak hasilnya spt di gambar atas.


Jangan lupa ganti title sheet nya dg Entri Data Ujian
Simpan modifikasi terserbut dan close.

mztolo 2006 PB #9 sheet/window master detail

Selanjutnya modifikasi menu mn_siswa dan double click di item &Ujian Susulan
serta ketik kodingnya.. spt ini opensheet(w_entri_ujian,w_utama,2,original!)

Simpan perubahan menu mn_siswa dan coba jalankan aplikasi ini..


Klik menu Transaksi => Ujian Susulan sampai tampil sheetnya..

Jika ada datanya klik tombol retrieve.jika belum klik tombol new

mztolo 2006 PB #9 sheet/window master detail

Klik combobox nya dan pilih nama siswanya sesuai data yg telah di entrikan di modul
entri data siswa.
Sehingga hasilnya spt ini..

Ok sementara header/masternya dulu detail akan di lanjutkan di bagian berikutnya


Pastikan latihan di atas sukses terlebih dahulushg kita bisa melanjutkan ke bagian
detailnya.. J
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #9 sheet/window master detail

POWERBUILDER #9 bag. 2
Selanjutnya mari kita buat detail nya berdasar table tbldujian di bawah :

Ok. mari kita review prinsip master detail terlebih dahulu J


Data master anda secara database tersimpan spt ini.
NIS dan PENGAWAS
NIS berisi data spt 001, ABC007 dsb-nya sbg nomor induk siswanya
PENGAWAS berisi data spt AMIR, KROMO ATEMO yaitu nama2 pengawas
Data detail anda secara database tersimpan spt ini.
KODE, NIS, PELAJARAN dan NILAI
KODE merupakan data auto_increment yg akan diisi otomatis oleh databasenya dan
berisi angka 1, 2, 3 dst nya. Data ini jg berfungsi sbg key master/update untuk data
detailnya.
NIS berisi data 001 dst nya. Kenapa data ini diperlukan di detail ? Yapdiperlukan
krn data ini berfungsi dan bersifat sbg data untuk merelasikan data detail ke masternya.
Jadi semua data detail dg NIS=001 merupakan data detail dari master dg NIS=001
juga, hal inilah yg di sebut dg konsep one to many.
PELAJARAN dan NILAI akan berisi nama pelajaran dg nilai nya.
Lalu bagaimana dg cara menampilkan data detailnya ?
PELAJARAN dan NILAI adalah data yg perlu disajikan di detailnya.
Untuk KODE dan NIS itu tidak perlu ditampilkan, krn kedua data ini hanya di pakai dlm
kaitannya dg procedure update dan relasi dg master.
User/pemakai aplikasi anda tidak perlu tahu KODE dan NIS yg di replacekannya.
Ok selanjutnya buat datawindow type tabular spt ini :

mztolo 2006 PB #9b sheet/window master detail

Hapus header dan kolom KODE serta NIS rapikan shg menjadi spt ini :

Klik menu Rows dan klik Update Properties spt ini.

Tampak modul specify Update Properties nya :

Untuk table yg memakai key auto_increment atau key yg tercreate otomatis maka
Identity Column: nya harus di isi sesuai kolom-nya.

mztolo 2006 PB #9b sheet/window master detail

Karena table tbldujian ini memakai KODE sbg key auto_increment-nya maka isi
Identity Column nya spt ini :

Selanjutnya klik tombol OKdan kembali ke paint datawindow-nya.

Selanjutnya buat Retrieval Arguments dg klik tombol

mztolo 2006 PB #9b sheet/window master detail

shg tampli spt ini :

Klik menu Design dan klik Retrieval Arguments spt ini :

Sampai tampil modul spt ini :

Ketik spt di bawah ini dan klik OK

mztolo 2006 PB #9b sheet/window master detail

Selanjutnya klik tab WHERE dan ketik command spt ini :

Selanjutnya close dan save dg nama dw_entri_d_ujian..


Datawindow dg retrieval argument jika anda retrieve akan menampilkan modul spt ini :

Modul ini meminta anda untuk memasukkan value sesuai type data argument-nya.
Lalu apakah waktu aplikasi jalan akan selalu tampil modul di atas ? Mengganggu dong ?
Modul di atas tidak akan tampil krn sewaktu kita retrieve datawindow tsb kita sertakan
langsung value argumentnya spt ini : dw_2.retrieve(001)
Note :
Kenapa retrieval argument harus di buat ?
Yapsekenarionya spt ini.data master detail terdiri atas 2 datawindow.
Pertama atau yg di atas (spt yg telah anda buat berdasar artikel #9a) adalah data master.
Yg kedua atau yg bawah adalah data detailnya.
Asumsinya beginisetiap data master digeser ke data/row untuk siswa yg berbeda maka
data detail akan mengikuti/berisi dg data detail yg sesuai dg masternya.
Nah untuk memfilter data detail ini agar sesuai dg data masternya di perlukanlah
retrieval argument di datawindow detailnya.
Jadi retrieval arguments sama dg filter ? Tidak juga krn PB mengenal filter sendiri.

mztolo 2006 PB #9b sheet/window master detail

Ok..mari kita lanjutkan.buka sheet master detail (w_entri_ujian) yg telah anda buat
sebelumnya :

Drag n drop datawindow dw_entri_d_ujian dan tambahkan 2 tombol spt ini :

Jika anda perhatikan di sheet anda sekarang sudah ada 2 datawindow untuk master dg
nama dw_1 dan detail dg nama dw_2.
Selanjutnya buka event OPEN dan modifikasi kodingnya spt ini :
dw_1.setTransObject(SQLCA)
dw_2.setTransObject(SQLCA)
dw_1.retrieve()
dw_2.setrowfocusindicator(hand!)
Note :
Semua datawindow harus sudah di set transaksi objectnya dg SQLCA
Setrowfocusindicator(hand!) untuk menampilkan penunjuk row berbentuk tangan/jari
telunjukmmm nanti anda bisa melihatnya sendiri J

mztolo 2006 PB #9b sheet/window master detail

Event ue_update anda ganti spt ini :


if dw_1.getrow()=0 or dw_1.rowcount()=0 then return
dw_1.accepttext()
dw_2.accepttext()
if dw_1.update()=1 and dw_2.update()=1 then
if sqlca.sqlnrows<0 then
rollback ;
messagebox("Info..","Penyimpanan Gagal !",information!,ok!)
return
end if
commit;
messagebox('Info..','Penyimpanan Sukses !',information!,ok!)
else
rollback;
messagebox('Info..','Penyimpanan Gagal !',information!,ok!)
return
end if
Note :
Getrow dan rowcount dipakai untuk memastikan bahwa data window tdk dlm kondisi
kosong.
Acceptext() berfungsi untuk menyimpan isi data baris aktif pada kontrol datawindow ke
dlm buffer kontrol datawindow. Jika fungsi ini tdk di jalankan maka baris aktif adalah
baris aktif sebelumnya.

Doubleclick di dw_1 dan isi event rowfocuschanged dg ini :


if dw_1.rowcount()=0 or dw_1.getrow()=0 then return
string ls_nis
if dw_1.rowcount() > 0 then
ls_nis=dw_1.getitemstring(dw_1.getrow(),"nis")
end if
dw_2.retrieve(ls_nis)
Note :
Rowfocuschanged diperlukan jika user mengeser row master/header maka detail akan di
retrieve sesuai key relasinya. Perhatikan koding dw_2.retrieve(ls_nis)
Ls_nis sendiri diambil dari data nis yg ada di dw_1.
Perhatikan koding ini ls_nis=dw_1.getitemstring(dw_1.getrow(),"nis")
Inilah kenapa di awal tadi kita harus membuat retrieval arguments di datawindow detail.
Semoga anda semakin paham dan jelas J

mztolo 2006 PB #9b sheet/window master detail

Isi click event tombol Add detail dg ini :


if dw_1.rowcount()=0 or dw_1.getrow()=0 then return
dw_1.accepttext()
string ls_nis
ls_nis=dw_1.getitemstring(dw_1.getrow(),'nis')
dw_2.scrolltorow(dw_2.insertrow(0))
dw_2.setcolumn(3)
dw_2.setfocus()
dw_2.setitem(dw_2.getrow(),'nis',ls_nis)
Note :
Agar setiap data detail yg ditambahkan terelasi dg data masternya maka di datadetail
harus di set/simpan data key relasi yaitu berupa data nis
Perhatikan koding ini dw_2.setitem(dw_2.getrow(),'nis',ls_nis)
dw_2.setcolumn(3) kenapa 3 ? Betul krn kolom pelajaran adalah kolom urutan ke 3 yg
ada di tbldujian
Isi click event tombol Del detail dg ini :
if dw_1.rowcount()=0 or dw_1.getrow()=0 then return
if messagebox("Hapus Data","Hapus ?",Exclamation!,YesNo!,2)=1 then
dw_2.deleterow(0)
parent.triggerevent("ue_update")
end if
Ok..selanjutnya coba jalankan aplikasi anda .dan buka sheet master detailnya spt ini :

mztolo 2006 PB #9b sheet/window master detail

Klik tombol Add detail dan anda isi spt ini :

** mmmm ada gambar telunjuk ! itulah setrowfocusindicator(hand!) J


Ok form master detail sudah selesai selamat mencoba J
Dan nantikan sample berikutnya..
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #9b sheet/window master detail

POWERBUILDER #9 bag. 3
Masih seputar sheet master detail, coba anda buka event ue_delete modifikasi koding
deletenya dg koding berikut agar detailnya jg ikut terhapus :
if dw_1.rowcount()=0 or dw_1.getrow()=0 then return
if messagebox("Hapus Data","Anda Yakin ?",Exclamation!,YesNo!,2)=2 then return
dw_1.accepttext()
string ls_nis
ls_nis=dw_1.getitemstring(dw_1.getrow(),'nis')
dw_1.deleterow(0)
dw_1.setfocus()
if dw_1.update()=1 then
commit;
delete from tbldujian where nis=:ls_nis ;
messagebox('Info..','Penghapusan Sukses !',information!,ok!)
else
rollback;
messagebox('Info..','Penghapusan Gagal !',information!,ok!)
return
end if
Note :
Perhatikan cara penulisan SQL Command untuk delete nya.
delete from tbldujian where nis=:ls_nis ;
(ditulis dg memakai : titik dua setelah tanda sama dengan dan setiap perintah SQL ini
agar di jalankan selalu diakhiri dg tanda ; titik koma)
Ok sekarang coba anda tambahkan di detailnya data yg banyak.spt ini :

Jml row di detail sebenarnya ada 6, yg tampak 4 row.


Agar memudahkan user dlm melihat data yg tersembunyi/dibagian bawah anda bisa
menambahkan vertical scrollbar di datawindownya. Bagaimana caranya ?

mztolo 2006 PB #9c sheet/window master detail

Klik datawindow detailnya di painter/editor dan centang VscrollBar spt di bawah :

Simpan kembali perubahan dan coba jalankan J

Note :
Anda jg bisa tambahkan horizontal scrollbar jika datawindow anda lebar.
Hal ini jg bisa anda terapkan untuk dropdown datawindow anda.

mztolo 2006 PB #9c sheet/window master detail

Untuk dropdown datawindow caranya klik dddw-nya dan centang VscrollBar nya.

OK mari kita lanjutkan..


Validasi proses penghapusan pada dasarnya bisa anda kembangkan lagi misal jika
master akan dihapus akan keluar pesan kalo detail sudah berisi alias transaksi sudah
terjadi. Logikanya bagaimana ? Yaitu dg mengecek keberadaan data detail untuk kode
master yg akan di hapus.
Selain itu anda bisa dg memberikan relasi di databasenya (mis: MsSQL) yg tentunya
akan memberikan pesan error atau informasi tentang sudah adanya relasi/transaksi jika
ada proses delete/penghapusan data.
Berikutnya saya akan memberikan sample yg menarik, coba buka sheet ujian spt ini :

Dalam kondisi data sudah terisi spt tampak di sheet atas.seharusnya combo untuk nama
siswa terproteksi atau disable artinya tdk memberikan kesempatan user untuk
merubahnya krn ini menyangkut primary key-nya.
Sekarang coba kita bikin suatu kesalahan editing misalnya dg mengganti nama siswa di
atas dg nama lain yg sebenarnya data itu jg sudah pernah di entrikan.
mztolo 2006 PB #9c sheet/window master detail

Dengan kata lain kita coba bikin error krn primary key yg sudah kita masukkan kita entri
kembali spt ini :

Coba nama Rudy anda ganti menjadi Tini dan save perubahan ituapa yg terjadi ?

Tampak modul error dari odbc mysql-nya yg menyatakan adanya duplikasi entri J
Lalu coba anda lihat lagi apakah data dg nama siswa Rudy tersebut masih ada ?
Ternyata sudah tidak ada !! Kenapa ?
Close aplikasi anda dan coba modifikasi datawindow dw_entri_h_ujian
Setelah itu coba lihat Update Properties nya tampak spt ini :

Perhatikan di bagian Key Modification nya.. J

mztolo 2006 PB #9c sheet/window master detail

Tampak rule proses updatenya adalah Delete dulu baru Insert sehingga jika terjadi
kasus spt tadi maka data tblhujian sbg master akan di hapus terlebih dahulu baru
dilakukan insert yg ternyata gagal krn primary key terjadi duplikat.
Sedangkan proses hapus sudah terjadi..itulah yg menyebabkan data siswa Rudy terhapus.
Lalu bagaimana pemecahannya ? Ada 2 cara. J
Cara PERTAMA :
Dengan menganti rule update di atas dg memilih Use Update di key modificationnya.

Klik OK dan save kembali datawindow anda dan coba kembali kasus spt di atas tadi.
Krn data Rudy sudah terhapus coba input ulang lagi untuk latihan kali ini.
Detailnya tdk usah di entri kembali, krn untuk kasus di atas yg terhapus hanya data di
masternya alias tblhujian nya.
Sekarang coba anda lakukan langkah penggantian nama siswa yg notabene sudah pernah
di inputkan spt di hal. 3 dan save.
Apa yg terjadi ? Tampak pesan errornya tetapi data siswa Rudy tdk terhapus !!
..yap data masih spt semula J
Benarkah ? Coba klik tombol Retrieve
Semoga anda bisa mengambil kesimpulan dari contoh kasus di atas.amien.
Cara KEDUA :
Modifikasi datawindow master anda serta klik kolom nis

Setelah itu di propertiesnya klik icon warna merah di kanan tulisan Protect spt tampak
pada gambar di atas.

mztolo 2006 PB #9c sheet/window master detail

Tampak modul untuk mengetik koding

Ketik koding berikut if (isrownew(),0,1) dan klik tombol OK.


Tampak ada perubahan di propertiesnya spt ini :

Note :
Properties Protect berfungsi untuk melakukan proteksi terhadap kolom yg ada dengan
nilai true/1 atau false/0.
Untuk kasus di atas jika row/kolom bukan kolom baru maka kolom tersebut akan di
protect/disabled. Dengan kata lain kolom hanya enabled jika pada saat row baru atau
pada saat penambahan data baru.
Dan tentu saja hal ini bisa anda terapkan untuk datawindow yg lain juga.
mztolo 2006 PB #9c sheet/window master detail

Save datawindow krn perubahan tersebut..dan jalankan sheet ujian spt ini :

Sekarang jika anda klik combo nama siswa tersebut tidak akan bisa dlm kondisi data
sudah ada spt tampak di gambar atas J
Lain halnya jika anda klik tombol tambah/new/add spt ini :

Okdengan demikian sampai disini dulu penambahan dari saya J


Nantikan sample2 dan kasus2 yg lain dan berbeda selanjutnya
Tetaplah kreatif dg selalu memaksimalkan logika anda.dan jangan lupa untuk selalu
berdoa dan bersyukur kepada-Nya.
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #9c sheet/window master detail

POWERBUILDER #10
Coba jalankan aplikasi anda dan buka sheet entri data siswa nya spt ini :

Tampak disana nis 007 adalah milik Tini Pratiwi


Coba anda klik tombol/new

.dan isi data spt ini (dg nis=007 juga) :

Terus coba lakukan save/penyimpanan


data..apa yg terjadi ?!
Tampak informasi error updatenya yg mengatakan adanya duplikasi entry..

Modul datawindow error ini masih standar dengan informasi sesuai informasi error yg
dikeluarkan oleh odbc mysql nya.

mztolo 2006 PB #10 dberror handle

Bagaimana jika kita ingin membuat pesan error yg kita definisikan sendiri ?
Caranya adalah dengan membuat function untuk itu . J
(jika lupa caranya baca2 lagi artikel sebelum2 nya ya )
Klik tombol new dan pilih function di tab PB Object sampai tampil modul untuk
membuat fungsi. Isi nama fungsi dan arguments yg dipakai spt ini :

Anda isi dg koding spt ini :


/* mztolo 2006
anda bisa melihat message error mysql yg lain di help mysql nya
pesan error ini akan berbeda antara 1 database dg database yg lainnya
*/
long kodeerror
string pesan,judul
kodeerror
= sqldbcode
pesan
=sqlerrtext
judul
=title
string ls_pesan,ls_kodeerror
ls_kodeerror="("+string(kodeerror)+")"
if kodeerror=1062 then
ls_pesan=ls_kodeerror+' Data pernah di entri !'
messagebox(judul,ls_pesan,Information!,Ok!,1)
elseif kodeerror=1048 then
ls_pesan=ls_kodeerror+ ' Kode kosong !'
messagebox(judul,ls_pesan,Information!,Ok!,1)
elseif kodeerror=1027 then
ls_pesan=ls_kodeerror+' Data sedang di edit user lain !'
messagebox(judul,ls_pesan,Information!,Ok!,1)
else
ls_pesan=ls_kodeerror+pesan
messagebox(judul,ls_pesan,Information!,Ok!,1)
end if
return 1

mztolo 2006 PB #10 dberror handle

Selanjutnya anda save dg nama f_dberror


Lalu modifikasi sheet entri data siswa anda w_entri_siswa spt ini :

Doubleclick di kontrol datawindow-nya..

Kemudian di method/event dberror anda ketik koding spt ini :


return f_dberror (sqldbcode,sqlerrtext,'Master Siswa')
Selanjutnya save dan coba jalankan serta buka sheet entri data siswaanda coba kembali
entri dg nis yg sama spt di atas (hal. 1)

Tampak pesan error yg tampil adalah pesan error yg telah anda definisikan di fungsi
f_dberror tadi.

mztolo 2006 PB #10 dberror handle

Sekarang anda coba add data baru laginis kosongin dan isi data yg lain spt ini :

Terus anda coba save.apa yg tampak ?!

Pesan error atau informasi kalo kode/primary key kosong !!


Sekarang coba add data baru lagi dan biarkan semua kosong spt ini :

Terus coba save dan apa yg terjadi ?!

Tampak informasi proses penyimpanan sukses !! Nah lho ?

mztolo 2006 PB #10 dberror handle

Tapi jika anda lihat di database mysql anda jelas tidak ada penambahan data kosong.
Artinya apa ? Capture error 1048 untuk primary key tidak terjadi dan jika di cek di
message errornya juga tidak keluar pesan apa-apa.
Ini sulitnya J jika masih keluar pesan error nomor 10xx maka anda bisa menambahkan
message errornya di fungsi f_dberror
Nah lalu bagaimana jika pesan yg tampil akan mengatakan kalo data harus di isi
semuanya atau tidak boleh kosong ?
Anda ubah koding savenya ue_update menjadi spt ini :
string ls_nis
dw_1.accepttext()
if dw_1.update()=1 then
ls_nis=dw_1.getitemstring(dw_1.getrow(),'nis')
if isnull(ls_nis) then
messagebox('Info..','Data tdk boleh kosong !',information!,ok!)
return
else
commit;
messagebox('Info..','Penyimpanan Sukses !',information!,ok!)
end if
else
rollback;
messagebox('Info..','Penyimpanan Gagal !',information!,ok!)
return
end if
Sample di atas hanya mengecek 1 kolom null atau tidakuntuk kolom2 yg lain silahkan
di coba sendiri.. J
Sekarang jika data kosong anda save akan keluar pesan spt ini :

Terapkan juga fungsi f_dberror ini untuk kontrol datawindow yg lain..


Ok cukup ini dulu..silahkan anda kembangkan menjadi lebih bagus lagi J
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #10 dberror handle

POWERBUILDER #11
Anda pasti ingat waktu pertama kali membuat sample PB ini.
Anda membuat suatu aplikasi yg mempunyai sheet yg bersifat MDI (multiple document
interface).
Lalu apakah sample yg sudah dikerjakan masih bersifat SDI ? Tidak ! Hanya memang
menu sheet yg dibuat tidak mendukung MDI (atau bahasa lainnnya kurang
memaksimalkan kemampuan MDI nya)
Berikut cara memaksimalkannya J
Pertama ubah menu utama anda mn_siswa menjadi spt ini :

Perhatikan ada penambahan item menu Edit , Window dan Help yg penting adalah
Edit dan Window dlm kaitannya dg konsep MDI.
Untuk Edit tdk perlu ada sub-item menu-nya.
Setting visible dan enablenya jgn dicentang alias tidak mau di tampilkan di menu utama.

Begitu juga untuk menu Window jgn dicentang juga.


Kemudian untuk koding click event dari masing2 sub-menu item Window adalah sbb :
Clicked event Tile Vertical : w_utama.ArrangeSheets ( Tile! )
Clicked event Tile Horizontal : w_utama.ArrangeSheets ( TileHorizontal! )
Clicked event Layer : w_utama.ArrangeSheets ( Layer! )
Clicked event Cascade : w_utama.ArrangeSheets ( Cascade! )
mztolo 2006 PB #11 MDI

Untuk Help dan About biarkan aja dulu J


Selanjutnya kita akan membuat menu yg merupakan turunan dari mn_siswa sbg
menu sheet yg baru.
Caranya klik menu File dan klik Inherit

Selanjutnya tampil spt ini :

Pastikan Objects of Type: nya Menus


Terus di kolom atasnya pilih menu mn_siswa dan klik tombol OK

mztolo 2006 PB #11 MDI

Selanjutnya tampak menu baru yg merupakan inherit dari mn_siswa spt ini :

Kemudian tambahkan sub-menu item untuk Edit spt ini :

Dengan koding clicked event yg sama dg menu sheet yg pernah anda buat.
Jangan lupa di propertiesnya untuk menu Window dan Edit dicentang visible dan
enabled nya.

Selanjutnya save dg nama mn_sheet2

mztolo 2006 PB #11 MDI

Buka sheet w_entri_siswa dan ubah menunya menjadi mn_sheet2

Lakukan juga untuk sheet w_entri_ujian dan jangan lupa di save perubahan itu.
Sekarang coba jalankan aplikasi anda .

Perhatikan anda bisa membuka sheet lebih dari satu secara bersamaan ( MDI J )

mztolo 2006 PB #11 MDI

Pada saat anda aktif atau click sheet entri data siswa maka fungsi toolbar akan berlaku
untuk sheet itu, begitu juga sebaliknya jika anda click sheet entri data ujian.

Anda lihat daftar sheet yg aktif ada di menu Transaksi bagaimana jika kita ingin
letakkan di menu Window ?
Caranya mudah ubah saja clicked event di menu yg menjalankan masing2 sheet dari
koding spt ini :
opensheet(w_entri_siswa,w_utama,2,original!)
menjadi spt ini..
opensheet(w_entri_siswa,w_utama,5,original!)
Perhatikan angka 2 dan angka 5 di atas .
Menu Transaksi adalah urutan menu ke 2 pada mn_siswa
Sedangkan menu Window ada di urutan ke 5
Mudah bukan ?!
Save perubahan dan jalankan aplikasinyaserta buka sheet serta buktikan J

mztolo 2006 PB #11 MDI

Anda juga bisa coba susunan window tile/vertical spt ini :

Atau cascade spt ini :

mztolo 2006 PB #11 MDI

Oksampai disini dulu dan nantikan sample berikutnya.


Tambahan..
Coba cek di target untuk event open kodingnya spt ini :
// mztolo 260106
// Profile sekolah
SQLCA.DBMS = "ODBC"
SQLCA.Lock = "RU"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DRIVER={MySQL ODBC 3.51 Driver};DESC=;
DATABASE=sekolah;SERVER=guzrud;UID=root;PASSWORD=;
PORT=3306;OPTION=3;STMT=;'"
connect ;
if SQLCA.SQLDBCode<>0 then
messagebox('Koneksi Gagal',SQLCA.SQLErrText,stopsign!)
halt close
end if
open(w_utama)
Untuk event close isi koding spt ini :
disconnect ;
Note :
Mungkin anda pernah ketemu penulisan spt ini connect using sqlca ;
Kenapa di atas hanya di tulis connect ; saja tanpa statement using sqlca ?
Pada dasarnya default transaksi koneksi adalah SQLCA maka penulisan connect ; saja
sudah cukup, pemakaian using sqlca jika adanya lebih dari 1 transaksi koneksi.
Sehingga kita harus menjelaskan secara detail ke sistem koneksi yg mana yg dipakai.
Semoga ini bisa menambah pemahaman anda..amien
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #11 MDI

POWERBUILDER #12
Berikut ini sample mencetak data (datawindow) siswa. J
Pertama anda buat datawindow sbg layout cetakkannya..
Mmmmm jadi cetak juga pake datawindow ? Betul sekali.
Baik interface entri ataupun layout cetakan datasemua memakai datawindow.
Jadi buat data window spt ini :

Selanjutnya anda tarik band header ke bawah untuk mengetik judul laporan tersebut
shg menjadi spt ini :

Dan blok serta geser ke bawah judul kolom yg tampak masih di atas.mjd spt ini :

Selanjutnya klik object text spt ini .

mztolo 2006 PB #12 mencetak datawindow

Selanjutnya klik di area kosong di atas judul2 kolom spt ini :

Ganti value text dengan SMA 1 SUNTER dan perhatikan perubahan di detailnya

Buat lagi text judul yg lain dan rapikan dg menggeser-geser dg mouse sehingga hasilnya
akan menjadi spt ini :

mztolo 2006 PB #12 mencetak datawindow

Kemudian blok/soroti semua judul kolom dan ubah properti bordernya mjd spt ini :

Sekarang jika anda klik kanan dan retrieve di previewnya akan tampak spt ini :

Anda perhatikan nilai tabungan masih polos belum ada pemisah di nilai ribuannya
Sekarang mari kita kasih format untuk memberikan tanda pemisah ribuan.
Pertama klik kolom tabungan di detail dan ubah propertie nya spt ini :

Perhatikan di tab Format anda ketik saja spt ini #,###.00

mztolo 2006 PB #12 mencetak datawindow

Selanjutnya membuat total dari semua tabungan siswa....caranya klik kolom tabungan

Dan klik object sum spt ini :

Simsalabim..summary tercipta spt ini :

Jangan lupa format display-nya di setting juga agar pemisah ribuan-nya ada

mztolo 2006 PB #12 mencetak datawindow

Selanjutnya rapikan tampilan layout cetakan dan atur size kertasnya spt ini :

Untuk menambahkan tulisan halaman sekian dari total halaman caranya


Klik object compute page spt ini :

Selanjutnya geser ke bawah band footer spt ini :


Dan klik di area kosong di bawah total tabungan spt ini.

Tampak sudah tercipta. J

mztolo 2006 PB #12 mencetak datawindow

Selanjutnya save datawindow tersebut dg nama dw_lap_tabungan


Kemudian anda buat window untuk preview form cetak tersebut spt ini :

Dengan title window = Form cetak data tabungan....


Tambahkan 2 tombol :
Tombol Print dg click event dw_1.print()
Tombol Close dg click event Close(parent)
Adapun properti datawindow-nya spt ini :

mztolo 2006 PB #12 mencetak datawindow

Isi koding Open event window tersebut spt ini :


dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.object.datawindow.print.preview='yes'
Note :
Tampak di koding itu spt biasa akan di set transaksi object nya.
Selanjutnya di retrieve data-nya dan tampilkan data secara print preview
Okkemudian save window tersebut dg nama w_lap_tab
Di menu untuk menjalankan window tersebut isi dengan koding spt ini :

opensheet(w_lap_tab,w_utama,5,original!)

mztolo 2006 PB #12 mencetak datawindow

Jalankan aplikasi dan buka window/sheet laporang tersebut

Anda bisa desain window dg lebih lebar agar tampilan bisa penuh..silahkan
Dan jika anda klik tombol Print maka data akan tercetak.. J
Bagiamana jika ingin mencetak dari kode sekian s/d kode sekian ?
Bagaimana jika ingin merubah ukuran kertas dan jenis printer ?
Bagaimana jika ingin outputnya ke FILE ?
Bagaimana jika ingin mencetak dari halaman sekian s/d halaman sekian ?
Bagaimana jika ingin mencetak 2 copies ?
Bagaimana jika ingin mencetak dg besar 1 kali dari besar normal ?
Mmmmm kelak semua akan saya coba berikan samplenya J
Ok cukup dulu ya
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #12 mencetak datawindow

POWERBUILDER #12 (b)


Ok mari kita melangkah ke depan lagi J
Coba modifikasi window preview cetak anda menjadi spt ini.

Note :
Ada tambahan 5 radio button
1 checkbox
1 tombol preview (jadi sekenarionya nanti kita tdk mau data langsung tampil spt sample
sebelumnya, tetapi user hrs klik tombol preview dahulu)
Terus ubah lebar window menjadi = 4078 dan tinggi = 2748
Ubah juga lebar datawindow menjadi = 3941 dan tinggi = 1976
Judul dan icon window/sheet silahkan juga kalo mau di ubah J
Kemudian hapus koding yg ada di event Open agar datawindow tdk langsung
retrieve atau di tampilkan.
Coba klik datawindow dw_1 dan hapus dataobject dw_lap_tabungan spt ini :

mztolo 2006 PB #12(b) properiti lain di cetak datawindow

Menjadi spt ini..maksudnya apa agar data siswa tdk langsung di tampilkan/preview :

Dan isi koding di click event tombol Preview spt ini :


dw_1.dataobject='dw_lap_tabungan'
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.object.datawindow.print.preview='yes'
Note :
Perhatikan dw_1 adalah nama kontrol datawindow yg ada di window/sheet
Isi dataobject-nya pada saat klik tombol ini dg perintah dw_1.dataobject= .
Selanjutnya spt biasa set transaksi objectnya, retrieve dan preview-kan.
Isi koding click event radio button 50% dg ini :
if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Object.DataWindow.print.preview.zoom =50
dw_1.Modify("datawindow.zoom =50 ")
end if
Isi koding click event radio button 85% dg ini :
if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Object.DataWindow.print.preview.zoom =85
dw_1.Modify("datawindow.zoom =85 ")
end if
dst-nya
Note :
Perintah2 yg berhubungan dg preview dapat diterapkan/dijalankan jika datawindow
ada di posisi preview juga.
Untuk mengetahui atau mendapatkan indormasi apakah datawindow dlm kondisi
preview dipakai perintah describe
Jadi anda tambah perbendaharaan 1 perintah lagi yaitu perintah describe lebih detailnya
baca help PB J
Selanjutnya preview datawindownya di set zoom dahulu agar tampilan previewnya ikut
berubah sesuai besaran angka prosentasenya (100% = ukuran normal)
Selanjutnya agar waktu tercetak datawindow besarnya sesuai yg kita inginkan maka
lakukan modifikasi di zoom datawindow-nya.
Nanti anda bisa buktikan waktu anda cetak di printer.
Simsalabimtercetak sesuai besar zoom nya SECARA FISIK !! J

mztolo 2006 PB #12(b) properiti lain di cetak datawindow

Isi koding click event checkbox Rulers dg ini :


if dw_1.describe('datawindow.print.preview')='yes' then
if this.checked then
dw_1.object.datawindow.print.preview.rulers='yes'
else
dw_1.object.datawindow.print.preview.rulers='no'
end if
end if
Perintah ini untuk menampilkan rulers di pinggiran tampilan preview anda.
Spt tampak di bawah ini :

Berikut jika tdk pake rulers :

Coba juga tampilan zoom 85% nya spt ini :

Note :
Garis biru yg tampak di gambar atas adalah garis pembatas untuk area cetak.
Anda bisa menggeser ke arah dalam yg akan menandakan margin kiri dan kanan dari
layout cetakan anda.

mztolo 2006 PB #12(b) properiti lain di cetak datawindow

Yg ini untuk zoom 150% :

Selanjutnya mari kita buat range untuk mencetak kode nis sekian s/d sekian.
Tambahkan 2 buah SingleLineEdit kontrol spt ini :

Tujuannya adalah untuk entri kode nis


Anda juga bisa mencoba dg membuat datawindow untuk hal tsb di atas, tentunya dg
membuat dropdown datawindow-nya.
Atau dg memakai kontrol spt combobox..silahkan di kembangkan J
Selanjutnya anda ubah koding tombol Preview dg spt ini :
string kode1,kode2,dwfilter
kode1 =righttrim(sle_1.text)
kode2 =righttrim(sle_2.text)
dw_1.dataobject='dw_lap_tabungan'
dw_1.settransobject(sqlca)
if len(kode1)>0 and len(kode2)>0 then
dwfilter ="nis >='"+kode1+"' and nis <='"+kode2+"'"
elseif len(kode1) > 0 and len(kode2)=0 then
dwfilter ="nis ='"+kode1+"'"
elseif len(kode1) = 0 and len(kode2) >0 then
dwfilter ="nis ='"+kode2+"'"
else
dwfilter=" "
end if
dw_1.setfilter(dwfilter)
dw_1.filter()
dw_1.retrieve()
dw_1.object.datawindow.print.preview='yes'
mztolo 2006 PB #12(b) properiti lain di cetak datawindow

Note :
Ntuk kasus ini saya berikan sample dg perintah FILTER
Anda bisa lihat cara memasukkan data nis ke variable yg ada (kode1 dan kode2),
begitu jg cara menyiapkan variablenya.
Selain itu perhatikan validasi untuk pengecekan apakah kode1 dan kode2 ada isi-nya.
Begitu juga dg cara penulisannya untuk variable setfilter yaitu dwfilter
Setelah itu agar filter jalan atau dilakukan maka lakukan setfilter sbg kondisinya dan
lakukan filter untuk datawindow tersebutdan retrieve tentunya.
Jika setfilter diisi variable yg kosong ( dwfilter= ) maka filter tdk akan berlaku atau
berarti data akan ditampilkan semua.
Simpan perubahan dan coba tampilkanspt ini :

Mmmm..ok sampai ini dulu..


Sedikit2 ajabiar anda bisa meresapi koding, kegunaan dan artinya J
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #12(b) properiti lain di cetak datawindow

POWERBUILDER #12 (c)


Ok mari kita melangkah ke depan lagi J
Coba tambahkan 3 radio button spt ini :

Jangan lupa anda tempatkan didalam GroupBox


Dan berinama groupbox itu Paper Orientation spt tampak di gambar atas.
Paper Orientation berguna untuk mengatur tampilan cetak apakah ingin Portrait
potret/berdiri atau Landscape membentang/melintang.
Paper Orientation ini mengacu pada properti datawindow di tab Print Specifications :

Adapun isi koding untuk event click radiobutton Default adalah spt ini :
if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Object.DataWindow.Print.orientation = 0
dw_1.Modify(' datawindow.paper.orientation = 0')
end if
Perhatikan perintah ini jg berlaku jika kondisi datawindow sedang preview

mztolo 2006 PB #12(c) properiti lain di cetak datawindow

Isi click event radiobutton Portrait sbb :


if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Object.DataWindow.Print.orientation = 2
dw_1.Modify(' datawindow.paper.orientation = 2')
end if
Isi click event radiobutton Landscape sbb :
if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Object.DataWindow.Print.orientation = 1
dw_1.Modify(' datawindow.paper.orientation = 1')
end if
Coba jalankan dan coba tampilkan secara Landscape spt ini :

Dan jika anda cetak maka akan tercetak secara Landscape juga.
Note :
Jika anda hanya ingin menampilkan secara preview saja maka cukup dg perintah ini :
dw_1.Object.DataWindow.Print.orientation = 1
Tetapi jika anda ingin perubahan di preview itu juga agar sama hasilnya di cetakan
berupa landscape maka di tambahkan perintah ini :
dw_1.Modify(' datawindow.paper.orientation = 1')

mztolo 2006 PB #12(c) properiti lain di cetak datawindow

Selanjutnya tambahkan spt ini 3 radiobutton, 1 SingleLineEdit dan 1 EditMask untuk


Copies spt ini :

Atur properties untuk EditMask Copies spt ini :

Isi koding click event untuk radiobutton All spt ini :


if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Modify(' datawindow.print.page.range =" "')
end if
sle_3.enabled=false
Note :
Perhatikan masih sama konsepnya yaitu dg memberikan modify kepada datawindow.
Modify ini bisa sekaligus banyak, atau dg kata lain datawindow bisa di modifikasi dg
perintah2 secara bersamaan.
Sle_3.enabled=false artinya agar SingleLineEdit yg di kanan tulisan Pages dibuat
disable agar tdk bisa di entri. Karena memang itu tempat kita mengisi nomor halaman yg
akan di cetak, dan jika kita pilih all atau current maka disabled.
mztolo 2006 PB #12(c) properiti lain di cetak datawindow

Isi koding click event untuk radiobutton Current page spt ini :
if dw_1.describe('datawindow.print.preview')='yes' then
long row
string tmp
row = dw_1.getrow()
tmp = dw_1.describe("evaluate('page()',"+string(row)+")")
dw_1.Modify(" datawindow.print.page.range ='"+tmp+"'")
end if
sle_3.enabled=false
Note :
Pertama kita akan mengetahui default row dari datawindow preview aktif ini ada
dihalaman berapa (tentunya sesuai dg ukuran kertas yg telah di setting).
Selanjutnya sama.modify juga.
Isi koding click event untuk radiobutton Pages spt ini :
if dw_1.describe('datawindow.print.preview')='yes' then
string tmp
tmp = sle_3.text
dw_1.Modify(" datawindow.print.page.range ='"+tmp+"'")
end if
sle_3.enabled=true
Note :
Perhatikan datawindow akan dicetak sesuai data nomor halaman yg di entrikan di
SingleLineEdit (sle_3.text)
Contoh pengisiannya :
5 artinya halaman 5 saja
1-5 artinya halaman 1 s/d 5
1,4 artinya halaman 1 dan 4 saja
1,3,5-12 artinya halaman 1,3 terus 5 s/d 12
Untuk EditMask Copies tdk perlu ada koding ..hanya saja koding di click event tombol
Print anda ubah menjadi spt ini :
if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Modify(" datawindow.print.copies ='"+em_1.text +"'")
dw_1.print()
end if
Note :
Em_1.text adalah nama dari object/control EditMask Copies
Oksekarang anda bisa coba cetak dg mencoba-coba kriteria2 di atas J

mztolo 2006 PB #12(c) properiti lain di cetak datawindow

Kemudian kita coba destination dari cetakan itu sendiri..


Mau ke kertas/printer ? Atau ke file Excel ? Atau ke file Text ?
Coba tambahkan 3 radiobutton Print To : spt ini :

Tidak perlu ada koding hanya anda untuk masing2 radiobutton-nya.


Anda tambahkan/ubah saja koding di tombol Print nya spt ini :
if rb_10.checked=true then
if dw_1.describe('datawindow.print.preview')='yes' then
dw_1.Modify(" datawindow.print.copies ='"+em_1.text +"'")
dw_1.print()
end if
else
string docname, named
int value
if rb_11.checked=true then
value=GetFileSaveName("Save As To File",docname, named, "XLS", "*.XLS,*.XLS")

if value = 1 then
dw_1.saveAs(docname,Excel!,TRUE)
else
return
end if
else
value=GetFileSaveName("Save As To File",docname, named, "TXT", "*.TXT,*.TXT")
if value = 1 then
dw_1.saveAs(docname,Text!,TRUE)
else
return
end if
end if
messagebox("www.mztolo.com","Proses Selesai !!")
end if

mztolo 2006 PB #12(c) properiti lain di cetak datawindow

Note :
Anda perhatikan koding berwarna biru yg merupakan tambahannya.
Rb_10 = radiobutton untuk print to PAPER.
Rb_11 = untuk ke file EXCEL
Rb_12 = untuk ke file TEXT.
Sebenarnya ini tdk murni cetak/print tetapi SaveAs dg type dari file/hasil yg dipilih.
Anda perhatikan bentuk perintah SaveAs dw_1.saveAs(docname,Excel!,TRUE)
TRUE berarti header/nama kolom dari data diikutsertakan.
FALSE header/nama kolom tdk diikutsertakan, jadi hanya data saja.
GetFileSaveName() dipakai untuk menampilkan modul/dialogbox SaveAs :

Jadi user diberikan kesempatan untuk menulis nama file nya serta lokasi tempat file itu
akan di simpan.
Hasilnya spt ini :

Dan ini :

mztolo 2006 PB #12(c) properiti lain di cetak datawindow

Sekarang jika anda tampilkan penuh maka window/sheet cetak anda akan spt ini :

Note :
Untuk kedepannya sebaiknya window preview dibuat 1 khusus dan bisa dipakai untuk
semua preview laporan yg ada di aplikasi.
Setting print spt paper orientation, page range dll. bisa dibuatkan sheet tersendirijadi
tdk menggabung spt itu.
Memang langkah2 yg saya berikan berurutan dan satu demi satu agar rekan2 lebih mudah
memahami dan mengerti J

mztolo 2006 PB #12(c) properiti lain di cetak datawindow

Kedepannya bisa spt contoh berikut ini :

Dan ini :

Oksemoga.sample2 ini menambah pengetahuan anda dan membuat anda bahagia


juga J
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #12(c) properiti lain di cetak datawindow

POWERBUILDER #12 (d)


Ok mari kita melangkah ke depan lagi J
Selanjutnya mari kita mencoba untuk membuat report dg group
Sebagai sample kita pakai data master detail.sehingga nantinya di laporan akan
dibuat daftar ujian group per group untuk masing2 siswa.
Okmari kita mulai.
(langkah ini mungkin bukan langkah yg ideal tetapi saya pakai untuk memudahkan anda
memahaminya J)
Okklik new

dan buat datawindow spt ini :

Klik OK..

Retrieve on Preview jika tdk anda centang maka datawindow akan ter-create tanpa
langsung menampilkan/preview data yg ada.
(seandainya data anda ribuan/milyaran dan harus preview maka akan memakan waktu)
Selanjutnya klik NEXT
Pilih table tbldujian dan pilih kolomnya spt tampak di gambar bawah ini

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Klik OKtampak spt ini :

Klik dan tahan pakai mouse kolom nis dan drag ke tempat sebelah kanan spt ini :

Ini artinya group yg kita pakai adalah berdasar nis


Selanjutnya klik tombol NEXT sampai keluar spt ini :

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Ganti tulisan Tbldujian Report dengan DAFTAR UJIAN SISWA spt ini :

Untuk membuat baris ke dualetakkan pointer di belakang kata SISWA dan tekan
Ctrl+Enter.dan tulis SMA 1 SUNTER spt ini :

Selanjuntya klik tombol NEXT..


Klik NEXT lagi..dan klik FINISH
Tampak hasilnya spt ini :

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Dan jika anda preview akan tampak spt ini :

Anda perhatikan total untuk per group dan untuk summary sudah ada dan data
ditampilkan group berdasar nis.
Selanjutnya jika anda perhatikan data di atas belum informatif.artinya itu nilai ujian
untuk siswa bernama siapa ? dengan pengawas siapa ?
Lalu caranya bagaimana ? Okmari kita tambahkan nama pengawasnya..

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Dari painter datawindow klik icon ini .

sampai tampak spt ini :

Klik kanan di area kosong spt ini :

Dan pilih/klik Select Tables.. sampai keluar modul untuk memilih table yg lain spt ini :

Pilih tblhujian dan klik tombol OPEN

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Sampai tampil spt ini :

Pilih kolom pengawas untuk di tampilkan di datawindow spt ini :

Tampak kolom pengawas di bagian atas sudah ada..


Selanjutnya coba cek setting join diantara kedua table itu..

Double klik tanda = spt tampak di gambar atas.sampai tampil spt ini :

Perhatikan sudah benar J dan klik tombol OK

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Klik icon RETURN untuk kembali ke datawindow painter..

Tampak kolom pengawas sudah ditambahkan

Selanjutnya anda atur dan rapikan spt ini

Hasilnya akan spt ini..

Ok selanjutnya kita tambahkan nama siswa dg mengambil kolom dari table tblsiswa.
Langkahnya sama dg menekan tombol
Dan dari datawindow painter anda bisa klik kanan atau menekan icon spt ini :

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Tampil kolom2 dari table tblsiswa pilih kolom nama dan hasilnya spt ini :

Tampak datawindow di painternya spt ini :

Geser menjadi spt ini :

Sehingga tampak di preview akan menjadi spt ini :

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Atau anda bisa rapikan spt ini juga .

Perhatikan judul kolom di pindah di header per-group dan tanggal dipindah ke footer.
Untuk centering judul anda bisa lakukan spt ini :

Klik judul di atas dan pilih Center di properti alignment-nyashg hasilnya spt ini :

mztolo 2006 PB #12(d) properti lain di cetak datawindow

Anda juga bisa tambahkan computed field

spt ini :

Perhatikan isi Compute Expression nya..dan hasilnya tampak spt ini :

Selanjuntya coba tambahkan line di atas dan bawah dari total per groupnya spt ini :

Atur ketebalan line dg Pen Width yg ada di properties-nya.


Serta tambahkan text spt tampak di atas.. Rata2 per group dan Rata2 dari seluruh
siswa.

mztolo 2006 PB #12(d) properti lain di cetak datawindow

10

Upppsss.ada yg salah.. ?
Yap. itu rata2 tetapi kok rumusnya SUM bagaimana nih ?
Anda tinggal edit di propertisnya menjadi AVG
Untuk rata2 per group spt ini avg(nilai for group 1)
Untuk rata2 semua ubah menjadi spt ini avg(nilai for all)
Jangan lupa format untuk kedua nya pakai ###.00

Previewnya akan spt ini .

Ok..simpan datawindow ini dg nama dw_lap_ujian


Buka window w_lap_tab dan save as menjadi w_lap_ujian

mztolo 2006 PB #12(d) properti lain di cetak datawindow

11

Selanjutnya ubah koding di click event tombol PREVIEW menjadi spt ini :
// mztolo 2006
string kode1,kode2,dwfilter
kode1 =righttrim(sle_1.text)
kode2 =righttrim(sle_2.text)
dw_1.dataobject='dw_lap_ujian'
dw_1.settransobject(sqlca)
if len(kode1)>0 and len(kode2)>0 then
dwfilter ="nis >='"+kode1+"' and nis <='"+kode2+"'"
elseif len(kode1) > 0 and len(kode2)=0 then
dwfilter ="nis ='"+kode1+"'"
elseif len(kode1) = 0 and len(kode2) >0 then
dwfilter ="nis ='"+kode2+"'"
else
dwfilter=" "
end if
dw_1.setfilter(dwfilter)
dw_1.filter()
dw_1.retrieve()
dw_1.object.datawindow.print.preview='yes'
Perhatikan yg dicetak tebal..
Selanjuntya isi koding di click event menu lap per group spt ini :

opensheet(w_lap_ujian,w_utama,5,original!)
mztolo 2006 PB #12(d) properti lain di cetak datawindow

12

Sekarang coba cetak per group dijalankan..

mztolo 2006 PB #12(d) properti lain di cetak datawindow

13

Dan ini contoh output ke excel-nya.

Ok. Ini hanyalah sebuah awal.


Masih banyak sample datawindow yg lainbaik untuk entri ataupun report.
Silahkan terus dicobaterus membacadan terus belajar..
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #12(d) properti lain di cetak datawindow

14

POWERBUILDER #13
Setelah membaca sample 12(e) mungkinkah ada timbul pertanyaan dalam benak anda ?
Apakah setiap proses cetak harus memerlukan masing2 1 window/sheet cetak.
Jadi kalo ada proses cetak 10 maka perlu juga 10 sheet preview ?
Sedangkan jika kita lihat semua koding sama dan hanya 1 perbedaan yaitu tentang
datawindow object-nya saja.
Ok ..benar sekali kenapa kita tidak membuat atau cukup 1 sheet preview saja ?
Artinya sheet preview tersebut harus bisa menerima parameter untuk object datawindow
yg berbeda. Jika PB bisa.tentunyalalu dg perintah apa ?
Untuk membuka sheet biasa anda memakai ini :
opensheet(w_lap_tab,w_utama,5,original!)
Nah untuk opensheet dg parameter dg perintah ini :
OpenSheetWithParm ( sheetrefvar, parameter {, windowtype }, mdiframe{, position {, arrangeopen } } )

Ok sebelum kita melangkah lebih jauh coba buka/modify sheet w_lap_tab dan save as
dengan nama w_preview.
w_preview inilah yg akan kita pakaiwindow preview yg sudah anda buat biarkan
saja sbg dokumentasi anda untuk belajar.
Selanjutnya di click event masing2 menu cetak coba anda ganti dg perintah2 ini :
Untuk laporan data siswa..
OpenSheetWithParm(w_preview,dw_lap_tabungan,w_utama,5,original!)
Untuk laporan per group ..
OpenSheetWithParm(w_preview,dw_lap_ujian,w_utama,5,original!)
Lalu apakah langsung bisa dijalankan perintah ini dari menu ?
Mmmmmsheet w_preview anda harus diberikan perintah untuk menangkap
parameter yg disertakan di perintah tersebut di atas. Caranya ?
Ok.perlu anda ketahui untuk meng-capture/menangkap/store data parameter itu PB
mengenal 3 perintah :
Message.DoubleParm
Numeric
Message.PowerObjectParm PowerObject (PowerBuilder objects, including user-defined structures)
Message.StringParm
String
Anda perhatikanjika yg dilewatkan berupa data numeric dipakai perintah
Message.DoubleParm.
Jika data string pakai Message.StringParm
Dan jika berupa structure, PB object yg lain maka pakai Message.PowerObjectParm.
Karena yg dilewatkan berupa data string contoh : dw_lap_ujian

mztolo 2006 PB #13 opensheetwithparm()

Maka modify sheet w_preview anda di clickevent tombol PREVIEW dg koding ini :
// mztolo 2006
string kode1,kode2,dwfilter
string ls_nama_window
ls_nama_window = Message.StringParm
kode1 =righttrim(sle_1.text)
kode2 =righttrim(sle_2.text)
dw_1.dataobject=ls_nama_window
dw_1.settransobject(sqlca)
if len(kode1)>0 and len(kode2)>0 then
dwfilter ="nis >='"+kode1+"' and nis <='"+kode2+"'"
elseif len(kode1) > 0 and len(kode2)=0 then
dwfilter ="nis ='"+kode1+"'"
elseif len(kode1) = 0 and len(kode2) >0 then
dwfilter ="nis ='"+kode2+"'"
else
dwfilter=" "
end if
dw_1.setfilter(dwfilter)
dw_1.filter()
dw_1.retrieve()
dw_1.object.datawindow.print.preview='yes'
Penjelasan.
Perhatikan perubahan koding di click event tombol PREVIEW di atas.
Terutama yg saya ketik dg warna merah..
Pertama spt biasa anda siapkan variable untuk tempat nama datawindow itu
string ls_nama_window
Setelah itu store data sesuai yg dilewatkan parameter dg perintah ini
ls_nama_window = Message.StringParm
Dan anda isikan dataobject untuk dw_1 dengan perintah ini..
dw_1.dataobject=ls_nama_window
Dengan demikian w_preview sudah bisa anda pakai untuk type cetakan laporan
tabungan dan daftar nilai ujian.
Hebatnya lagi capture parameter itu bisa dilakukan di koding sebuah click event tombol.
Jadi tdk harus anda set di open event sheet.atau event lain yg running atau dijalankan
waktu sheet pertama kali ditampilkan.
Bagaimana jika data hasil store parameter itu mau kita pakai disemua event sheet ?
Karena kalo spt sample di atas itu hanya bisa dipakai di event click tombol PREVIEW
saja.

mztolo 2006 PB #13 opensheetwithparm()

Pertama anda harus declare variable untuk datanya di Instance Variables spt ini :

string ls_nama_window
Terus capture datanya anda ketik di open event dari sheet tersebut spt ini :

ls_nama_window = Message.StringParm
Sehingga koding di click event PREVIEW bisa ditulis spt ini :
// mztolo 2006
string kode1,kode2,dwfilter
kode1 =righttrim(sle_1.text)
kode2 =righttrim(sle_2.text)
dw_1.dataobject=ls_nama_window
dw_1.settransobject(sqlca)
if len(kode1)>0 and len(kode2)>0 then
dwfilter ="nis >='"+kode1+"' and nis <='"+kode2+"'"
elseif len(kode1) > 0 and len(kode2)=0 then
dwfilter ="nis ='"+kode1+"'"
elseif len(kode1) = 0 and len(kode2) >0 then
dwfilter ="nis ='"+kode2+"'"
else
dwfilter=" "
end if
dw_1.setfilter(dwfilter)
dw_1.filter()
dw_1.retrieve()
dw_1.object.datawindow.print.preview='yes'

mztolo 2006 PB #13 opensheetwithparm()

Note :
Cara atau aturan spt ini juga berlaku untuk variable atau parameter lain yg anda mau
pakai di seluruh event sheet anda atau object yg ada di sheet anda.
Bagaimana jika variable itu kita ingin pakai untuk seluruh aplikasi, artinya bersifat
public atau global ?
Anda bisa ketikkan di Global Variables spt ini :

Global Variables ini bisa diakses dari semua lokasi di aplikasi.


Sedangkan Instance Variables bisa diakses dalam lingkup object tersebut atau bisa juga
disamakan/dianggap sbg property sebuah object.
Ok lebih detailnya anda bisa baca di help PB J
Mmmm.saya pikir sudah cukup sampai disini J
Eiiiittt nanti dulu apakah anda sudah puas ?!
Belum ? Mmmm.kenapa ?
Okcoba jalankan kembali aplikasi anda.dan jalankan/buka sheet cetak data
siswa/tabungan.
Previewkan.mmmm sukses !!
Sekarang dlm kondisi sheet preview ini aktif coba jalankan sheet cetak data ujian siswa
Apa yg terjadi ? Window preview untuk yg kedua kali tdk mau tampil !
Benar sekali krn memang w_preview sudah tampil untuk data tabungan siswa.
Hal ini akan sama terjadi jika anda mencetak data ujian dan kemudian dlm kondisi masih
preview anda coba cetak juga data tabungan siswa.
Lalu bagaimana solusinya ? Anda ketik koding spt ini di click event menu laporan anda :
w_preview w_pre1
OpenSheetWithParm(w_pre1,"dw_lap_tabungan",w_utama,5,original!)
Dan spt ini.
w_preview w_pre2
OpenSheetWithParm(w_pre2,"dw_lap_ujian",w_utama,5,original!)
Note :
Perintah di atas dipakai untuk membuka 2 window yaitu w_pre1 dan w_pre2 dari
type window/sheet yg sama yaitu w_preview
Dengan cara di atas barulah di mungkinkan untuk membuka sheet preview secara
bersamaan dari 2 atau lebih laporan yg ada.

mztolo 2006 PB #13 opensheetwithparm()

Tampak di gambar bawah isi click event menu lap data tabungan siswa :

Tampak di gambar bawah isi click event menu lap data nilai ujian siswa :

mztolo 2006 PB #13 opensheetwithparm()

Buktikan.daninilah hasilnya :

Tampak sheet preview tampil untuk 2 buah laporan yg ada J


Perlu dicatat juga cara ini berlaku jg untuk sheet/window yg lain yg mungkin anda mau
tampilkan berulang.
Mmmm sekarang anda sudah puas ? Blom juga ?
Apa kegunaan opensheetwithparm() yg lain ?
Datawindow memungkinkan kejadian spt ini..
Misal ada sebuah tampilan tabular berbentuk row per row ke bawah tentunya.
Kemudian anda double click salah satu row..tampilah modul edit untuk atau khusus
row/data tersebut.
Bagaimana membuka sheet editing ini agar sesuai dg row/data yg di click ?
Dengan opensheetwithparm() atau openwithparm() !! Benar sekali J
Masih blom puas juga ?! Mmmmm..tetaplah untuk membaca dan belajar.
Kembangkan juga sheet preview yg ada sehingga benar2 bisa untuk preview semua
bentuk laporan yg ada.
Akhir kata..Sukses untuk anda !!

mztolo 2006 PB #13 opensheetwithparm()

PB#14 (tambahan)
Sebelum melangkah lebih jauh di pemrograman PB saya ingin menambahkan beberapa
hal yg mungkin kelaknya berguna dan memudahkan..
Coba anda buka workspace latihan anda sebelumnya.spt ini :

Kalo kita perhatikan mungkin ini adalah layout favorite anda..ada system tree nya ada
paint untuk datawindow..nama2 kolomnya dan tentunya properties
Tapi mungkin karena suatu hal maka.tampilan berantakan spt ini

mztolo 2006 PB#14 tambahan

Perhatikan tampilan kolom ada diantara datawindow painter dan properties.


Lalu jika kita ingin mengembalikan keposisi semula bagaimana ?
Caranya .klik menu spt gambar di bawah :

Dan anda bisa perhatikan tampilan akan rapi kembali..

mztolo 2006 PB#14 tambahan

Sekarang anda juga bisa membuat custom layout sendiri..


Misaldari tampilan Default di atas saya tdk mau modul Export/Import Template
XML ditampilkan.jadi cukup spt ini :

Caranya ?
Close dulu modul Export/Import Template XML tersebut.
Terus klik menu VIEW -> LAYOUT -> MANAGE

Sampai tampil modul spt ini.

mztolo 2006 PB#14 tambahan

Selanjutnya klik icon nomor 2 dari kiri. New Layout sampai tampil spt ini

Anda ketik misal mztolo ..


Terus klik tombol Apply Layout.

Sekarang anda coba bedakanantara Default dg mztolo J

Mmmmm..bedakan ?! J

mztolo 2006 PB#14 tambahan

Berikutnya adalah mengenai control yg invisiblealias tdk tampak


Atau di setting propertiesnya.visible tdk di centang
Perhatikan gambar berikut ini

Dlm sheet ada command button tapi tdk tampil kenapa ?


Lihat propertiesnya.

Visible tdk di centang !! Alias button ini di setting secara invisible J


Satu sisi memang di PB spt itutapi satu sisimmm jadi kita nggak tahu dimana itu
kontrol command buttonnya.
Lalu bagaimana jika kita maunya invisible tetapi tetap tampil di waktu desainnya
Caranya adalah. Klik menu DESIGN -> SHOW INVISIBLES

mztolo 2006 PB#14 tambahan

Sehingga akan tampil spt iniwalau invisible.

Berikutnya adalahmembuat file library baru


Apa itu ? Perhatikan gambar berikut..

mztolo 2006 PB#14 tambahan

Itu adalah system tree workspace anda.tampak di sana hanya ada 1 file library yaitu
siswa.pbl.
Anda tahu di PB kita bisa membuat aplikasi dg beberapa library.misalnya
begini.main program..functioncustom object dan menu di library siswa.pbl
Kemudian window sheet ada di library transaksi.pbl dan semua report ada di library
laporan.pbl.
Dengan demikian nanti di PB ada 1 exe misalnya dan beberapa file PBD pbl
kali ?! Bukan .tapi pbd krn pbl setelah di build dan deploy jadinya pbd
Dan jika anda perlu ubah di laporannyaanda cukup update di library laporan.pbl nya
Demikianlah.PBlalu bagaimana cara menambah library baru ?
Klik kanan di target dan pilih properties spt ini

Sampai tampil spt ini.

mztolo 2006 PB#14 tambahan

Klik tombol NEW untuk membuat library baru..

Ketik nama library-nya misal .transaksi dank klik tombol SAVE


Tampil modul spt inidan anda bisa menambahkan keterangan untuk library tsb

Klik tombol OK.dan hasilnya spt ini.

mztolo 2006 PB#14 tambahan

Dan tampak juga di system tree anda.

Nah pada saat membuat sheet atau modul yg lain..jgn lupa simpan di library
transaksi.pbl tersebut.

Hasilnya spt ini.

Ada cara lain ?


Ada dong J

mztolo 2006 PB#14 tambahan

Klik kanan di target dan pilih NEW

Pilih library painter dan klik tombol OK

Perhatikan di PB anda tampil toolbar untuk library spt ini

Klik tombol pertama untuk membuat library baru.

Ikutin langkah2 selanjutnya spt yg ada pada halaman 8.

mztolo 2006 PB#14 tambahan

10

Hanya saja blm ada di system tree anda.. J

Lalu cara menambahkannya bagaimana ?


Klik kanan lagi target .pilih properties.sampai tampil spt ini

Klik tombol BROWSE

Pilih library yg anda mau add dan klik tombol OPEN


Akan kembali ke posisi modul sebelumnya .Terus klik tombol OK

mztolo 2006 PB#14 tambahan

11

Maka tampak di system tree anda spt ini..

Oksaya pikir tambahannya ini dulu.


Tetap untuk semangatdan terus lah menggali.
Jangan lupa tetap kreatif.dan tentunya perbanyak rasa syukur J
Akhir kata .sukses untuk anda !!

mztolo 2006 PB#14 tambahan

12

Powerbuilder Runtime Packager


Setelah program selesai di build dan deploy ke EXE maka program PB anda siap di
install ke computer client anda.
Biasa yg menjadi kendala dalam installasi aplikasi di computer client adalah bagaimana
menyertakan file2 runtime PB agar aplikasi PB anda bisa running tanpa anda harus
menginstall PB.dan nggak lucu jika PB harus di install juga.
Hal ini tentu saja sudah di antisipasi PB.
Perlu anda ketahui juga ini berbeda dengan kalo anda memakai program semacam
Installshield.
Installshield adalah program bantu untuk membuat paket install aplikasi kita,
kelebihannya adalah bisa melakukan proses packaging dan installasi komponent2
program anda dengan baik.
Di program installshield anda siapkan semua component yg diperlukan termasuk file2
DLL nya sbg runtime file aplikasi anda kelak.
Lalu bagaimana jika kita tidak tahu file DLL apa saja yg kita perlukan ?!
Dengan PB runtime packager kita bisa mendapatkan file2 tersebut.. J
Lalu bagaimana caranya .mari kita lakukan
Double click file berikutyg ada di direktori spt tampak di bawah ini :
C:\Program Files\Sybase\Shared\PowerBuilder\pbpack100.exe

Tampilan default nya spt tampak di atas, anda bisa tentukan file2 runtime apa saja yg
mau anda pakai sesuai aplikasi yg anda develop.

mztolo 2006 pb runtime

Okmari kita setting spt ini :


- database interface nya untuk ODBC dan OLEDB (ini merupakan profile database
connectionnya)
- nama filenya PBR100.msi misalnya atau nama yg lain
- dan directori tempat file di create di C:\

Tekan tombol Create untuk memulai proses pembuatannya.

Tampak proses sedang berjalan

mztolo 2006 pb runtime

Proses selesai..klik tombol Done untuk mengakhiri.


Anda lihat di C:\ (direktori tempat file packagernya) tampak file sudah tercipta.

Format file adalah msi atau Microsoft installer


Dengan demikian proses pemuatan file PB runtime packager selesai J
Mudah bukan ?!
Lalu bagaimana cara menginstallnya ?
Berikut cara-caranya ..
Double click file PBR100.msi tersebut..

mztolo 2006 pb runtime

Klik Next

Perhatikan Folder: .anda ganti dg directory tempat aplikasi anda di install/di copy
Misal spt ini :

Anda bisa ketik langsung atau dg tombol Browse untuk mencari folder/directory yg
anda inginkan.Selanjutnya klik tombol Next

mztolo 2006 pb runtime

Klik Next lagi.

Proses install sedang terjadi..tunggu sampai selesai.

mztolo 2006 pb runtime

Install sukses .klik tombol Close


Lihat di C:\ anda ada directory HRIS dan perhatikan isi file DLL nya.

mztolo 2006 pb runtime

File2 tersebut antara lain :


- pbodbc.ini yg merupakan file setting untuk koneksi ke odbc nya
- pbodb100.dll merupakan driver odbc
- pbole100.dll merupakan driver oledb
- pbvm100.dll merupakan file dll utama didlm runtime ini
- pbdwe100.dll file ini berhubungan dg datawindow
- libjcc.dll juga merupakan file utama yg harus ada untuk menjalankan aplikasi PB
- msvcp71.dll dan msvcr71.dll merupakan runtime untuk C+ dan C++
untuk file yg lain anda dapat melihat keterangannya di dalam help PB. J
Ok dengan demikian diharapkan anda sudah mengetahui file runtime apa saja yg perlu
anda gunakan dan install di computer client.
Untuk runtime yg lain semacam XML, driver ORACLE dll dapat anda coba sendiri dan
bandingkan serta cari file nya..sesuai hasil install packagernya.
Detail penjelasan runtime packager ini dpt anda lihat di help PB chapter 41 spt ini :

Akhir kata. Sukses untuk anda !!

mztolo 2006 pb runtime

PowerBuilder Foundation Classes (PFC)


Setiap programmer pasti menginginkan sebuah software developer untuk membuat
program secara baik dan cepat.
PowerBuilder pun demikiandirancang dan ada untuk menjadi software developer yg
bisa menghasilkan aplikasi secara cepat dan bagus.
Oleh karena itu PB disertakan foundation classess yg powerfull alias sakti.
Class ini disebut PFC atau PowerBuilder Foundation Classes.
Bisa dikatakan true foundation alias bener2 sbg dasar atau pondasi dlm
mengembangkan aplikasi dan memiliki banyak kelebihan.
Basis dari PFC adalah SBA (Service Based Architecture) dan memakai fungsi pemanggil
sederhana untuk menjalankannya.
SBA is a way of building relatively lightweight objects that delegate a great deal of
functionality to service objects.
Ok anda bisa membaca keterangan lebih detail PFC di www.sybase.com,
www.pfcguide.com dan www.pfccheatsheet.com
Berikut cara memakai PFC wizard.
Pertama jalankan PowerBuilder.dan klik tombol New
Pilih tab Workspace dan klik tombol OK

Ketik nama workspace-nya misal.contoh_pfc dan klik tombol Save

mztolo 2006 PFC wizard hal. 1-6

Klik tombol New


lagi
Pilih tab Target.spt ini dan pilih Template Application

Klik tombol OK

Klik Next

Klik Next

mztolo 2006 PFC wizard hal. 1-6

Anda bisa ganti spt ini.Application Name : dengan aplikasiku

Klik Next

Application Types anda pilih MDI dan klik tombol Next

mztolo 2006 PFC wizard hal. 1-6

Klik Next

Klik Next

Klik Next
mztolo 2006 PFC wizard hal. 1-6

Klik Next

Anda ganti judul window sheetnya menjadi spt di atas dan klik Next

Klik Next
mztolo 2006 PFC wizard hal. 1-6

Anda pilih type koneksi untuk aplikasi anda.sesuai profile koneksi database yg anda
pernah buat. Selanjutnya klik Next

Pilih profile koneksi yg tersedia spt tampak di atas dan klik tombol Next

Pilih type informasi koneksinyaapakah bersumber dari ini file, registry setting atau
script ..pilih yg ini file dulu dan klik Next

mztolo 2006 PFC wizard hal. 1-6

Tampilan di atas akan beda jika anda memilih yg lain..selanjutnya Klik Next

Create Project ? Pilih Yes dan klik Next

Klik Next

mztolo 2006 PFC wizard hal. 7-12

Klik Next

Klik Next

Klik Next

mztolo 2006 PFC wizard hal. 7-12

Klik Next

Anda bisa langsung klik Next atau anda ganti menjadi spt ini

Klik Next

mztolo 2006 PFC wizard hal. 7-12

Klik Finishtunggu beberapa saatdan.

Tampak aplikasi anda sudah jadi J cepat dan mudah bukan ?!


Merupakan pondasi aplikasi yg komplitworkspace, target, menu, project, sheet/window
dan koneksi data sudah tercreate.
Jalankan aplikasi anda dg klik tombol Run

mztolo 2006 PFC wizard hal. 7-12

10

Yapberjalan dg sukses. J

mztolo 2006 PFC wizard hal. 7-12

11

Bukti aplikasi ini MDI..

Anda bisa explore isi kodingnya dan bagi anda yg baru mulai belajar sebaiknya membaca
sample2 pemula yg ada di www.mztolo.com
Sehingga anda bisa menambahkan datawindow dsb nya di aplikasi itu.
Selain itu anda juga bisa explore sample2 yg di sediakan PowerBuilder di :
C:\Program Files\Sybase\PowerBuilder 10.0\Code Examples\Example App
Sample yg komplit dan mudah untuk di pelajari.
Okdengan demikian proses pembuatan aplikasi dg PFC wizard selesai J
Sukses untuk anda !!

mztolo 2006 PFC wizard hal. 7-12

12

Menyimpan File BMP


Sample berikut ini akan menunjukkan cara menyimpan image/gambar yg berupa file
BMP kedalam database dg memakai OLE.
Lalu untuk apa kita menyimpan image di database ?
Sebagian dari aplikasi kita mungkin memerlukan data berupa picture/gambar untuk
mendukung informasi yg ada.
Bisa berupa foto orang untuk data HRD, gambar2 material untuk program yg lain.
Ada 2 teknik sekurangnya dalam pengelolaan data image ini, yaitu dg menyimpan
gambar tersebut di database atau dg hanya menyimpan path lokasi file tersebut di
server. Lalu apa bedanya ?
Yang jelas dg dimasukkannya image ke database maka data gambar/image itu akan
disimpan dalam database (data binary).
Sedang jika path lokasi image itu saja yg disimpan di database maka image/gambar
akan dicopykan langsung di dalam salah satu lokasi/directory di dalam hardisk server.
Nah untuk latihan kali ini akan di tunjukkan bagaimana menyimpan data image kedalam
database.
Untuk latihan kali ini saya memakai database MySQL dg structure spt ini :

Database test table gambar dg field ada 3 :


Kode char(5)
primary key
Keterangan varchar(255)
perhatikan ini sample saja tdk mengikat
Image blob
type data ini panjang/length nya tdk usah di isi
(spt tampak pada gambar di atas)

mztolo 2006 menyimpan image #1

Dalam database MySQL type data untuk image kita bisa pake type data BLOB (binary
large object).
Dalam database MsSQL type data yg dipakai adalah IMAGE
Dalam database Sybase SQL Anywhere type data yg dipakai adalah LONG BINARY
Mmmm dari ke 3 nya mana yg paling OK ?
Lho kok anda tanya spt itu ..hehehehehe J
Sejauh yg saya coba Sybase SQL Anywhere yg paling cocok dg PB
Kenapa ? Apakah krn PB juga product dari Sybase ? Mungkin hehehehe J
Mungkin kesimpulan saya saat ini masih premature tetapi nanti anda akan tahu seberapa
jauh perbedaannya..dan jika saya nanti menemukan hal baru di MySQL atau MsSQL
tentunya akan saya update sample ini J
Ok mari kita kembali ke jalur semula.
Asumsi saya anda sudah bisa membuat aplikasi dg PB
Bisa membuat dan konek ke database MySQL..
Anda perhatikan.browse table gambar anda spt ini.

Selanjutnya buat workspace spt ini.

mztolo 2006 menyimpan image #1

Buat koneksi di open aplikasi anda spt ini :


// Profile test
SQLCA.DBMS = "ODBC"
SQLCA.Lock = "RU"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='UID=root;DRIVER={MySQL ODBC 3.51 Driver};
DESC=;DATABASE=test;SERVER=mztolo;PASSWORD=;PORT=3306;OPTION=3;STMT=;
',CommitOnDisconnect='No'"

connect ;
open(w_utama)
Selanjuntnya buka/create sheet .spt ini :

Selanjutnya klik control OLE spt ini :

mztolo 2006 menyimpan image #1

Sampai keluar modul spt ini :

Pilih Object Type-nya Paintbrush Picture dan klik tombol OK


Setelah itu klik/tempatkan di area kosong yg ada disheetspt ini

Jika program Paint (windows) aktif/jalan maka close saja..

mztolo 2006 menyimpan image #1

Atur properties OLE tersebut spt ini

mztolo 2006 menyimpan image #1

Tambahkan object2 baru spt tampak di gambar bawah :

Ada kode dg object entry Single Line Edit control


Ada keterangan dg object entry MultiLineEdit control
Ada 3 tombol Pick Image, Save dan Close
Isi click event tombol Close :
Close(parent)
Isi click event tombol Pick Image :
string ls_path,ls_filename
int li_rc, li_rc2
GetFileOpenName("Select file to open",ls_path,ls_filename)
If ls_filename ="" Then return
if ole_1.insertfile(ls_path)=0 then
return -1
end if
Note :
GetFileOpenName berfungsi untuk menampilkan modul Windows untuk membuka file
image/gambar.
Inserfile berfungsi untuk meng-insertkan image ke dalam control OLE.

mztolo 2006 menyimpan image #1

Isi click event tombol Save :


int li_rc
blob lb_object
//check if a title was supplied
if sle_1.text = "" Then
Messagebox("OLE SAVE","You must supply a KODE")
return -1
end if
//get the data from the ole control
lb_object = ole_1.objectdata
//check if title already exists
SELECT count(*)
INTO :li_rc
FROM gambar
WHERE gambar.kode = :sle_1.text ;
//insert a new row if this is a new title
If li_rc = 0 Then
//add the title, desc to the database
INSERT INTO gambar ( kode, keterangan,image )
VALUES ( :sle_1.text, :mle_1.text,' ') ;

if SQLCA.SQLCode = -1 then
MessageBox("SQL error",SQLCA.SQLErrText,Information!)
return -1
end if
End If
sqlca.autocommit = TRUE
//update the row just inserted adding the blob ole control now
updateblob gambar set image = :lb_object
where kode =:sle_1.text ;
if SQLCA.SQLCode = -1 then
MessageBox("SQL error",SQLCA.SQLErrText,Information!)
return -1
end if
commit ;
messagebox(':)','Sukses !!')

mztolo 2006 menyimpan image #1

Note :
Perhatikan yg di cetak tebalitu koding yg penting atau inti dari proses tersebut.
Sekenario yg berlaku adalah.
1. Lakukan proses INSERT data terlebih dahulu dg data kosong pada image-nya
2. Autocommit harus di setting ke TRUE
3. Dan lakukan UPDATE image sesuai data kode waktu insert
Simpan dan coba RUN aplikasi anda

Klik tombol Pick Image .dan pilih salah satu image/bmp anda.misal spt ini :

Pilih salah satu file.. (perhatikan ukuran file nya 1 KB)


Dan klik tombol OPEN

mztolo 2006 menyimpan image #1

Tampak spt ini :

Klik tombol Save


Lihat database anda .

Klik kolom image BLOB anda.dan perhatikan tab Text di bawah.


Ada semacam data disituartinya apa ?
Jika ada data spt itu maka data gambar/image telah tersimpan.. J
Lalu bagaimana cara menampilkannya ?
mztolo 2006 menyimpan image #1

Buat saja datawindow freeform misalnyaspt ini

Kok hanya 2 kolom ? Dimana kolom image ?


Benar waktu anda membuat datawindow ini maka kolom dg type data blob tdk bisa
ditampilkan (select langsung di desain datawindownya)
Lalu bagaimana cara menampilkan image yg sudah disimpan ?
Caranya tambahkan object blob OLE di datawindow anda.
Klik
dan klik tempat kosong di datawindowmisal di bawah keterangan
Sampai keluar modul spt ini

Perhatikan di bawah keterangan ada control Blob..

mztolo 2006 menyimpan image #1

10

Klik table gambar.klik kolom image.


Ketik Key Clause.pilih OLE Class-nya PBrush:Paintbrush Picture dan Client
Name Expression spt ini :

Klik tombol OK dan atur lebar control blob OLE seperlunya.spt ini :

mztolo 2006 menyimpan image #1

11

Selanjutnya retrieve datawindow tersebut..makatampaklah data image anda J

Simpan datawindowdg nama dw_gambar..


Coba anda add image/bmp yg lain..
Misal ukuran 59 KB..99 KB dll.
Kenapa ukuran 99 KB tdk bisa tampil di datawindow ? Spt ini :

Coba anda double click tepat di kotak image tersebut..untuk menjalankan program
Paint (window)aha !

mztolo 2006 menyimpan image #1

12

Tampak di program Paintgambar hanya tampak sebagian.atau tersimpan sebagian


Kenapa ? Type data blob tdk cukup menampungnya ! Benar sekali..
Dan jika anda close program Paint tersebutmaka tampaklah.

Coba table gambar anda .untuk kolom image di ubah dari type data blob menjadi
LONGBLOB
Dan coba lagi untuk image dg ukuran 99 KB tersebut.

Okcukup disini sample menyimpan file BMPsemoga anda paham J


Sukses untuk anda !!

mztolo 2006 menyimpan image #1

13

Menyimpan File BMP #2


Mmmm ok coba jalankan aplikasi latihan anda sebelumnya..
Dan coba add image bertype JPG..spt ini :

Image tdk bisa tampil di OLE control tetapi jika anda savebisa !!

Dan ketika anda double-click baru tampil data yg ada..tentunya di aplikasi yg


mendukung format file tersebut dan menampilkannya.

mztolo 2006 menyimpan image #2

Inipun berlaku juga untuk file GIF..walau ukurannya sangat kecil.


Jadi kesimpulan awal adalah hanya file BMP yg langsung bisa ditampilkan di OLE
control atau datawindow(walau ini tdk sepenuhnya benarnah lho ?! nanti anda
akan tahu juga J)
Ok..sekarang anda coba dg database MsSQL.spt ini :

Tentunya string koneksi harus anda ubah menjadi spt ini :


SQLCA.DBMS = "ODBC"
SQLCA.Lock = "RU"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='driver=sql server;server=mztolo;database=test;
',CommitOnDisconnect='No'"
Dan telah saya coba untuk add beberapa image.

Perhatikan record ke 3ukuran 59 KBtampak di datawindow spt ini :

mztolo 2006 menyimpan image #2

Artinya apa ? Image terlalu besar dan tidak mau ditampilkan di OLE.
Coba double-click untuk mengaktifkannya..dan ..

Yapimage hanya tersimpan sebagianatau type data image tdk bisa menampungnya..

Anda masih ingattype BLOB MySQL masih bisa menampung image ini..apalagi
type data yg LONGBLOB
Dengan demikian anda semakin tahuukuran max seberapa yg bisa masuk di MsSQL

mztolo 2006 menyimpan image #2

Anda juga bisa coba dg database Sybase SQL Anywhere.spt ini :

Tampak datanya spt ini .

Perhatikan type data yg dipakai adalah LONG BINARY..


Dengan koneksi string spt ini
SQLCA.DBMS = "ODBC"
SQLCA.Lock = "RU"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='Driver={Adaptive Server Anywhere 9.0};
Srvr=siswa-anywhere;Uid=dba;Pwd=sql;Database=test;',CommitOnDisconnect='No'"
Tampak datawindow spt ini.

Atau dg type data IMAGE.spt ini

mztolo 2006 menyimpan image #2

Anda juga bisa menampilkan image di datawindow dg cara spt ini.

Pake Keterangan ? Yap benar


Anda set di properties keterangan itu spt ini .(perhatikan Display As Picture)

Tanpa OLE ? Betul sekali..tanpa OLE..cukup centang Display As Picture


Tentu saja karena keterangan ini sudah beralih fungsi sbg penampil image maka atur
lebar dan tingginya spt image juga..
Dan jika anda retrieve datawindownya akan spt ini..

mztolo 2006 menyimpan image #2

Mungkin anda akan bertanya ada image yg mau ditampilkan dg Display As Picture
dan ada yg tdk mau
Perhatikan untuk keterangan yg bisa anda tampilkan secara picture adalah keterangan yg
berupa nama dan type file image/bmp yg anda simpan.
Spt gambar inijika anda klik di datawindow-nya akan tampak nama filenya

Spt ini

Bagaimana jika waktu save saya salah tulis misal TSHIRTO.BNP ?


Tinggal anda ganti saja yg benar dan savemaka image akan tampil.
Ini juga berlaku untuk data di MsSQL dan MySQL
Okcukup disini tambahan sample menyimpan file BMPsemoga anda paham J
Sukses untuk anda !!
Eiiiittt tunggu dulu mztolobagaimana jika saya mau pake link path aja ?!
Buat saja control image di sheet anda dan isi di properties PictureName dg spt ini
\\nama_server\c$\gambar\gbr_anu.bmp
Dan anda tinggal save link path itu ke dalam database tentunya dg type data cukup
char atau varcharsilahkan J

mztolo 2006 menyimpan image #2

POWERBUILDER 11
Powerbuilder 11 akan hadir
Sebuah harapan sekaligus keprihatinankenapa ?
Powerbuilder 11 hadir dg fitur2 baruantara lain :
- adanya .net wizards yg memudahkan programmer membuat aplikasi web base.
- juga adanya fitur yg mendukung MsSQL 2005.
- selain itu di versi terbaru ini ada penambahan tipe datawindow treeview.
- dan penambahan2 yg lain..
Lalu apa keprihatinannya..tentu saja harganya yg selangit.
Untuk versi Enterprise bisa mencapai hampir 30 jutammm seharga luas tanah 150 m2
yg ada di daerah Depok II Timur J
Beberapa saat yg lalu saya sempat chatting dg salah satu sales distributor PB 11 dan saya
menyampaikan unek2 yg ada.
Bagaimana jika bundle PB 11 Enterprise atau PB versi berikutnya..agar dibuat lebih
fleksibleartinya apa ?
Misal tdk semua pembeli PB kan perlu InfoMaker kenapa ini tdk dijual terpisah..
Database Sybase Anywhere atau fitur yg lain yg mungkin kita tdk pakaikenapa tdk
dijual terpisah juga..atau kita bisa memilih.
Dengan demikian diharapkan PB akan lebih murah dan terjangkau
Kan ada PB versi dekstop yg harganya dibawah 4 jutaan.mmm setara program lain lah
semacam vfp9.
Memang benar..hanya saja apakah versi ini sudah mendukung .net ?
Ok lah.mari kita lupakan sejenak harga PB yg tinggi itu.
Kita harus bersyukur krn diberi kesempatan mencoba versi beta PB 11

mztolo 2006 powerbuilder 11

Kalo kita lihat tdk ada perubahan dlm layout tampilan depannya.
Mungkin yg anda bisa rasakan pertama kali buka atau setelah buka workspace adalah
icon2 yg ada terlihat baru dan tambah smooth.
Spt tampak berikut ini

Anda perhatikan p_coba_webform di atasadalah wizard .net nya..


Dan keren-nya lagi anda cukup membuat 1 workspace dan anda bisa deploy ke dalam
bentuk windows base atau EXE file.atau .net alias web base.dg file extension .aspx
Tampak tampilan aplikasi yg window base spt ini :

mztolo 2006 powerbuilder 11

Dan tampilan web base nya spt ini :

Web servernya memakai IIS 5.0 atau yg terbaru.

mztolo 2006 powerbuilder 11

Yang ini adalah tampilan untuk datawindow treeview-nya..

Pada dasarnya datawindow treeview ini spt datawindow grouphanya saja bedanya
datawindow treeview jika groupnya di klik maka akan tampil data detailnya
Untuk web servernya sendiri pada saat deploy maka PB akan otomatis men-setting-kan
ke dalam IIS yg ada..anda pastikan IIS sudah ter-install di pc anda. J
Di direktory web servernya akan tercreate beberapa file dg extension .aspx dan untuk
default tampilannya bernama default.aspx
mztolo 2006 powerbuilder 11

Saya pribadi baru mencoba dg database Sybase Anywhere alasannya ?


Kita tahu Sybase memang keren untuk database dia ada enginenya.yg jalan sbg
servernya..dbeng.exe dan untuk client ada juga..
Bagaimana dg database yg lain..mmm.yg jelas diperlukan semacam engine ini
MySql mungkin dg semacam apache, tomcat atau sejenisnya yg memungkinkan
database bisa diakses secara web
MsSQL nah ini diasejujurnya saya blom tahu hehehehe
Tak lupa saya tampilkan juga isi. .net wizards nya spt ini..

Ok.sampai disini dulu.ini hanya sbg gambaran awalberikutnya kita coba untuk
membuat sample2 spt apa yg telah di tampilkan di atas ..
Sukses untuk anda !!

mztolo 2006 powerbuilder 11

POWERBUILDER 11
Mmmmm ok mari kita coba membuat workspace di PB 11
Langkahnya sama dg latihan yg pernah anda buat sebelumnya
Jalankan program PB anda dan klik tombol new
Selanjutnya dari tab Workspace klik icon workspace yg ada..

Selanjutnya klik tombol OK

Ketik nama workspace nya misal latih1 dan klik tombol Save

mztolo 2006 PB 11 beta - sample

Tampak di PB 11 anda workspace telah tercipta.

Selanjutnya membuat target aplikasinya.


Klik new lagi dan di tab Target pilih Application dan klik tombol OK

Note :
Perhatikan model atau bentuk2 icon di PB 11 ini tampak beda dg versi sebelumnya J

mztolo 2006 PB 11 beta - sample

Beri nama aplikasinya pembeli dan klik tombol Finish


Tampak target sudah tercipta..

Note :
pembeli paling atas adalah targetnya.
pembeli.pbl adalah library-nya
pembeli yg paling bawah adalah nama aplikasinya
Ok selanjutnya membuat koneksi ke databasenya..klik icon database
Dan akan tampil..spt berikut ini

mztolo 2006 PB 11 beta - sample

Untuk latihan kali ini memakai profile sintak koneksi yg udeh ada dulu aja J
Yaitu EAS Demo DB V110 ini biasanya udeh otomatis tercipta kala kita install PB 11
beta ini
Selanjutnya klik kanan dan pilih properti..

mztolo 2006 PB 11 beta - sample

Sampai tampil spt ini

Klik tab Preview dan klik tombol Copy untuk meng-copy sintak profile stringnya.

Selanjutnya klik tombol OK dan anda close juga painter profile databasenya..

mztolo 2006 PB 11 beta - sample

Selanjutnya double clik di aplikasi pembeli dan masuk ke event open


Klik kanan dan paste apa yg telah kita copy dari koneksi profile-nya

Spt tampak pada gambar di atas.


Ok biarkan spt itu dulu..
Selanjutnya klik tombol new lagi dan di tab Datawindow pilih Treeview dan klik
tombol OK

Klik tombol Next

mztolo 2006 PB 11 beta - sample

Anda pilih misalnya data customer..

Selanjutnya anda pilih/klik kolom yg mau ditampilkan dg urutan pemilihan state,


fname, lname dan phone .mmmm ini sample aja.selanjutnya klik OK
Selanjutnya anda pilih kolom pertamanya yg mau dipakai di treeview datawindow spt
tampak berikut ini.klik dan seret ke arah kanan.

Dan selanjutnya klik tombol Next.Next lagi.dan klik Finish


Tampak hasilnya spt ini..

mztolo 2006 PB 11 beta - sample

POWERBUILDER 11

Mmmm kenapa data tdk langsung tampil ?


Benar krn pada waktu kita buat datawindow ini Retrieve on Preview nya tdk kita
centang ? Lalu apa bedanya ?
Jika di centang maka datawindow stl tercipta data akan di retrieve atau di
tampilkan.mmm kalo data di databasenya udeh banyak gimana ya ? hehehehe
Anda ambil kesimpulan sendiri.. J
Nah jika tidak di centang untuk tampilin data gimana ?
Klik kanan aja terus retrieve di painter previewnya
Tampak isi datanya spt ini..

mztolo 2006 PB 11 beta - sample

Simpan dg nama dw_tree .

Klik tombol OK tampak di workspace anda sudah ada dw_tree

mztolo 2006 PB 11 beta - sample

Selanjutnya buat PBObject Window dan klik tombol OK

Tambahkan datawindow yg telah dibuat dan tombol di window tersebut..

Isi click event di tombolnya dg koding ini :


Close (parent)
Isi event open window-nya dg koding ini :
dw_1.settransobject(sqlca)
dw_1.retrieve()
Selanjutnya simpan dg nama w_utama

mztolo 2006 PB 11 beta - sample

10

Selanjutnya tambahkan koding spt ini di event open aplikasi pembeli anda.

Simpan koding di atas


Selanjutnya coba anda klik tombol Run spt ini

mztolo 2006 PB 11 beta - sample

11

Inilah yg anda buat barusan


Lalu bagaimana dg .net wizards nya ?

Klik tombol new lagidan pilih tab Project pilih .NET web Forms Application
Wizard dan klik tombol OK

mztolo 2006 PB 11 beta - sample

12

Next lagi..

Biarkan nama web applicationnya dg pembeli .ini untuk sample duluklik Next

Jika anda pakai file PBR sertakan di modul ini


Klik Next

mztolo 2006 PB 11 beta - sample

13

Jika anda memakai icon atau image2 yg lain di aplikasi inisertakan jgbisa dg
menyertakan nama folder atau nama file image-nya
Klik Next..

Jika anda memakai file DLL juga anda bisa sertakan di modul ini
Klik Next..

mztolo 2006 PB 11 beta - sample

14

Klik Next lagi..

Jika anda memakai tambahan modul dari javascript jg bisa ditambahkan.


Klik Next

Perhatikan aplikasi anda ini langsung akan di setting ke IIS yg ada..(pastikan juga IIS
sudah terinstall di pc anda)
Klik tombol Next

mztolo 2006 PB 11 beta - sample

15

POWERBUILDER 11

Klik tombol Finish..


Tercipta sudahclose.dan perhatikan di workspace anda..

mztolo 2006 PB 11 beta - sample

16

Selanjutnya anda Deploy

Proses deploying sedang terjadi..

Klik No aja duludan sekarang baca informasi yg ada di Output nya

mztolo 2006 PB 11 beta - sample

17

Proses deploy suksesdan tampak info yg menunjukkan beberapa properties yg ada


ternyata tdk support di web base atau .net nya.
Apakah ini salah.tdk juga.hanya saja fitur tersebut tdk akan jalan atau tampil di
webformnya.

Selanjutnya jika anda cek di pc andatampak sudah tercipta file .net nya

mztolo 2006 PB 11 beta - sample

18

Dan jika anda jalankan akan tampil spt ini..

Lalu bagaimana dg windows base nya ?


Anda tinggal buat project aplikasinya.terus deploy maka anda tercipta .net dan .exe
sekaligus..
Enak bukan ? Demikianlah..
Selamat datang .NET J J J
Ok tulisan ini sekali lagi saya bilang ini baru awal..
Selanjutnya masih lebar terbentang jalan yg lurus dan berkelok yg harus kita taklukkan
Tetap bangun pagi dengan semangatdan tetap belajar dan tetap bekerja keras J
Sukses untuk anda !!

mztolo 2006 PB 11 beta - sample

19

Membuat Prosedur Backup/Restore MsSQL


Setelah program kita buat kemudian data telah di-entri-kan serta telah di laporakan maka
ada satu prosedure lagi yg biasa dan perlu kita lakukan. Yaitu membuat backup data tsb.
Kenapa musti di backup ? Kenapa musti membuat cadangan ? Agar kalo rusak kita masih
memiliki cadangannya. Betul sekali.anda benar ! J
Kebetulan jg program yg mau saya sampekan disini aslinya saya modifikasi dari sample
sebuah buku VB.net mmmm saya lupa karangan siapa.
Kemudian saya coba buat pake VisualFoxpro dan berhasil dg bagus
Nah selanjutnya dari vfp saya coba buat lagi ke PBnah inilah yg akan kita buat J
Pada dasarnya logika dari prosedure ini adalah sbb :
1. Untuk backup/restore kita manfaatkan device object backup/restore dari mssql,
jadi kita akan membuat device object untuk itu nantinya.
2. Selanjutnya kita akan menjalankan device object itu dari aplikasi PB kita.
3. Untuk backup, walo database mssql sedang dipakaiproses ini bisa dijalankan
4. Nah untuk restoredatabase mssql hrs tdk sedang dipakai.maka jika anda
perhatikan nantinya pada saat restore koneksi akan dipindah ke database master.
Sekarang coba mari kita buat sebuah aplikasi khusus untuk backup/restore :

Dari gambar itu anda tahukan apa yg hrs anda lakukan J


Artinya anda musti membuat workspace bernama backrest, begitu juga target aplikasinya,
1 function untuk konek bernama f_konekke dan 1 lagi window dg nama w_backrest.

mztolo 2006 membuat prosedure backup/restore mssql

Buat function f_konekke dg isi spt ini :

Isi koding-nya spt ini : (perhatikan gambar di atas)


SQLCA.DBMS = "ODBC"
SQLCA.Lock = "RU"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='driver=sql server;
server=guzrud;database=+ nmdatabase +;',CommitOnDisconnect='No'"

Selanjutnya isi koneksi di open event target aplikasi anda spt ini :
f_konekke(employees)
open(w_backrest)
Di close event target aplikasi itu :
Disconnect ;
Perhatikan :
Guzrud adalah contoh nama server-nyasesuaikan dg nama server anda.
Employees adalah nama databasenyasesuaikan juga jgn lupa.
Simpan perubahan di atas dan selanjutnya modifikasi window w_backrest anda
menjadi spt ini :

mztolo 2006 membuat prosedure backup/restore mssql

Tampak disana ada :


2 radio button
1 single line edit
3 command button
Isi koding click event dari tombol batal sbb :
Close(parent)
Tambahkan di Instance Variables sbb :
string ls_path, ls_file
int li_rc
Isi click event tombol dg ini :
if rb_1.checked then
ls_path = sle_1.Text
li_rc = GetFileSaveName ( "Pilih File", ls_path, ls_file, "bck", "All Files (*.*),*.*" )

IF li_rc = 1 Then
sle_1.Text = ls_path
End If
else
If GetFileOpenName("Pilih File", ls_Path, ls_File, "bck", "All Files (*.*),*.*" ) = 1 Then

li_rc = Pos(ls_Path, ls_File)


ls_Path = Left(ls_Path, (li_rc - 1))
sle_1.Text = ls_Path + ls_File
End If
end if
Tambahan :
GetFileSaveName berguna untuk menentukan nama file apa yg akan kita pake/save sbg
file backupnya. bck adalah extension file bakcupnyauntuk hal ini anda bisa ganti dg
extension yg anda kehendaki.
GetFileOpenName tentunya untuk membuka/mengambil file backup yg ada untuk kita
lakukan restore.
Isi click event tombol Proses adalah sbb :
// mztolo www.irenk.com 29092006
sqlca.autocommit=true
string ls_check
int i_flag
ls_check="exec sp_helpdevice bckdataku ;"
execute immediate :ls_check ;
if SQLCA.sqlcode = -1 then
i_flag = 0
else
i_flag = 1
end if

mztolo 2006 membuat prosedure backup/restore mssql

if i_flag = 1 then
string ls_drop
ls_drop ="exec sp_dropdevice bckdataku ;"
execute immediate :ls_drop ;
if SQLCA.sqlcode = -1 then
MessageBox("Drop Device Object Error !", SQLCA.sqlerrtext)
i_flag = 1
else
i_flag = 0
end if
end if
if i_flag = 0 then
string ls_create
ls_create ="exec sp_addumpdevice 'disk','bckdataku', '"+ trim(sle_1.text) + "' ;"
execute immediate :ls_create ;
if SQLCA.sqlcode = -1 then
MessageBox("Create Device Object Error !", SQLCA.sqlerrtext)
else
if rb_1.checked then
string ls_back
ls_back="backup database employees to bckdataku ;"
execute immediate :ls_back ;
if SQLCA.sqlcode = -1 then
MessageBox("Backup Database Error !", SQLCA.sqlerrtext)
else
MessageBox(":)","BackUp Sukses !!")
end if
sqlca.autocommit=false
else
// putus koneksi dari employees
disconnect ;
// koneksi ke master database
f_konekke("master")
string ls_rest
ls_rest="restore database employees from bckdataku ;"
execute immediate :ls_rest ;
if SQLCA.sqlcode = -1 then
MessageBox("Restore Database Error !", SQLCA.sqlerrtext)
else
MessageBox(":)","Restore Sukses !!")
end if
// putus koneksi dari master
disconnect ;
// kembalikan ke koneksi employees
f_konekke("employees")
end if
end if
end if

mztolo 2006 membuat prosedure backup/restore mssql

Tambahan :
Untuk menjalankan sebuah perintah SQL di PB kita bisa melakukan dg perintah execute
immediate diikuti command/perintah SQL nya. Perintah ini akan jalan jika autocommit = true

Maka jika anda perhatikan di awal prosedur ini autocommit di set menjadi true.
Kalo dari awal sudah kita set true gimana ? Ya nggak perlu lagi to mas J
Selanjutnya cek apakah device object telah ada ? exec sp_helpdevice bckdataku ;
Jika sudah ada maka hapus exec sp_dropdevice bckdataku ;
Jika belum ada maka create exec sp_addumpdevice 'disk','bckdataku', '"+ trim(sle_1.text) + "' ;

Untuk backup lakukan perintah berikut backup database employees to bckdataku ;


Untuk restore lakukan perintah berikut restore database employees from bckdataku ;
Sewaktu backup database sedang aktif jg tdk apa2walo alangkah bagusnya dan
safetynya jika semua transaksi sudah close.
Kalo restore ? Wajib semua sudah close atau koneksi tidak ada terhadap database tsb.
Maka jika anda perhatikan sample di atas ada proses disconnect database employees dan
konek ke master.dan setelah selesai dikembalikan ke koneksi employees J
Sekarang coba jalankan aplikasi anda

Perhatikan pilihan ujicoba ini yg pertama adalah Backup, kemudian klik tombol
sampai tampak spt ini :

mztolo 2006 membuat prosedure backup/restore mssql

Ketik nama file backup-nya bckemployees dan klik tombol Save maka tampilan
layar akan spt ini :

Klik tombol Proses .. Yaappppss backup sukses !!

Dan jika anda lihat di direktory tempat backup tadi maka tampak ada file
bckemployees.bck spt tampak berikut ini :

Dan jika anda lihat di Manajemen Backup MsSQL anda :

Tampak ada device object untuk backup/restore tersebut.


Lalu bagaimana dg proses restore ? Hehehehe coba anda lakukan sendiri J
Ok dg demikian sample pembuatan utility backup/restore sudah selesai J
Apakah hrs terpisah aplikasinya dg aplikasi lain ? Nggak juga. Modul ini bisa kok anda
tambahkan di aplikasi yg sudah ada. Cuma logikanya spt di atas.
Kalo saya pake TRY ... CATCH boleh nggak tuk trap errornya ? Boleh aja J
Akhir kata .. Sukses untuk anda !!

mztolo 2006 membuat prosedure backup/restore mssql

Memulai Pocket PowerBuilder 1.5


Dalam setiap kali kesempatan banyak sekali rekan2 yg bertanya bagaimana atau dg apa
kita bisa membuat aplikasi yg jalan di PDA.
Ada 1 bhs program yg mudah digunakan untuk membuat aplikasi PDA tersebut.. yaitu
Pocket PowerBuilder 1.5 atau versi yg lebih baru yaitu PocketBuilder 2.0 (konon sudah
mendukung pembuatan aplikasi koneksi ke GPS)
Lalu bagaimana dg bhs yg dipakainya ?
Bhs pemrograman PPB 1.5 ini mirip dg bhs pemrograman PowerBuilder, tentunya ada
beberapa yg menyesuaikan dg properties dari modul yg jalan di PDA.
Oktanpa panjang lebar mari kita coba membuat program kecil dan sederhana untuk
PDA kita J
Pertama jalankan PPB 1.5 anda.

Tampak tampilan layar spt di atas.tdk jauh beda dg tampilan PowerBuilder


Jika anda kurang jelas sebaiknya membaca panduan PB yg ada.

mztolo 2006 memulai PPB 1.5

Selanjutnya klik tombol new spt ini

Pilih WorkSpace dan klik OK


Tentukan folder tempat workspace aplikasi anda .spt ini

Beri namamisal world dan klik tombol SAVE, tampak di workspace anda spt ini :

mztolo 2006 memulai PPB 1.5

Selanjutnya klik tombol new lagi dan pilih tab target.pilih Application dan klik
tombol OK

Ketik world di application name-nya..library dan target tdk usah anda isi krn itu
otomatis tercipta jika anda klik tepat di entriannya.
Selanjutnya klik tombol Finish dan hasilnya spt ini

mztolo 2006 memulai PPB 1.5

Ok..selanjutnya mari kita coba membuat window/form tampilannya..


Klik tombol new lagi

Pilih tab PB Object terus pilih Window dan klik tombol OK


Maka akan tampak di painter window anda spt ini .

mztolo 2006 memulai PPB 1.5

Selanjutnya tambahkan tulisan dan tombol spt ini..

Perhatikan properties dari window itu juga.tampak di gambar sebelah kanan.


(setting di atas hanyalah sample saja)
Isi event click dari tombol Close di atas adalah :
Close(parent)

mztolo 2006 memulai PPB 1.5

Okselanjutnya simpan dg nama w_world dan klik OK

Tampak di workspace anda spt ini.

Selanjutnya doubleclick target world anda

mztolo 2006 memulai PPB 1.5

Selanjutnya di event open window ketik open(w_world) spt tampak di gambar berikut
ini :

Okclose dan save kembali


Sekarang coba jalankan aplikasi anda dg klik tombol run
Inilah aplikasi yg telah anda buat.

Clik tombol Close untuk kembali ke PPB anda


Klik tombol new kembali untuk membuat projectsbl proses deploy dilakukan

Dan klik tombol OK sampai tampil spt berikut ini.

mztolo 2006 memulai PPB 1.5

Untuk sementara setting spt ini dulu..

Close dan save spt ini..

mztolo 2006 memulai PPB 1.5

Tampak di layar spt ini..

Selanjutnya anda bisa build dan deploy..


Lakukan Full Build dg klik dari menu yg ada.

Tampak di layar output spt ini..waktu di full build

mztolo 2006 memulai PPB 1.5

Dan deploy.

Tampak di layar output spt ini waktu di deploy.

Jika anda lihat di folder kerja anda tampak spt ini :

Dan EXE tersebut jika anda jalankan maka hasilnya akan sama dg tampilan di atas..
Tapi kan ini masih di PC bagaimana setup ke PDA nya ?
Sabar.nantikan sample berikutnya J
Ok..sampai disini dulu.smoga ini bermanfaat
Sukses untuk anda !!

mztolo 2006 memulai PPB 1.5

10

Deploy aplikasi ke PocketPC


Perlu anda ketahui sebelum PDA anda connect atau usb kable-nya anda hubungkan ke pc
wajib anda install terlebih dahulu program Microsoft ActiveSync yg biasanya
disertakan di paket penjualan PDA anda.
Pada saat koneksi terjadi antara PDA dan pc anda akan tampak tampilan spt ini :

Tampak juga di icon taskbar anda .

ActiveSync ini akan berfungsi untuk sinkronisasi data di pda dan pc anda, sehingga data
di kedua alat ini akan sama.
Anda perhatikan di gambar atasjadwal di kalendar anda, data di kontak anda maupun
jadwal kerja anda akan di sinkronisasikan.
Begitu juga jika anda ingin menambah aplikasi atau program di pda anda.juga lewat
ini.
Lalu caranya ? Setelah kabel terhubung install saja program tersebut di pc anda jika
itu aplikasi untuk pda maka otomatis akan ada pertanyaan apakah akan diinstall jg di pda.
Begitu juga PocketPowerBuilder ini .
Waktu anda install PPB ini pertama kalimaka di pda juga akan terinstall aplikasi PPB
ini begitu juga database Sybase SQL Anywhere-nya.

mztolo 2006 deploy aplikasi ke PocketPC

Ok lalu bagaimana dg deploy-nya ? Mmmmmm sangat mudah ! Oh ya ?!


Coba buka workspace program latihan anda sebelumnya.
Dan anda buka project spt ini..

Anda masih ingat di sample sebelumnya, setting project adalah unutk desktop saja,
maka untuk deploy ke pda anda coba anda setting spt tampak di atas.
Khusus anda perhatikan di Target Directory tampak di sana saya tambah 1st
Ini adalah direktori tempat aplikasi PPB kita akan diinstall-kan.
Direktori \Program Files di pda anda biasanya sudah ada. Untuk 1st jika belum ada
maka hrs anda buat dulu di pda anda, di folder/direktori \Program Files
Ok.lalu close dan simpan perubahan itu..

mztolo 2006 deploy aplikasi ke PocketPC

Lakukan Full Build ..dan lakukan Deploy Workspace, tampak di layar output spt ini

Waktu deploy ini akan tercipta file2 spt tampak dibawah ini

Dan dg deploy ini juga file aplikasi anda akan langsung tercopy/terinstall di pda anda

mztolo 2006 deploy aplikasi ke PocketPC

Dan tampak juga di kumpulan program anda.

Lalu jika anda jalankan akan tampak spt ini .

Hehehehe selamat anda telah sukses membuat sebuah aplikasi untuk PDA !! J
Mudah bukan ?!
Ok..sampai disini dulu.smoga ini bermanfaat
Dan nantikan sample berikutnya
Sukses untuk anda !!

mztolo 2006 deploy aplikasi ke PocketPC

Anda mungkin juga menyukai