Social Icons

google plustwitterfacebookinstagramlinkedinrss feedcontact me

Selasa, 07 Oktober 2014

Membuat Program Biodata Karyawan Part 9

Sampai pada bagian kedelapan (Tutorial MembuatProgram Biodata Karyawan Part 8) sebenarnya program biodata karyawan ini telah selesai, dimana hingga bagian kedelapan tutorial ini kita telah dapat menjalankan program biodata karyawan ini, mulai dari login, penginputan atau pengeditan data user dan data karyawan, hingga pencetakan laporan tentang daftar nama-nama karyawan yang telah diinput. Jika anda rasa menu Ganti Password dan menu Tentang Program tidaklah penting untuk ada dalam program ini, maka anda bisa langsung menghapus menu tersebut dan langsung melakukan Build dan Deploy Workspace lalu mendistribusikan file-file yang dibutuhkan pada komputer server/client. Untuk pembahasan mengenai cara Build dan Deploy Workspace serta cara mendistribusikan file-file runtime akan kita bahas nanti.

Pada bagian kesembilan dari Tutorial Membuat Program Biodata Karyawan ini, kita akan membuat window yang akan dapat digunakan sebagai sarana oleh user yang sedang login atau membuka program ini untuk mengganti password loginnya. Sebenarnya untuk pembuatan window ganti password ini dapat dilakukan dengan setidaknya dua cara, yaitu dengan datawindow atau tanpa datawindow dalam windownya.

Karena program yang kita buat menggunakan Powerbuilder, maka untuk saat ini saya akan fokuskan pada cara pertama yaitu dengan menggunakan datawindow, karena datawindow bisa dibilang merupakan fitur utama dari Powerbuilder, oleh karena itu akan sangat “sia-sia” jika kita menggunakan Powerbuilder tetapi datawindownya tidak atau kurang maksimal digunakan.

Untuk langkah-langkahnya adalah sebagai berikut:
Buka workspace biokaryawan pada Powerbuilder Classic 12
Klik File->New lalu pilih tab Datawindow dan pilih Freeform seperti gambar dibawah ini:

Klik OK
Pilih SQL Select, seperti gambar ini:

Klik Next
Pada jendela Select Tables, pilih karyawan.tbl_user, seperti gambar dibawah ini:

Klik Open
Pada jendela Table Layout, pilih kolom user_id, user_name dan user_password, seperti gambar ini:

Klik menu Design lalu pilih Retrieval Arguments…
Pada kotak Name, ketikkan: ra_uid, pada kotak Type pilih Number, seperti gambar ini:

Klik OK
Pilih tab Where dibawah Table Layout, pada kotak Column pilih: karyawan.tbl_user.user_id, pada kotak Operator pilih =, pada kotak Value ketikkan :ra_uid, sehingga seperti ini:

Klik menu Design lalu pilih Convert To Syntax, sehingga tampilan Table Layout akan seperti ini:

Tambahkan syntx sql berikut ini diantara karyawan.tbl_user.user_password dan FROM karyawan.tbl_user:
karyawan.tbl_user.user_password AS password_lama, 
karyawan.tbl_user.user_password AS password_baru, 
karyawan.tbl_user.user_password AS password_konfirm 
Jangan lupa untuk menambahkan tanda koma (,) diakhir syntax karyawan.tbl_user.user_password
Sehingga syntax sql akan seperti ini:

Tutup jendela syntx sql ini, pilih Yes pada pesan konfirmasi perubahannya
Pilih White pada Background Color, seperti gambar ini:

Klik Next, maka akan tampil jendela berikut ini:

Klik Finish untuk membuat datawindownya
Hapus kolom user_id dan Text user_id_t
Atur properti Case menjadi Upper (1)  untuk semua kolom (Buka tab Edit pada jendela propertiesnya)
Berikan tanda pada properti Password pada kolom: user_password, password_lama, password_baru dan password_konfirm (Pada tab Edit di jendela propertiesnya)
Atur properti Protect pada kolom user_name dan user_password, dengan memasukkan nilai 1 pada Expressionnya (pada tab General di jendela propertiesnya)
Hilangkan tanda pada properti Visible dari kolom user_password dan Text user_password_t
Atur layout dan backgroundnya, hingga jika diretrieve akan seperti ini:

Atur Tab Ordernya menjadi seperti ini:
Nama Kolom
Tab Order
user_name
0
password_lama
10
password_baru
20
password_konfirm
30
user_password
0
Klik Menu Rows lalu pilih Update Properties…
Pastikan Allow Updates sudah ditandai, dan table to update sudah benar (karyawan.tbl_user)
Hilangkan pemilihan pada password_lama, password_baru dan password_konfirm, pastikan pengaturannya seperti gambar dibawah ini:

Jika sudah sesuai dengan gambar diatas, klik OK
Simpan datawindow ini dengan nama d_ganti_password

Buka window w_password, lalu masukkan control-control berikut ini:
Control
Nama Control
Keterangan
Datawindow
dw_password
DataObject = d_ganti_password
Command Button
cb_simpan
Text = &Simpan
Command Button
cb_batal
Text = &Batal
Atur layoutnya hingga seperti ini:

Sampai disini kita telah selesai mendesain layout dari w_password, langkah selanjutnya adalah penulisan script kodenya, silahkan lakukan berikut ini:

