BAB I
MENGENAL POWERBUILDER, JENIS-JENIS WINDOW,
MEMBUAT MENU
Workspace
Target
Library
Object Application
1.2 Jenis-jenis Window
Jika anda cukup teliti, sewaktu mendisain sebuah objek window terdapat sebuah property yang
bernama WindowType yang nilainya bisa dipilih antara child!, main!, mdi!, mdihelp!, popup! dan
response!, tipe window itu akan menentukan bagaimana objek itu ditampilkan.
1. Tipe mdi! dan mdihelp!
Hanya bisa digunakan untuk sebuah window utama/menu. MDI adalah kependekan dari Multiple
Document Interface, artinya window tersebut adalah sebuah antar muka yang didalamnya dapat
dibuka lagi window-window lain.
2. Tipe main!
Adalah yang paling sering digunakan untuk antarmuka pada umumnya. Window main adalah
window yang ditampilkan didalam window mdi atau mdihelp.
3. Tipe child!
Adalah window yang dibuka dari tipe window lain, dan dianggap sebagai subwindow tersebut,
tapi ini jarang digunakan.
4. Tipe popup!
Adalah window yang dibuka dari window main dan umumnya digunakan untuk tujuan window
dialog.
5. Tipe response!
Adalah jenis window dialog yang selama sebuah window response terbuka maka ialah yang
mendapat fokus dan pengguna tidak dapat beralih dari window itu sampai ia ditutup.
1. Jalankan menu File > New, klik tab PB Object dan pilih Window.
2. Sebuah window baru akan ditampilkan pada window painter.
Jalankan menu Insert > Control. Tampak bahwa PowerBuilder mempunyai banyak sekali kontrol
yang bisa diletakkan pada sebuah window atau dapat menggunakan control pada power bar.
3. Pilih Static Text untuk membuat sebuah text, ketikan window 1, kemudian simpan dengan
nama w_1.
4. Buat kembali window baru dengan menjalankan menu File > New >, klik tab PB Object dan
pilih kembali Window.
5. Pilih Static Text untuk membuat sebuah text, ketikan window 2, kemudian simpan dengan
nama w_2.
6. Kembali pada window 1, pilih CommandButton kemudian ketik Tampilkan window 2.
7. Pada window 1, DoubleClick CommandButton kemudian pada event clicked ketikan kode
program: Open(w_2)
8. DoubleClick pada Object Application kemudian ketikan kode program Open(w_1). Object
Application berfungsi untuk memanggil window yang pertama kali dijalankan pada aplikasi,
9. Jalankan program dengan mengklik icon Run pada power bar atau dengan menekan tombol
Ctrl + R
Coba klik tombol Tampilkan Window 2 maka window 2 akan tampil sesuai perintah.
untuk melihat jenis-jenis type window rubahlah window type pada properties menjadi type
window yang lain.
BAB II
DASAR-DASAR POWERSCRIPT
7. Double
Angka floating-point dengan presisi 15 digit, jangkauan tipe data ini adalah dari
2,2250738585073E-308 hingga 1,79769313486231E+308
8. Integer atau int
Angka bulat 16 bit yang jangkauannya dari -32768 hingga +32767, contoh:
1
123
1200
+55
-32
9. Long
Angka bulat 32 bit yang jangkauannya dari -2.147.438.648 hingga +2.147.483.647
10. Real
Angka floating-point dengan presisi 6 digit dan jangkauannya dari 1,175495E -38
hingga3,402822E+38
11. String
Karakter-karakter ASCII yang panjangnya tidak ditentukan, contoh :
String a
a=ini adalah string
12. Time
Waktu dalam format 24 jam meliputi jam, menit, detik untuk mendefinisikan nilai waktu.
13. Unsignedinteger, unsignedint atau uint
Angka bulat positif 16 bit dari 0 hingga 65.535
14. Unsignedlong atau ulong
Angka bulat positif 32 bit dari 0 hingga 4.294.967.295
Tipe-tipe data diatas akan sering digunakan ketika anda mendeklarasikan variabel, tapi anda perlu
mengetahui sebuah istilah yang disebut identifier yaitu nama yang digunakan untuk
mendeklarasikan variabel, konstanta, objek, control, fungsi dan sebagainya.
2.2 Variabel
Variabel adalah identifier yang digunakan untuk menampung data sebelum sebuah variabel
digunakan dalam sebuah kode program, ia harus di deklarasikan terlebih dahulu.
1. Global
Variabel-variabel ini dapat diakses dari mana saja di dalam sebuah aplikasi. Ia tidak tergantung
pada definisi objek apapun. Variabel global dapat dideklarasikan menggunakan sebuah painter,
seperti application painter, window painter, user object painter, atau menu painter.
2. Instance
Variabel-variabel ini diasosiasikan dengan sebuah objek sehingga variabel ini bias dianggap
sebagai sebuah property dari objek yang bersangkutan. Variabel instance dapat dideklarasikan
menggunakan sebuah painter.
Ketika sebuah variabel instance dideklarasikan pada sebuah objek window, menu, atau
application, variabel tersebut diinisialisasikan ketika objeknya dibuka. Nilai awal variabel itu
adalah nilai default untuk tipe data yang bersesuaian. Ketika objek ditutup , variabel instance juga
dihapus. Ketika objek itu dibuka lagi, variabel instance diinisialisasi lagi dari awal.
3. Shared
Variabel-variabel ini diasosiasikan dengan sebuah objek, namun mereka tidak bias dianggap
sebagai property objek tersebut karena variabel-variabel shared hanya bisa diakses oleh kode
program yang ada di dalam objek yang bersangkutan (private). Variabel shared sebuah objek
akan mempertahankan nilainya ketika objek tersebut ditutup dan dibuka lagi. Variabel shared
dapat dideklarasikan menggunakan sebuah painter.
4. Local
Variabel-variabel yang hanya dikenal didalam kode program yang mendefinisikannya. Ketika
kode program tersebut berakhir, hidup variabel-variabel ini juga berakhir dan nilai-nilainya
hilang. Variabel local langsung dideklarasikan di dalam kode program, misalnya pada sebuah
event atau fungsi.
BAB III
OOP POWERBUILDER (INHERITANCE DAN POLYMORPHISM)
3.2 Polymorphism
1. Buka window w_ancestor dan letakkan control CommandButton dengan teks Klik saya dan
ketikan kode program pada event Clicked, simpan dan tutup w_ancestor.
2. Buka w_turunan1 untuk menulis kode program di event clicked pada tombol klik saya.
3. Simpan dan tutup w_turunan1
4. Buka w_turunan2 dan ketik kode program pada event clicked pada tombol klik saya
5. Simpan dan tutup w_turunan2
6. Jalankan program dan buka ketiga window tersebut secara bergantian.
Namun ketika window turunan1 dan turunan2 dibuka tombol yang sama akan menampilkan
pesan dari ancestor diikuti pesan dari masing-masing turunan. Artinya kode program ancestor
akan dijalankan terlebih dahulu kemudian kode program dari objek itu sendiri
7. Untuk mengubah alur tersebut buka w_turunan1 dan buka script untuk objek tombol klik saya
pada event clicked.
8. Klik kanan pada window script, hilangkan tanda check pada Extend Ancestor Script.
9. Simpan perubahan dan jalankan program
BAB IV
KONEKSI DATABASE
4.1 Membuat Database
Sebelum membuat aplikasi terlebih dahulu mempersiapkan database sebagai tempat
penyimpanan data. Pada latihan ini kita akan membuat aplikasi sederhana penggajian karyawan
dengan susunan table Karyawan, Tunjangan dan Gaji menggunakan database SQL Server.
1. Tabel karyawan
Column Name Data Type Length
Nip Char 10 *
Nama Varchar 35
Alamat Varchar 50
Tmp_Lahir Varchar 35
Tgl_Lahir Datetime -
Agama Varchar 25
J_Kelamin Varchar 25
Status Varchar 25
2. Tabel Tunjangan
Column Name Data Type Length
Kd_Tunjangan Char 5 *
Nama_Tunjangan Varchar 35
Nominal Numeric 9
3. Tabel Gaji
Column Name Data Type Length
No_Gaji Char 10 *
Nip Char 10 **
Kd_Tunjangan Char 5 **
Gapok Numeric 9
Total Numeric 9
Pot_Pajak Numeric 9
Gaji_Bersih Numeric 9
Keterangan :
* Primary Key
** Foreign Key
2. Setelah jendela database painter terbuka klik kanan pada MSS Microsoft SQL > New Profile
3. Kemudian isikan
Profile Name : nama profile
Server : diambil dari server local pada MSSQL Server
Login ID : sa
Password : kosongkan
Database : nama database pada MSSQL Server
4. Setelah selesai kemudian klik tab Preview > Test Connection jika berhasil maka akan tampil
pesan Connection Succesful seperti tampilan dibawah ini.
5. Pada tab Preview terlihat kode program yang secara otomatis dibuatkan oleh database painter,
kemudian Copy/salin kode program tersebut kemudian klik Ok.
6. Pada database painter telah tampil database profile yang baru saja dibuat, kemudian klik kanan
pilih Connect.
7. Setelah terhubung dengan database profile kemudian klik ganda pada object application
kemudian paste atau tempatkan kode program yang telah anda copy/salin dari database profile.
Dan tambahkan kode program dibawah ini:
CONNECT;
IF SQLCA.SQLDBCode <> 0 THEN
Messagebox("Koneksi gagal",SQLCA.SQLErrText,stopsign!)
HALT CLOSE
END IF
8. Kemudian simpan object application yang telah berisikan kode program.
4.3 Koneksi Database Ms Access
1. Untuk koneksi database Ms Access terlebih dahulu harus membuat ODBC Data Source Name
(ODBC DSN). Buka control panel > Administrative Tools > DataSources(ODBC) > pilih System
DSN > klik Add > Pilih Microsoft Access Driver(mdb) atau Microsoft Access Driver(mdb,accdb)
> Finish
2. Isi data source name kemudian klik select, cari alamat database yang telah dibuat, klik Ok.
3. Maka sebuah datasource(ODBC) telah dibuat, klik Ok.
4. Setelah Data Source Name (ODBC DSN) terbentuk, kembali pada powerbuilder, kemudian
klik kanan pada database profile ODB ODBC > New Profile.
5. Kemudian isikan
Profile Name : nama profile
Data Source : pilih datasource yang telah dibuat
Login ID : sa
Password : kosongkan
6. Setelah selesai kemudian klik tab Preview > Test Connection jika berhasil maka akan tampil
pesan Connection Succesful seperti tampilan dibawah ini
7. Pada database painter telah tampil database profile yang baru saja dibuat, kemudian klik kanan
pilih Connect.
8. Setelah terhubung dengan database profile kemudian klik ganda pada object application
kemudian paste atau tempatkan kode program yang telah anda copy/salin dari database profile.
Dan tambahkan kode program dibawah ini:
CONNECT;
IF SQLCA.SQLDBCode <> 0 THEN
Messagebox("Koneksi gagal",SQLCA.SQLErrText,stopsign!)
HALT CLOSE
END IF
9. Kemudian simpan object application yang telah berisikan kode program.
BAB V
MENU APLIKASI PENGGAJIAN
3. Untuk menjalankan program buka Object Application dan tambahkan kode program
Open(w_menu)
4. Simpan perubahan dan jalankan program
BAB VI
OBJEK DATAWINDOW
Kode program tersebut digunakan untuk menonaktifkan data window sehingga user diharuskan
mengklik tombol Tambah terlebih dahulu sebelum melakukan entri data.
3. Klik ganda pada tombol Tambah dan ketik kode program dibawah ini pada event clicked.
Dw_1.object.datawindow.readonly=no mengaktifkan DataWindow
Long i
i=dw_1.insertrow(0)
dw_1.scrolltorow(i)
dw_1.setfocus()
dw_1.setcolumn(1)
4. Ketik kode program untuk tombol Batal pada event clicked
dw_1.object.datawindow.readonly='yes'
dw_1.retrieve()
5. Ketik kode program untuk tombol Simpan pada event clicked.
If dw_1.update() = 1 then
Messagebox(Pesan,Suksess..,information!)
dw_1.object.datawindow.readonly='yes'
Else
Messagebox(Pesan,Gagal..,information!)
End if
6. Ketik kode program untuk tombol Rubah pada event clicked.
dw_1.object.datawindow.readonly=no
Dw_1.setfocus()
Dw_1.setcolumn(1)
4. Letakkan pada dw_karyawan dan pada exspression ketik kode program berikut:
Latihan 1:
Buatlah form entri data Tunjangan lengkap dengan tombol navigasi seperti contoh diatas.
BAB VIII
DROPDOWN DATAWINDOW, DATAWINDOW DENGAN PARAMETER
Dropdown DataWindow pada dasarnya menampilkan sebuah kolom dari tabel tertentu jika terjadi
perubahan atau penambahan data pada tabel itu maka perubahan itu akan tercermin juga pada
Dropdown DataWindow. Pada entri transaksi penggajian terdapat data yang di entri dari tabel lain
misalnya NIK yang diambil dari tabel karyawan.
8.1 DataWindow Transaksi
1. Buatlah DataWindow pilih Freeform.
2. Pilih SQL Select > Ok
3. PowerBuilder akan menampilkan layar baru, pilih tabel Gaji dan Tunjangan > Open
4. Pilih semua kolom pada tabel Gaji dan pada tabel Tunjangan cukup pilih Nominal saja, hal ini
dikarenakan untuk penjumlahan yang mencakup nominal dari tabel Tunjangan.
5. Klik File > Return to DataWindow Painter
6. Simpan dengan nama dw_penggajian
7. Buatlah window untuk dw_karyawan lengkap dengan tombol navigasinya.
8. Simpan dengan nama w_penggajian.
select tunjangan.kd_tunjangan,tunjangan.nominal
into :ls_kd_tunjangan,:a
from tunjangan
where tunjangan.kd_tunjangan=:ls_kd_tunjangan
;
dw_1.object.tunjangan_nominal[getrow()]=a
end choose
3. Simpan perubahan dan jalankan program
BAB IX
ARITHMETIC OPERATORS
Operator digunakan untuk membuat kalkulasi aritmetika, membandingkan nilai, manipulasi teks,
operasi logikal dan sebagainya.
Operator aritmetika
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
^ Pangkat
Pada transaksi penggajian kolom Total digunakan untuk menjumlahkan tunjangan dan gaji pokok
secara otomatis, ikutilah langkah-langkah berikut:
9.1 Membuat Total Gaji
1. Buka w_penggajian dan klik ganda pada dw_1 pada event itemchanged tambahkan kode
program berikut:
dw_1.accepttext()
dw_1.object.gaji_total[getrow()]=dw_1.object.tunjangan_nominal[getrow()] + &
dw_1.object.gaji_gapok[getrow()]
2. Simpan perubahan dan jalankan program
Latihan 2:
Buatlah perhitungan gaji bersih dengan kriteria :
Total Pot_Pajak = Gaji_Bersih
BAB X
DATAWINDOW LAPORAN
Telah disebutkan, bahwa fungsi utama objek DataWindow adalah sebagai antar muka untuk
berinteraksi dengan database. Interaksi yang dimaksud adalah memanipulasi data (tambah, batal,
simpan, rubah, hapus) atau menampilkan data. Berkaitan dengan penampilan. DataWindow
digunakan untuk menyajikan data kepada pengguna sebatas untuk inquiry. Khusus pada bab ini
akan diuraikan bagaimana anda dapat menambahkan fitur pencetakan data atau laporan pada
aplikasi anda dengan menggunakan objek DataWindow.
10.1 Laporan Berbentuk Tabular
Untuk yang pertama akan diperlihatkan cara membuat laporan data karyawan yang sederhana.
1. Buatlah sebuah objek DataWindow baru dan pilih Tabular.
2. Pilih sumber datanya sebagai SQL Select. Klik Next
3. Pilihlah table yang akan dibuat DataWindow untuk laporan, saat ini pilihlah tabel karyawan >
open maka akan tampil kolom-kolom dari tabel karyawan
4. Klik satu persatu kolom dari tabel karyawan atau untuk memilih semua kolom sekaligus, klik
kanan pada tabel karyawan dan pilih Select All.
5. Apabila sudah selesai jalankan menu File > Return DataWindow Painter untuk melanjutkan.
Window dialog akan muncul saat ini tidak perlu melakukan apa-apa klik Next > Finish.
6. Desain tampilan DataWindow untuk laporan
7. Untuk membuat judul laporan, geser kebawah header 1 berikut kolom untuk memberikan
ruang pada judul laporan. Kemudian tambahkan line untuk membuat garis.
8. Untuk menambahkan Jumlah Karyawan, geser kebawah summary 1 untuk memberi ruang.
9. Klik Computed Field untuk ekspresi perhitungan jumlah karyawan, kemudian ketikan kode
program:
Currentrow()
10. Klik verify, kemudian Ok.
11. Simpan dengan nama dw_lap_karyawan
10.2 Laporan Berbentuk Grafik
Pada DataWindow dapat dibuat laporan grafik dengan bentuk yang baragam tipe, diagram garis
atau b, r, baik 2D maupun 3D. laporan dengan bentuk ini umumnya mempunyai perintah
SELECT yang lebih sederhana karena data yang akan ditampilkan biasanya berbentuk summary.
1. Buatlah DataWindow dengan tipe Graph
2. Piih tabel Karyawan, Tunjangan, dan Gaji untuk merelasikan antar tabel > Return to
DataWindow Painter.
3. Pada kolom Category pilih berdasarkan NIK dan Kolom Values pilih jumlah dari Gaji Bersih >
Next.
4. Pada Title Ketikan Grafik Penggajian > Next. > Finish
5. Untuk merubah Text Category. Pada properties pilihan Axis rubah menjadi Category, pada
label ketikan NIK Karyawan
6. Untuk merubah Text Values. Pada properties pilihan Axis rubah menjadi Values, pada label
ketikan Gaji Bersih
7. Simpan dengan nama dw_lap_grafik
BAB XI
WINDOW LAPORAN
Semua laporan yang dibuat tadi tentunya harus dapat ditampilkan kepada pengguna. Untuk
melakukan itu, kita harus membuat sebuah objek Window dengan kontrol DataWindow sehingga
objek-objek DataWindow tadi bisa ditampilkan didalamnya.
11.1 Membuat Window Laporan
1. Buatlah sebuah objek Window
2. Letakkan sebuah objek DataWindow laporan karyawan.
3. Klik ganda pada Window event open dan ketikan kode program
Dw_1.settransobject(sqlca)
Dw_1.retrieve()
4. Simpan dengan nama w_karyawan
11.2.3 Ruler
1. Tambahkan kontrol CheckBox untuk Ruler
2. Klik ganda pada CheckBox event clicked dan ketikkan kode program
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
3. Simpan perubahan
11.2.5 Save As
1. Buatlah kontrol CommandButton untuk tombol Save As
2. Klik ganda pada tombol event clicked dan ketikkan kode program
dw_1.saveas()
3. Simpan perubahan
BAB XII
APLIKASI EXE
Pada bab ini kita akan membuat executable file (EXE) dari kode program yang sudah kita
kembangkan selama ini.
12.1 Membuat File Exe
1. Jalankan menu File > New, kemudian pilih tab Project dan pilih Application > Ok
2. Pada layar ditampilkan sebuah form untuuk mempersiapkan proses compiling. Pada kolom
Executable File Name pilih lokasi penyimpanan dan ketiklah nama file.
3. Pada Rebuild, pilih Full untuk meng-compile keseluruhan kode program, jika memilih
Incremental PowerBuilder hanya akan meng-compile bagian kode program yang diubah dari saat
compiling terakhir.
4. Machine Code
Pcode (kependekan dari Pseudocode) adalah bahasa yang diiinterpretasikan dan didukung oleh
semua platform PowerBuilder. Format ini sama dengan yang PowerBuilder gunakan didalam
kode program (file PBL) untuk objek-objek individual, tapi dalam kondisi bisa eksekusi.
Keuntungan Pcode adalah portability.
Machine Code adalah format executable atau dynamic library pada umumnya. Keuntungan dari
Machine Code adalah kecepatan eksekusi.
5. Klik menu Run > Full Build Workspace.
6. Jika sudah selesai sebuah file .exe akan terdapat pada folder penyimpanan.
Latihan 3
Buatlah sistem aplikasi point of shale dengan struktur tabel sebagai berikut:
1. Tabel Customer
Column Name Data Type Length
Kd_Customer Char 10 *
Nama Varchar 35
Alamat Varchar 50
Tlp Varchar 35
2. Tabel Barang
Column Name Data Type Length
Kd_Barang Char 5 *
Nama_Barang Varchar 25
Merk Varchar 25
3. Tabel Penjualan
Column Name Data Type Length
No_Penjualan Char 10 *
Kd_Cutromer Char 10 **
Kd_Barang Char 5 **
Tanggal Datetime -
Jumlah_Barang Numeric 9
Harga_Satuan Numeric 9
Total Numeric 9
Discount Numeric 9
Jumlah_Discount Numeric 9
Jumlah_Bayar Numeric 9
Kriteria Transaksi:
Total = Jumlah_Barang * Harga_Satuan
Jumlah_Discount = Total * Discount / 100
Jumlah_Bayar = Total - Jumlah_Discount
Keterangan :
* Primary Key
** Foreign Key
string sTemp
long lRowCount, lColCount, i, j
dwitemstatus l_status
SetPointer(HourGlass!)
lRowCount = dw.RowCount()
lColCount = long(dw.Describe("DataWindow.Column.Count"))
if dw.AcceptText() = -1 then return -1
RETURN 1
Posted by setiawanthea at 9:07 PM 0 comments
Cari nama parent window pada suatu object (Powerbuilder)
///////////////////////////////////////////////////////////////////////////////////////
//
// function : uf_parentwindow
// Purpose : return parent window
// Scope : Public
// Arguments : graphicobject - ao_grapobj
// Returns : window
//
// Modification Log
// ================
// NAME VER DATE DESCRIPTION
//
//------------------ ---------------------------------------------
// setiawanthea 1.0
//
///////////////////////////////////////////////////////////////////////////////////////
//--------------------------Start of declarations----------------------------//
graphicobject lgr
window lwin
lgr = ao_grapobj
if isnull(lgr) or not(isvalid(lgr)) then
return lwin
end if
return lwin
Posted by setiawanthea at 8:48 PM 0 comments
validasi time (Powerbuilder)
//////////////////////////////////////////////////////////////////////////////////
//
// Purpose : validasi time (hh:mm:ss:ff)
// Scope : Public
// Arguments : as_time - strring
// Returns : long
//
//////////////////////////////////////////////////////////////////////////////////
//*****************Start of Code****************//
if isnull(as_time) then
return true
end if
if len(as_time) = 8 then
else
return false
end if
if isnumber(as_time) then
else
return false
end if
if mid(as_time,3,2) < '00' then return false // cek menit if mid(as_time,5,2) < '00' then return false // cek
detik if mid(as_time,7,2) < '00' then return false // cek frame return true //*****************End of
Code****************// Cara Pake nya masukan syntak dibawah kedalam datawindow - Validation
Expression di kolom yang akan di validasi f_time_valid( gettext())
Posted by setiawanthea at 8:48 PM 0 comments
Status Baris Data (Powerbuilder)
////////////////////////////////////////////////////////
// Purpose : Cek Status Kolom
//
// Scope :
// Arguments :
// Returns :
//
///////////////////////////////////////////////////////
//*****************Start of Code****************//
dwitemstatus ldw_st
ldw_st = nama_dw.getitemstatus(nama_dw.getrow(),0,Primary!)
if ldw_st = new! then
messagebox("check",'new')
elseif ldw_st = newmodified! then
messagebox("check",'newmodified')
elseif ldw_st = datamodified! then
messagebox("check",'datamodified')
elseif ldw_st = notmodified! then
messagebox("check",'notmodified')
else
messagebox("check",'others')
end if
//*****************End of Code****************//
Posted by setiawanthea at 8:46 PM 0 comments
Older Posts Home
Subscribe to: Posts (Atom)
Validasi untuk Requeired Column
// function : f_cek_required( datawindow dw )
// deskripsi : Untuk mencek column-column yang harus diisi (required)
// dan menampilkan pesan jika column tsb tidak diisi.
// Required column tsb harus diberi sesuai dengan
// label column tsb.
// return : 1 (success) , -1 (ada column yg tidak diisi)
string sTemp
long lRowCount, lColCount, i, j
dwitemstatus l_status
SetPointer(HourGlass!)
lRowCount = dw.RowCount()
lColCount = long(dw.Describe("DataWindow.Column.Count"))
if dw.AcceptText() = -1 then return -1
RETURN 1
Posted by setiawanthea at 9:07 PM 0 comments
Cari nama parent window pada suatu object (Powerbuilder)
///////////////////////////////////////////////////////////////////////////////////////
//
// function : uf_parentwindow
// Purpose : return parent window
// Scope : Public
// Arguments : graphicobject - ao_grapobj
// Returns : window
//
// Modification Log
// ================
// NAME VER DATE DESCRIPTION
//
//------------------ ---------------------------------------------
// setiawanthea 1.0
//
///////////////////////////////////////////////////////////////////////////////////////
//--------------------------Start of declarations----------------------------//
graphicobject lgr
window lwin
lgr = ao_grapobj
if isnull(lgr) or not(isvalid(lgr)) then
return lwin
end if
lwin = lgr
return lwin
Posted by setiawanthea at 8:48 PM 0 comments
validasi time (Powerbuilder)
//////////////////////////////////////////////////////////////////////////////////
//
// Purpose : validasi time (hh:mm:ss:ff)
// Scope : Public
// Arguments : as_time - strring
// Returns : long
//
//////////////////////////////////////////////////////////////////////////////////
//*****************Start of Code****************//
if isnull(as_time) then
return true
end if
if len(as_time) = 8 then
else
return false
end if
if isnumber(as_time) then
else
return false
end if
if mid(as_time,3,2) < '00' then return false // cek menit if mid(as_time,5,2) < '00' then return false // cek
detik if mid(as_time,7,2) < '00' then return false // cek frame return true //*****************End of
Code****************// Cara Pake nya masukan syntak dibawah kedalam datawindow - Validation
Expression di kolom yang akan di validasi f_time_valid( gettext())
Posted by setiawanthea at 8:48 PM 0 comments
Status Baris Data (Powerbuilder)
////////////////////////////////////////////////////////
// Purpose : Cek Status Kolom
//
// Scope :
// Arguments :
// Returns :
//
///////////////////////////////////////////////////////
//*****************Start of Code****************//
dwitemstatus ldw_st
ldw_st = nama_dw.getitemstatus(nama_dw.getrow(),0,Primary!)
if ldw_st = new! then
messagebox("check",'new')
elseif ldw_st = newmodified! then
messagebox("check",'newmodified')
elseif ldw_st = datamodified! then
messagebox("check",'datamodified')
elseif ldw_st = notmodified! then
messagebox("check",'notmodified')
else
messagebox("check",'others')
end if
//*****************End of Code****************//
Posted by setiawanthea at 8:46 PM 0 comments
Fungsi Terbilang (Powerbuilder)
//-----
num = truncate(num,0)
//------
double a, b
double c, d
boolean suff, done
string abjad[9]
string str_milyar, str_juta, str_ribu, str_satuan, str
double e1,e2,e3, tmp, tmp2, ix, jx
if num = 0 then
return('Nol')
end if
suff = true
str = ''
str_milyar = ''
str_juta = ''
str_ribu = ''
str_satuan = ''
abjad[1] = 'satu'
abjad[2] = 'dua'
abjad[3] = 'tiga'
abjad[4] = 'empat'
abjad[5] = 'lima'
abjad[6] = 'enam'
abjad[7] = 'tujuh'
abjad[8] = 'delapan'
abjad[9] = 'sembilan'
a = 100000
b = 1000000
ix = c * d
done = false
do while (not done)
// first
e1 = int(num / ix)
tmp = mod(num, ix)
num = num - (e1 * ix)
// second
e2 = int(tmp/ (ix/10) )
tmp2 = mod(tmp, (ix/10) )
num = num - (e2 * (ix/10))
// third
e3 = int(tmp2/ (ix/100) )
num = num - (e3 * (ix/100))
if e1=1 then
str = str + 'seratus '
else
if (e1 > 1 and e1 <= 9) then
str = str + abjad[e1] + ' ratus '
end if
end if
if (e3=1) and (ix=100000) and (e1=0) and (e2=0) then //RIBUAN => SERIBU
str = str + 'se'
else
if (e3>=1 and e3<=9 and e2<>1) then
str = str + abjad[e3] + ' '
end if
end if
// end if
end if
e1=0
e2=0
e3=0
ix = ix/1000
if num<1>
done = true
end if
loop
// Decimal Handling
// See The Algorithm
integer num_koma
// Manipulate The Value
num_koma = num * 100
//--------------------------------------Start of Code------------------------------//
TreeViewItem ltvi_root
TreeViewItem ltvi_NextTreeViewItem
TreeViewItem ltvi_CurrentTreeViewItem
//--------------------------------------Start of Code------------------------------//
TreeViewItem ltvi_root
TreeViewItem ltvi_NextTreeViewItem
TreeViewItem ltvi_CurrentTreeViewItem
//tv_1.CollapseItem( ll_current )
ldec_10 = dec(string(datetime(today(),now()),'yyyymmddhhmmssffff'))
// generates a unique rowid based on time
// convert ke bilangan basis 62
do until ldec_10 = 0
ls_temp = string(ldec_10 / 62)
ldec_int = dec(mid(ls_temp,1,pos(ls_temp,'.')))
//ldec_int = int(ls_temp)
if ldec_int = 0 then ldec_int = dec(mid(ls_temp,1,pos(ls_temp,',')))
ls_62 = ic_simbol[ldec_10 - 62 * ldec_int + 1] + ls_62
ldec_10 = ldec_int
loop
Long ll_Start
Long ll_OldLen
Long ll_NewLen
String ls_Source
//Check parameters
If IsNull(as_source) or IsNull(as_old) or IsNull(as_new) or IsNull(ab_ignorecase) Then
string ls_null
SetNull(ls_null)
Return ls_null
End If
Return as_Source
Posted by setiawanthea at 5:26 AM 0 comments
Powerbuilder Linkage
/************ Setting Linkage ************/
dw_name.of_SetLinkage(True)
child_dw.inv_linkage.of_SetMaster(master_dw)
child_dw.inv_linkage.of_SetStyle(2)
child_dw.inv_linkage.of_Register('child_col_name','master_col_name')