Social Icons

google plustwitterfacebookinstagramlinkedinrss feedcontact me

Rabu, 22 Oktober 2014

Merubah Properti Control Dalam Datawindow

Pada Tutorial Membuat Program Biodata Karyawan yang lalu, ada script code yang bertujuan untuk memodifikasi properti Protect dari beberapa Column dalam datawindow, misalnya pada Tutorial Membuat Program Biodata Karyawan Part 7, disana ada script pada Event Clicked dari Command Button cb_tambah yg seperti ini (dibagian terakhirnya):
dw_karyawan.Modify("nama_karyawan.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("jenis_kelamin.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("tempat_lahir.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("tanggal_lahir.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("status_nikah.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("pendidikan.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("alamat_lengkap.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nomor_telepon.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nomor_handphone.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("alamat_email.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nama_bagian.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nama_jabatan.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("status_kerja.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("tanggal_masuk.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("keterangan.Protect ='1~tIf(IsRowNew(),0,1)'")
Script code diatas adalah script untuk memProtect Column dalam datawindow kecuali column dibaris baru (Penambahan Data). Dengan model script diatas maka kita tentunya harus mengetikkan satu persatu dari semua column yang ingin diprotect, masalahnya adalah, bagaimana jika column yang harus diatur itu ada banyak dan datawindow yang lain juga harus dilakukan hal yang sama ? tentunya akan tidak efisien jika harus mengetikkan secara berulang-ulang, atau yang paling mudahnya mengcopy paste script diatas lalu mengganti nama datawindow dan nama masing-masing columnnya, namun hal itu juga menurut saya agak kurang efisien, maka solusi dari saya adalah dengan membuat Function dengan metode Looping untuk setiap column, sehingga script codenya bisa dirampingkan.

Analisa
Sebelum membuat Function, maka kita pasti harus melakukan analisa terlebih dahulu, hal ini perlu karena dengan analisa, maka kita akan dapat menentukan Return value dan argument-argument yang dibutuhkan, sehingga Function yang kita buat dapat dipanggil dimana saja. Dari script code diatas dapat saya simpulkan jika Function yang akan kita buat tidak memerlukan Return Value, dan argument yang dibutuhkan adalah Datawindow dan String, dimana argument Datawindow untuk mendefinisikan datawindow yang akan diakses dan String adalah Properti dan nilai dari propertinya.
Setelah analisa selesai, langsung saja kita buat Function tersebut, berikut adalah langkah-langkahnya:
Buat Function baru dengan struktur sebagai berikut:
Nama Function: f_set_column
Return Type: (None)
Access: Public
Arguments:
Pass By
Argument Type
Argument Name
Value
datawindow
adw_name
Value
string
as_property
Pada Code Painter, masukkan script berikut ini:
String ls_object, ls_control, ls_delimiter = "~t", ls_type
Integer li_pos, li_start, li_end

ls_object = adw_name.Describe("Datawindow.Objects") + "~t"
li_start = 1
li_pos = PosA(ls_object, ls_delimiter, li_start)

DO WHILE li_pos > 0
li_end = li_pos - li_start
ls_control = MidA(ls_object, li_start, li_end) 
IF Not Isnull(ls_control) THEN
ls_type = adw_name.Describe(ls_control + ".Type")
IF ls_type = "column" THEN
adw_name.Modify(ls_control + "." + as_property)
END IF
END IF
li_start = li_pos + 1
li_pos = PosA(ls_object, ls_delimiter, li_start)
LOOP

Simpan Function ini.

Untuk menggunakan Function diatas, maka kita perlu memasukkan 2 argument, yakni datawindow dan string propertinya, misalnya:

f_set_column(dw_1, "Protect ='1~tIf(IsRowNew(),0,1)'")
f_set_column(dw_1, "Protect = 1")
f_set_column(dw_1, "Protect = 0")
f_set_column(dw_1, "Visible = 1")
f_set_column(dw_1, "Visible = 0")

Demikianlah trik singkat ini, semoga bermanfaat untuk anda.
Akhir kata, semoga sukses untuk semua yang sedang dan akan anda lakukan.

Jumat, 17 Oktober 2014

Membuat Tombol Enter Seperti Tombol Tab

Dari sekian banyak yang memberikan trik tentang cara untuk membuat Tombol Enter menjadi seperti tombol Tab dalam datawindow, saya menemukan satu trik yang paling simple, yaitu disini: Make the Enter key act as TAB Key.
Memang sih untuk trik dari yang lain ada penambahan kondisi lainnya, misalnya kombinasi tombol Ctrl/Shift dengan tombol Enter, namun tentunya dengan adanya penambahan kondisi tersebut, script codenya akan bertambah panjang, walaupun ada yang tinggal di copy-paste script codenya, sehingga anda tidak perlu repot-repot mengetik ulang script code tersebut, dan jika anda melakukan itu (tinggal copy-paste scriptnya) sebenarnya hal itu akan membuat anda tidak mengetahui alur dari script code tersebut, belum lagi jika yang memberikan script code tersebut tidak sengaja lupa untuk memasukkan variable atau yang lainnya yang dibutuhkan dalam script code tersebut, sehingga ketika anda coba untuk menyimpannya, sudah pasti akan terjadi error, kalau cuma variable error sih, kita tinggal mendeklarasikan variable tersebut, namun jika yang terjadi adalah Syntax Error, tentunya hal ini akan membuat anda "sedikit" kebingungan, karena yang merancang script code tersebut bukanlah anda sendiri. Hal lain yang membuat saya sangat tidak menyarankan anda untuk hanya mengcopy-paste script code adalah, biasanya gaya penulisan script code dari masing-masing orang itu berbeda-beda, dan belum tentu gaya penulisan script code dari sumber yang anda copy-paste itu sama dengan gaya penulisan script code anda, tentunya hal ini akan semakin "memperjelas" jika program yang anda buat tidak murni buatan anda sendiri. Namun itu semua hanya pendapat saya pribadi dan bukan untuk diperdebatkan.

Balik lagi ke tulisan Membuat Tombol Enter Seperti Tombol Tab, trik yang saya dapatkan hanya membuat penekanan tombol Enter akan seperti penekanan tombol Tab dan tanpa adanya kombinasi denagn tombol yang lain, dimana defaultnya pada datawindow jika kita menejan tombol Enter maka data akan berpindah ke baris berikutnya, sedangkan jika kita menekan tombol Tab maka kursor akan berpindah ke kolom berikutnya dalam baris yang sama.

Untuk langkah-langkahnya adalah sebagai berikut:
  • Buat sebuah Event baru pada Datawindow yang anda inginkan, misalnya dengan nama dw_ue_enter
  • Pada pilihan Event ID pilih pbm_dwnprocessenter (untuk properti yang lain diabaikan saja karena secara otomatis Powerbuilder akan memasukkan properti lain yang dibutuhkan sesuai dengan Event ID tersebut).
  • Pada Code Painter masukkan script berikut ini:
Send(Handle(This), 256, 9, Long(0, 0))
Return 1

Simpan Event tersebut, lalu tes hasilnya apakah sudah sesuai atau belum (Penekanan tombol Enter akan membuat kursor berpindah kolom dan bukan berpindah data/baris)

Demikianlah trik sederhana kali ini, semoga bermanfaat untuk anda.

Akhir kata, semoga sukses untuk semua yang sedang dan akan anda lakukan.

Rabu, 15 Oktober 2014

Menghitung Umur

Membuat Function Untuk Menghitung Umur

Kali ini saya akan memberikan sebuah Function yang dapat digunakan untuk menghitung umur/usia seseorang secara detail (tahun, bulan dan harinya), selain untuk menghitung umur/usia, Function ini juga dapat diterapkan untuk menghitung selisih waktu diantara dua tanggal (tanggal dalam argument dan tanggal dalam system komputer).

Anda tidak perlu khawatir, karena dalam Function yang akan saya berikan ini akan menggunakan Function-Function standar yang saya yakin anda telah mengetahuinya, disini mungkin yang lebih berperan adalah logikanya, karena untuk menghitung umur/usia, butuh sedikit pemikiran yang lebih dalam, agar hasil yang didapatkan sesuai dengan hitungan yang sebenarnya (versi saya tentunya).

Sebelum saya mulai, sebagai gambaran, ada baiknya saya berikan konsep dari Function ini, yaitu sebagai berikut:

Misalnya tanggal lahir adalah 15 Oktober 2000
  1. Pada tanggal 14 Oktober 2014, umur/usia belum genap 14 tahun, karena masih kurang 1 hari lagi, yang berarti umur/usia adalah 13 tahun 11 bulan pada tanggal 15 September 2014, ditambah selisih hari antara tanggal 15 September 2014 dan 14 Oktober 2014 sebanyak 29 hari
  2. Pada tanggal 15 Oktober 2014, umur/usia telah genap 14 Tahun
  3. Pada tanggal 16 Oktober 2014, umur/usia telah genap 14 Tahun ditambah 1 hari
Hasil output dari Function yang akan saya berikan untuk contoh diatas adalah sebagai berikut:
  1. 13 Tahun 11 Bulan 29 Hari
  2. 14 Tahun 0 Bulan 0 Hari
  3. 14 Tahun 0 Bulan 1 Hari
Hal ini juga berlaku untuk bulan-bulan sebelum/sesudah bulan lahirnya.

Dari contoh diatas, jika tanggal lahirnya belum tercapai, maka akan ada jumlah hari yang ditambahkan, jumlah hari tersebut bisa kita dapatkan dengan cara kita harus terlebih dahulu mengetahui jumlah hari dalam bulan sebelumnya, jumlah hari ini kita butuhkan agar kita bisa membuat tanggal sesuai dengan tanggal lahir namun dibulan sebelumnya, hal ini untuk mengantisipasi jika tanggal lahir lebih besar dari tanggal terakhir dibulan sebelumnya, misalnya tanggal lahir adalah 31 Maret, kita tahu jika tanggal terakhir dibulan sebelumnya(dalam hal ini Pebruari) maksimal adalah 29 (jika tahun kabisat, jika bukan tahun kabisat maka tanggal terakhir dari bulan Pebruari adalah 28).
Sedangkan jika tanggal lahirnya telah lewat, maka kita tinggal menghitung jumlah harinya saja.

Sekarang kita lanjut ke pembuatan function, sesuai judul artikel ini yaitu Function menghitung umur, berikut adalah langkah-langkahnya:
Buat dahulu Function untuk menghitung jumlah hari dibulan sebelumnya atau bisa juga disebut sebagai Function untuk mengetahui tanggal terakhir dari bulan sebelumnya, berikut adalah langkah-langkahnya:
Dalam workspace anda, buat sebuah Function baru dengan struktur sebagai berikut:
Property
Keterangan
Access
Public
Return Type
Integer
Function Name
f_jumlah_hari_bulan_lalu
Pass By
Value
Argument Type
Date
Argument Name
ad_tanggal_sekarang
Pada painter code, masukkan script berikut ini:
// Kegunaan: untuk mendapatkan jumlah hari/tanggal terakhir dibulan sebelumnya

Integer fi_bulan, fi_tahun
Date fd_tanggal_terakhir

fi_bulan = Month(ad_tanggal_sekarang)
fi_tahun = Year(ad_tanggal_sekarang)

fd_tanggal_terakhir = RelativeDate(Date(fi_tahun, fi_bulan, 1), -1)

Return Day(fd_tanggal_terakhir)
Simpan Function tersebut.

Langkah selanjutnya adalah pembuatan Function untuk menghitung umur, berikut langkah-langkahnya:
Buat Function baru dengan struktur sebagai berikut:
 Property
Keterangan
Access
Public
Return Type
String
Function Name
f_detail_umur
Pass By
Value
Argument Type
Date
Argument Name
ad_tanggal_lahir
Pada jendela code painter, masukkan script kode berikut ini:
String fs_ret
Integer fi_tahun_lahir, fi_tahun_sekarang, fi_bulan_lahir, fi_bulan_sekarang, fi_tanggal_lahir, fi_tanggal_sekarang
Integer fi_selisih_tahun, fi_selisih_bulan, fi_selisih_hari, fi_jumlah_hari
Date fd_tanggal_lahir_bulan_lalu

SetNull(fs_ret) // set null untuk return-nya
// cek argument, null atau tidak
IF IsNull(ad_tanggal_lahir) THEN Return fs_ret
// Cek tanggal lahir melewati tanggal sekarang atau tidak
IF ad_tanggal_lahir > Today() THEN Return "Belum Lahir"
// Ambil Tahun, Bulan dan Tanggal dari tanggal lahir
fi_tahun_lahir = Year(ad_tanggal_lahir)
fi_bulan_lahir = Month(ad_tanggal_lahir)
fi_tanggal_lahir = Day(ad_tanggal_lahir)
// Ambil Tahun, Bulan dan Tanggal dari tanggal sekrang
fi_tahun_sekarang = Year(Today())
fi_bulan_sekarang = Month(Today())
fi_tanggal_sekarang = Day(Today())
// Set nilai dengan asumsi tanggal dan bulan sekarang adalah tanggal dan bulan lahirnya
fi_selisih_tahun = fi_tahun_sekarang - fi_tahun_lahir
fi_selisih_bulan = 0
fi_selisih_hari = 0
// kode berikut akan dieksekusi jika tanggal sekarang umur/usia belum genap atau sudah lewat tanggal, bulan dan tahunnya
IF fi_bulan_lahir = fi_bulan_sekarang THEN // bulannya sama
IF fi_tanggal_lahir > fi_tanggal_sekarang THEN // tanggal lahir belum waktunya
            fi_jumlah_hari = f_jumlah_hari_bulan_lalu (Today())
            fi_selisih_bulan = 11
fd_tanggal_lahir_bulan_lalu = RelativeDate(Date(fi_tahun_sekarang, fi_bulan_sekarang, fi_tanggal_lahir), 0 - fi_jumlah_hari)
            fi_selisih_hari = DaysAfter(fd_tanggal_lahir_bulan_lalu, Today())
            fi_selisih_tahun = (fi_tahun_sekarang - fi_tahun_lahir) - 1
ELSEIF fi_tanggal_lahir < fi_tanggal_sekarang THEN // tanggal lahir sudah lewat
            fi_selisih_hari = fi_tanggal_sekarang - fi_tanggal_lahir
            fi_selisih_bulan = 0
            fi_selisih_tahun = fi_tahun_sekarang - fi_tahun_lahir
END IF
ELSEIF fi_bulan_lahir > fi_bulan_sekarang THEN // bulan lahir belum waktunya
IF fi_tanggal_lahir = fi_tanggal_sekarang THEN // tanggal lahirnya sama dengan tanggal sekarang
            fi_selisih_hari = 0
            fi_selisih_bulan = 12 - (fi_bulan_lahir - fi_bulan_sekarang)
            fi_selisih_tahun = (fi_tahun_sekarang - fi_tahun_lahir) - 1
ELSEIF fi_tanggal_lahir > fi_tanggal_sekarang THEN // tanggal lahir belum waktunya
            fi_jumlah_hari = f_jumlah_hari_bulan_lalu(Today())
            fi_selisih_bulan = 12 - (fi_bulan_lahir - fi_bulan_sekarang) - 1
            fd_tanggal_lahir_bulan_lalu = RelativeDate(Date(fi_tahun_sekarang, fi_bulan_sekarang, fi_tanggal_lahir), 0 - fi_jumlah_hari)
            fi_selisih_hari = DaysAfter(fd_tanggal_lahir_bulan_lalu, Today())
            fi_selisih_tahun = (fi_tahun_sekarang - fi_tahun_lahir) - 1
ELSE // tanggal lahir sudah lewat
            fi_selisih_hari = fi_tanggal_sekarang - fi_tanggal_lahir
            fi_selisih_bulan = 12 - (fi_bulan_lahir - fi_bulan_sekarang)
            fi_selisih_tahun = fi_tahun_sekarang - fi_tahun_lahir - 1
END IF
ELSEIF fi_bulan_lahir < fi_bulan_sekarang THEN // bulan lahir sudah lewat
IF fi_tanggal_lahir = fi_tanggal_sekarang THEN // tanggal lahir sama dengan tanggal sekarang
            fi_selisih_hari = 0
            fi_selisih_bulan = fi_bulan_sekarang - fi_bulan_lahir
            fi_selisih_tahun = fi_tahun_sekarang - fi_tahun_lahir
ELSEIF fi_tanggal_lahir > fi_tanggal_sekarang THEN // tanggal lahir belum waktunya
            fi_jumlah_hari = f_jumlah_hari_bulan_lalu(Today())
            fi_selisih_bulan = fi_bulan_sekarang - fi_bulan_lahir - 1
            fd_tanggal_lahir_bulan_lalu = RelativeDate(Date(fi_tahun_sekarang, fi_bulan_sekarang, fi_tanggal_lahir), 0 - fi_jumlah_hari)
            fi_selisih_hari = DaysAfter(fd_tanggal_lahir_bulan_lalu, Today())
            fi_selisih_tahun = fi_tahun_sekarang - fi_tahun_lahir
ELSE // tanggal lahir sudah lewat
            fi_selisih_hari = fi_tanggal_sekarang - fi_tanggal_lahir
            fi_selisih_bulan = fi_bulan_sekarang - fi_bulan_lahir
            fi_selisih_tahun = fi_tahun_sekarang - fi_tahun_lahir
END IF
END IF
// buat string untuk hasilnya
fs_ret = String(fi_selisih_tahun) + " Tahun " + String(fi_selisih_bulan) + " Bulan " + String(fi_selisih_hari) + " Hari"
Return fs_ret
Simpan Function tersebut.

Untuk memanggil Function tersebut, kita tinggal memasukkan argument dengan tipe data date, misalnya:
Date ld_lahir
String ls_msg

em_1.GetData(ld_lahir)
ls_msg = "Untuk Tanggal Lahir " + String(ld_birth, "dd mmmm yyyy") + " detail umur pada~n"
ls_msg = ls_msg + "tanggal " + String(Today(), "dd mmmm yyyy") + " adalah sebagai berikut:~n~n"
ls_msg = ls_msg + f_detail_umur(ld_birth, lb_1.SelectedIndex())

MessageBox("Function Detail Umur", ls_msg, Information!)
Berikut adalah contoh hasil outputnya:

Demikianlah pembuatan Function untuk menghitung umur versi saya yang simple ini, untuk contoh filenya dapat anda download di laman Sample.

Akhir kata, semoga artikel ini berguna untuk anda. 

Sabtu, 11 Oktober 2014

Memaksimalkan Fitur MDI

Pada Tutorial Membuat Program Biodata Karyawan Part 10 kita telah selesai membuat program pendataan karyawan, dalam program tersebut window utama yang digunakan merupakan window dengan jenis MDI (Multiple Document Interface), sekedar flashback saja, window dengan jenis MDI berarti window-window yang dibuka berada dalam lingkup window utama, yang dalam Powerbuilder dikenal dengan sebutan Sheet (mungkin dibahasa pemrograman yang lain sebutannya bisa sama atau berbeda).

Untuk kali ini kita akan memaksimalkan fitur dari window yang berjenis MDI, dimana salah satu fiturnya adalah mengatur tata letak dari masing-masing Sheet yang sedang dibuka.
Dalam Powerbuilder, untuk mengatur tata letak dari Sheet yang sedang dibuka dapat dilakukan dengan menggunakan Function ArrangeSheets, dengan tipe-tipe layout yang disediakan adalah:
Cascade
Mengatur tata letak Sheet (kecuali yang diminimize) yang saling bertumpuk, namun TitleBar dari masing-masing Sheet terlihat, contohnya:

Layer
Mengatur tata letak Sheet (kecuali yang diminimize) dengan memenuhi area Sheet dari window utama, dimana Sheet-Sheet tersebut saling bertumpuk, dengan sheet terdepan adalah Sheet yang sedang aktif, contohnya:

Tile
Mengatur tata letak Sheet (kecuali yang diminimize)dengan format Sheet-Sheet tersebut menjadi seperti kolom, contohnya:

TileHorizontal
Sama seperti tipe Tile, namun formatnya seperti baris, contohnya:

Icons
Mengatur penempatan Sheet-Sheet yang sedang diminimize (seperti jika Sheet-Sheet yang sedang dibuka diminimize secara manual), contohnya:

Nah untuk tutorial kali ini saya akan coba untuk memaksimalkan program biokaryawan dengan menggunakan fitur MDI tersebut, berikut adalah langkah-langkahnya
Buka kembali workspace biokaryawan
Buke painter dari m_utama, lalu tambahkan menu-menu dibawah ini pada menu m_utama.m_window :
Text
Menu Name
-
m_0
Cascade
m_cascade
Layer
m_layer
Tile Vertical
m_tilevertical
Tile Horizontal
m_tilehorizontal
Icons
m_icons

Menu dengan teks tanda strip/min (-) itu untuk membuat menu garis, sehingga menu m_utama akan menjadi seperti ini:

Lihat dibawah menu Window->About, ada garisnya(dalam keadaan terseleksi oleh saya), itulah maksud dari menu dengan Text tanda strip/min (-).

Masukkan script code pada masing-masing menu yang baru ditambahkan diatas kecuali menu dengan Text tanda strip/Min (-) berikut ini:
Menu
Script Code
Cascade
ParentWindow.ArrangeSheets(Cascade!)
Layer
ParentWindow.ArrangeSheets(Layer!)
Tile Vertical
ParentWindow.ArrangeSheets(Tile!)
Tile Horizontal
ParentWindow.ArrangeSheets(TileHorizontal!)
Icons
ParentWindow.ArrangeSheets(Icons!)

Simpan perubahan pada m_utama, dan coba jalankan program biokaryawan.

Setelah semua sesuai, jangan lupa untuk mem-build dan men-deploy ulang workspace biokaryawan, dan replace file biokaryawan.exe dan biokaryawan.pbd di folder instalasi program biokaryawan pada komputer server dengan file biokaryawan.exe dan biokaryawan.pbd hasil perubahan pada langkah ini.

Akhir kata, semoga sukses untuk semua yang sedang dan akan anda lakukan.

Kamis, 09 Oktober 2014

File Runtime Powerbuilder

Setelah pada bagian kesepuluh (Tutorial Membuat Program Biodata Karyawan Part 10), berarti program biodata karyawan ini telah benar-benar selesai kita buat dan siap untuk diimplementasikan, baik itu dikomputer server, ataupun dikomputer client. Untuk file-file runtime yang dibutuhkan oleh program yang dibuat dalam powerbuilder classic 12 agar dapat berjalan dikomputer yang tidak terinstal Powerbuilder 12, sangat tergantung dari program yang kita buat, hal ini karena ada file yang hanya dibutuhkan jika program tersebut menggunakan control-control tertentu (lihat dimenu Help HTML Book, bagian Application Techniques->Deployment Techniques->Chapter 36 ->Powerbuilder Runtime Files).

Pada dasarnya setiap program yang dibuat dalam Powerbuilder itu membutuhkan file-file berikut ini:
  • pbvm120.dll 
  • pbshr120.dll
  • libjcc.dll
  • libjutils.dll
  • pbdwe120.dll (untuk .NET gunakan pbdwm120.dll)
  • pbodb120.DLL (jika koneksi database yang digunakan menggunakan ODBC)
Dan juga file-file dari Microsoft berikut ini:
  • msvcr71.dll
  • msvcp71.dll
  • atl71.dll
Untuk file-file runtime powerbuilder bisa anda lihat di folder Shared->Powerbuilder pada path folder instalasi Powerbuilder 12, defaultnya path folder instalasi powerbuilder 12 adalah:
C:\Program Files\Sybase\PowerBuilder 12.0
Jadi, folder shared tersebut akan berada pada path berikut ini:
C:\Program Files\Sybase\Shared\PowerBuilder

Untuk file-file Microsoft, jika anda tidak dapat menemukannya dikomputer anda, anda bisa cari disitus atau website yang menyediakan file-file tersebut secara gratis, misalnya di DllDump (silahkan cari sendiri lewat google ya).

Jika semua file diatas sudah anda miliki, berarti waktunya untuk mengatur agar program biokaryawan dapat dijalankan pada komputer lain. Untuk tutorial ini kita akan buat agar program biokaryawan itu berjalan sebagai program Client-Server Untuk cara mudahnya, file-file diatas diletakkan pada satu folder yang sama dengan file executable dari biokaryawan, untuk cara termudah berikut adalah langkah-langkahnya:
  1. Buat sebuah folder baru dikomputer yang akan dijadikan sebagai server, misalnya di drive D dengan nama Bio Karyawan
  2. Dalam folder Bio Karyawan buat lagi sebuah folder dengan nama Photos
  3. Salin file-file runtime diatas kedalam folder D:\Bio Karyawan
  4. Buka folder workspace, salin file-file berikut ini ke folder D:\Bio Karyawan:
  • biokaryawan.exe
  • biokaryawan.pbd
  • Default.jpg
  • logo.ICO
Sehingga struktur folder Bio Karyawan seperti gambar ini:

Share folder D:\Bio Karyawan, dan tandai kotak Allow network users to change my files
Maka kita pun selesai

Untuk langkah selanjutnya adalah pengaturan koneksi databasenya, untuk hal ini ada sedikit perbedaan konfigurasi namun langkah-langkahnya sama, baik untuk Server maupun untuk Client, dan berikut adalah langkah-langkahnya:
  1. Instal psqlodbc versi 9.3 dikomputer yang akan diinstal program biokaryawan
  2. Buat ODBC dengan cara:
  3. Klik Start->Control Panel->Administrative Tools lalu klik dua kali pada Data Sources (ODBC)
  4. Pada tab System DSN klik Add lalu pilih PostgreSQL ANSI dan klik Finish
  5. Dalam jendela ODBC Setupnya masukkan:
  • Data Source = PostgreSQL 93
  • Database = postgres
  • SSL Mode = disable
  • Port = 5432
  • Server:
  1. Dikomputer Server, masukkan: localhost
  2. Dikomputer Client, masukkan IP Address dari komputer server atau nama network komputer server
  3. Klik Save lalu klik OK untuk menutup jendela ODBC
Dan kita pun selesai dalam Tutorial Membuat Program Biodata Karyawan ini.

Akhir kata, semoga sukses untuk semua yang sedang dan akan anda lakukan.

Rabu, 08 Oktober 2014

Membuat Program Biodata Karyawan Part 10

Setelah kita selesai membuat window ganti password pada Tutorial Membuat Program Biodata Karyawan Part 9, ada satu window opsional lagi yang harus ditambahkan, setelah itu kita lanjutkan dengan membuat file executablenya.

Pada bagian kesepuluh dari Tutorial Membuat Program Biodata Karyawan ini, hanya merupakan “pelengkap” dari seluruh tutorial pembuatan program biodata karyawan, karena pada bagian ini kita hanya akan membuat window atau jendela yang hanya berisi informasi mengenai program ini. Tujuan pembuatan window ini adalah seperti pada umumnya program-program lain yang dibuat, baik itu yang berbayar maupun yang gratisan. Pada setiap program kita akan melihat sebuah menu yang bila diakses akan menampilkan jendela yang berisi informasi mengenai program tersebut, misalnya informasi mengenai:
  • Nama program dan versinya
  • Deskripsi tentang program
  • Nama-nama atau Tim pembuat program
  • Copyright dari program tersebut
  • Keterangan lainnya
Untuk membuat window ini, tidak ada keahlian khusus dalam bidang coding, karena window ini hanya bersifat informasi, dan informasi yang ditampilkan hanya dalam bentuk teks yang terintegrasi langsung ke control yang bersangkutan. Namun pada window ini “sedikit” dibutuhkan keahlian mendesain layout window menjadi semenarik mungkin, anda bisa mencontoh desain layout window about dari program-program yang lain (ingat ya mencontoh bukan menjiplak). Walaupun sebenarnya dalam pembuatan window ini tidak dibutuhkan keahlian yang mumpuni, namun dalam beberapa kasus untuk layout yang “wah” bisa juga dibutuhkan keahlian yang lebih dari biasanya.

Untuk pembuatan window tentang program dalam tutorial ini, saya hanya akan buat yang sesederhana mungkin, dan berikut adalah langkah-langkahnya:

  • Jalankan Powerbuilder Classic 12 dan buka workspace biokaryawan
  • Buka window w_about lalu masukkan control StaticText, StaticHyperLink dan CommandButton, atur Teks dan layoutnya seperti berikut ini:

  • Untuk background color window w_about, saya pilih sky
  • Untuk BackColor control selain CommandButton saya pilih Transparent
  • Hilangkan tanda pada properti Enabled dari semua control kecuali control Command Button
  • Pada tab General di jendela Properties, hilangkan tanda pada properti TitleBar dan ControlMenu
  • Masih di tab General, scroll kebawah hingga anda temukan OpenAnimation dan CloseAnimation
  • Pilih animasi yang anda inginkan, kalau saya saya pilih fadeanimation! untuk keduanya, pengaturan ini gunanya adalah agar saat window ini dibuka atau ditutup maka akan dilakukan animasi fade in dan fade out, yang kurang lebih artinya dari transparan hingga tampil seutuhnya atau sebaliknya.
  • Atur Animation Time sesuai dengan kebutuhan anda (semakin besar maka akan semakin lama animasinya).
  • Pada event Clicked dari CommandButton, masukkan script kode: Close(Parent)
  • Simpan perubahan pada window w_about dan kita pun selesai membuat program Biodata Karyawan ini.
Membuat File Executable
Untuk dapat didistribusikan dikomputer yang lain atau di folder lain dikomputer yang membuat program ini, maka perlu kita buat file exe-nya, saya rasa mengapa kita harus membuat file exe-nya, tidak perlu dijelaskan lebih lanjut lagi, karena anda pasti sudah tau dan mengerti bukan ?

Untuk membuat file executable dalam Powerbuilder Classic, maka langkah pertama adalah membuat Project terlebih dahulu, berikut adalah langkah-langkahnya menggunkan Wizard dari Powerbuilder:
Klik File->New lalu pilih tab Project, seperti gambar dibawah ini:


Klik OK, lalu akan tampil jendela Wizard berikut ini:

Klik Next, akan tampil jendela berikut ini:

Klik Next, dan tampillah jendela berikut ini:

Beri nama projectnya atau biarkan default seperti yang saya lakukan lalu klik Next, maka akan tampil jendela berikut ini:

Jika anda menginginkan nama yang lain, silahkan diutak-atik, kalau saya, saya biarkan secara default aja, klik Next dan akan tampil jendela ini:

Biarkan secara default, atau atur sesuai kebutuhan anda, Full Build artinya semua object akan di built ulang, sedangkan Incremental Build artinya hanya object yang diubah yang akan dibuilt ulang., setelah anda selesai mengaturnya klik Next dan akan tampil jendela ini:

Biarkan saja seperti defaultnya, kecuali anda tahu dengan resiko dari penggunaan machine code dan dll pada program yang dibuat dalam Powerbuilder (silahkan dilihat di User Guidenya), klik Next dan akan tampil jendela ini:

Beri tanda pada kotak Build Dynamic Libraries (.PBD) jika kotaknya belum ditandai lalu klik Next, dan akan tampil jendela ini:

Defaultnya kotak-kotak tersebut sudah otomatis terisi (kecuali dikotak Copyright), anda masukkan saja sesuai keinginan anda, misalnya seperti ini:

Klik Next dan akan tampil jendela terakhir dari wizard ini:

Klik Finish untk menyelesaikan Wizard pembuatan Project, dan akan tampil painter Project tersebut:

Tutup painter Project tersebut
Sampai disini kita telah selesai membuat Project untuk keperluan pembuatan file executable dari program yang telah kita buat.

Sebelum kita membuat file executablenya, alangkah lebih baik jika kita tentukan ikon dari program yang kita buat, sehingga nantinya file exe dari program kita akan memiliki ikon tersendiri, berikut adalah langkah-langkahnya:

Letakkan file ikon (.ICO) yang anda inginkan didalam folder yang sama dengan file workspace, ganti namanya menjadi logo.ICO, anda bisa cari di website-website yang memberikan icon-icon secara gratis.
Klik dua kali pada Target Application biokaryawan, maka akan tampil painter dari target tersebut seperti ini:

Disebelah kanan klik tombol Additional Properties, lalu pilih tab Icon dan ketikkan logo.ICO pada kotaknya, seperti gambar dibawah ini:

Klik OK lalu simpan perubahannya dan tutup painter Target Application

Sebelum membuat file executable, pastikan tidak ada satupun painter yang terbuka
Untuk pertama kalinya klik menu Run lalu pilih Full Build Workspace, jika sudah yang kesekian kalinya cukup pilih Incremental Build Workspace.
Dibagian bawah akan ada status prosesnya, tunggu sampai ada notifikasi Finished Full Build Workspace biokaryawan…. Seperti gambar ini (lihat dibagian paling bawah gambar):

Setelah ada notifikasi tersebut lanjutkan dengan klik Run lalu pilih Deploy Workspace dan tunggu sampai ada notifikasi Finished Deploy of workspace biokaryawan… seperti gambar ini (lihat dibagian paling bawah gambar):

Setelah selesai, lihat di folder tempat workspace biokaryawan berada, maka akan tercipta beberapa file hasil deploy tersebut, seperti gambar ini:

Untuk file-file runtime-nya akan kita bahas pada bagian File Runtime Powerbuilder, untuk sementara sampai disini dahulu.

Akhir kata, semoga sukses untuk semua yang sedang dan akan anda lakukan.
Download tutorial ini dalam format pdf: 

 

Term Of Service

Untuk mengetahui tentang penggunaan blog ini, silahkan buka halaman Term Of Service atau klik TOS untuk langsung membuka halaman Term Of Service

Privacy Policy

Untuk mengetahui kebijakan privacy dalam blog ini, silahkan buka halaman Privacy Policy atau klik Disini untuk langsung membuka halaman Privacy Policy