Buka event Open dari w_password, lalu masukkan script berikut ini (dibawah This.Move(5,5)):
String ls_password
// atur objek transaksi ke SQLCA
dw_password.SetTransObject(SQLCA)
// retrieve data berdasarkan user ID user yang sedang login
IF dw_password.Retrieve(gl_user_id) > 0 THEN // data berhasil diretrieve
            // atur ls_password menjadi null
            SetNull(ls_password)
            // atur nilai kolom "dummy" menjadi null
            dw_password.SetItem(dw_password.GetRow(), "password_lama", ls_password)
            dw_password.SetItem(dw_password.GetRow(), "password_baru", ls_password)
            dw_password.SetItem(dw_password.GetRow(), "password_konfirm", ls_password)
            // aktifkan dw_password
            dw_password.SetFocus()
ELSE // data tidak berhasil diretrieve karena terjadi kesalahan atau user id tidak ditemukan
            // tampilkan pesan error
            MessageBox("Error", "Data error, harap hubungi administrator.", StopSign!)
END IF

Buka event Clicked dari cb_simpan, lalu masukkan script kode berikut ini:
String ls_password, ls_passwordlama, ls_passwordbaru, ls_passwordkonfirm
String ls_valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
Char lc_karakter
Integer li_loop, li_ok = 0
// terima data yang dimasukkan oleh user
dw_password.AcceptText()
ls_password = dw_password.GetItemString(dw_password.GetRow(), "user_password")
ls_passwordlama = dw_password.GetItemString(dw_password.GetRow(), "password_lama")
ls_passwordbaru = dw_password.GetItemString(dw_password.GetRow(), "password_baru")
ls_passwordkonfirm = dw_password.GetItemString(dw_password.GetRow(), "password_konfirm")
// cek null atau string kosong
IF IsNull(ls_passwordlama) OR Trim(ls_passwordlama, True) = "" THEN
            MessageBox("Warning", "Masukkan password lama anda.", Exclamation!)
            dw_password.SetColumn("password_lama")
            dw_password.SetFocus()
            Return
ELSEIF IsNull(ls_passwordbaru) OR Trim(ls_passwordbaru, True) = "" THEN
            MessageBox("Warning", "Masukkan password baru anda.", Exclamation!)
            dw_password.SetColumn("password_baru")
            dw_password.SetFocus()
            Return
ELSEIF IsNull(ls_passwordkonfirm) OR Trim(ls_passwordkonfirm, True) = "" THEN
            MessageBox("Warning", "Masukkan konfirmasi password baru anda.", Exclamation!)
            dw_password.SetColumn("password_konfirm")
            dw_password.SetFocus()
            Return
END IF
// cek kesesuaian password baru dan konfirmasinya
IF ls_passwordbaru <> ls_passwordkonfirm THEN
            MessageBox("Warning", "Password baru anda tidak sama dengan konfirmasinya.", Exclamation!)
            dw_password.SetColumn("password_baru")
            dw_password.SetFocus()
            Return
END IF
// cek kesesuaian password lama
IF ls_passwordlama <> ls_password THEN
            MessageBox("Warning", "Password lama anda salah.", Exclamation!)
            dw_password.SetColumn("password_lama")
            dw_password.SetFocus()
            Return
END IF
// cek panjang karakter pada password baru
IF LenA(ls_passwordbaru) < 5 THEN
            Messagebox("Warning", "Password minimal 5 karakter.", Exclamation!)
            dw_password.SetColumn("password_baru")
            dw_password.SetFocus()
            Return
END IF
// cek karakter yang dimasukkan pada password baru
FOR li_loop = 1 TO LenA(ls_passwordbaru)
            lc_karakter = Char(MidA(ls_passwordbaru, li_loop, 1))
            IF PosA(ls_valid, lc_karakter) = 0 THEN
                        li_ok ++
                        MessageBox("Warning", "Password hanya boleh diisi dengan karakter AlfaNumeric.", Exclamation!)
                        dw_password.SetColumn("password_baru")
                        dw_password.SetFocus()
                        Exit
            END IF
NEXT
IF li_ok > 0 THEN Return
// sepertinya semua syarat penggantian password sudah sesuai
// set data password baru ke datawindow
dw_password.SetItem(dw_password.GetRow(), "user_password", ls_passwordbaru)
dw_password.SetItem(dw_password.GetRow(), "password_lama", ls_passwordbaru)
// update databasenya
IF dw_password.Update() = 1 THEN
            Commit;
            MessageBox("Sukses", "Password anda berhasil diganti.", Information!)
ELSE
            Rollback;
            MessageBox("Gagal", "Gagal mengubah password anda, coba lagi atau hubungi administrator.", Exclamation!)
            Return
END IF
// atur ls_password menjadi null
SetNull(ls_password)
// atur kembali kolom-kolom "dummy" menjadi null
dw_password.SetItem(dw_password.GetRow(), "password_lama", ls_password)
dw_password.SetItem(dw_password.GetRow(), "password_baru", ls_password)
dw_password.SetItem(dw_password.GetRow(), "password_konfirm", ls_password)
dw_password.SetColumn("password_lama")
// aktifkan dw_password
dw_password.SetFocus()

Buka event Clicked dari cb_batal, lalu masukkan script kode berikut ini:
Close(Parent)

Simpan perubahan pada w_password dan kita pun selesai membuat window penggantian password
Coba jalankan program dan coba untuk mengganti password untuk loginnya dengan mengakses menu Pengaturan->Ganti Password.
Tes apakah semua script kodenya sudah berjalan dengan benar atau tidak.

Untuk bagian kesembilan ini saya cukupkan dulu sampai disini, silahkan lanjutkan kebagian kesepuluh untuk membuat window tentang program dan membuat file exe dari program ini, silahkan klik Tutorial Membuat Program Biodata Karyawan Part 10.
Akhir kata, semoga sukses untuk semua yang sedang dan akan anda lakukan.
Download tutorial ini dalam format pdf: 


Tidak ada komentar:

Posting Komentar

Silahkan berikan komentar anda.

 

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