Social Icons

google plustwitterfacebookinstagramlinkedinrss feedcontact me

Minggu, 28 September 2014

Membuat Program Biodata Karyawan Part 5

Pada tutorial bagian kelima ini, kita akan menyempurnakan window w_user untuk dapat digunakan menambah atau mengedit data user yang menggunakan program ini.
Sebelumnya, silahkan klik Tutorial Membuat Program Biodata Karyawan Part 4 terlebih dahulu, jika anda baru mengikuti tutorial ini.

Sebelum melangkah lebih jauh lagi, pastikan terlebih dahulu, desain window w_user sudah seperti ini:
Tutorial 1 - Layout Jendela w_user
Jika window w_user sudah seperti gambar diatas, berikut adalah langkah-langkah menyempurnakan window w_user:
Buka jendela editor window w_user
Buka Event Open dari Window w_user, lalu masukkan script berikut ini dibawah script This.Move(5,5):
dw_user.SetTransObject(SQLCA)
dw_user.Retrieve()
dw_user.SetRowFocusIndicator(Hand!)

dan ketikkan script berikut ini di event retrieveend dari dw_user
IF rowcount = 0 THEN cb_edit.Enabled = False

Gunanya adalah jika belum ada data dalam table tbl_user, maka tombol edit akan didisable.

Simpan perubahan ini.
Jika dirunning maka kurang lebih hasilnya akan seperti ini:
Tutorial 1 - Jendela w_user saat dirunning
Untuk langkah berikutnya dalam bagian kelima ini, kita atur terlebih dahulu properti Protect dan Text Case untuk semua kolom dalam datawindow dw_user dengan nilai 1 dan Uppercase, caranya:
Buka jendela editor datawindow dw_user
Pilih semua kolom
Pada tab General, dibagian Protect, klik tombol Build Expression (disebelah kanan kotaknya) lalu masukkan angka 1, contohnya lihat gambar dibawah ini:
Tutorial 1 - Jendela pengaturan expression properti Protect
Sekarang pilih hanya kolom-kolom berikut ini: user_name, user_password dan user_full_name
Pada tab Edit, atur Case menjadi Upper (1)
Simpan perubahan untuk dw_user
Lanjut lagi, sekarang deklarasikan variabel Integer pada Instance Variables window w_user berikut ini:
Integer ii_mode
(ini adalah integer yang mengindikasikan proses yang sedang dilakukan oleh user, dimana jika user sedang melakukan proses tambah data maka nilai ii_mode akan kita set menjadi 0, sedangkan jika user sedang melakukan proses pengeditan data maka nilai ii_mode akan kita set menjadi 1). Hal ini diperlukan untuk menentukan action pada saat menyimpan data.

Masukkan script berikut ini pada event Clicked dari cb_tambah
ii_mode = 0
// buat baris baru dan jaga-jaga jika baris baru tidak terlihat karena ada dibawah jendela datawindownya
dw_user.ScrollToRow(dw_user.InsertRow(0))
// mengaktifkan kolom Nama User
dw_user.SetColumn("user_name")
// mengaktifkan dw_user
dw_user.SetFocus()
// mengatur nilai level dan status secara otomatis
dw_user.SetItem(dw_user.GetRow(), "user_level", 0)
dw_user.SetItem(dw_user.GetRow(), "user_status", 1)
// pengaturan properti enabled command button
This.Enabled = False
cb_edit.Enabled = False
cb_simpan.Enabled = True
cb_batal.Enabled = True
cb_refresh.Enabled = False
// pengaturan Protect kolom dalam dw_user
// If(IsRowNew(),0,1) berarti jika baris merupakan baris baru, maka kolom bisa diakses, jika bukan kolom tidak bisa diakses
dw_user.Modify("user_name.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_user.Modify("user_password.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_user.Modify("user_full_name.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_user.Modify("user_level.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_user.Modify("user_status.Protect ='1~tIf(IsRowNew(),0,1)'")

Masukkan script berikut ini pada event Clicked dari cb_edit
Long ll_row

ii_mode = 1
ll_row = dw_user.GetRow()
// pengaturan Protect kolom dalam dw_user
// If(GetRow() = " + String(ll_row) + ",0,1) berarti jika baris merupakan baris yang aktif saat tombol edit ditekan, maka kolom bisa diakses, jika bukan kolom tidak bisa diakses
dw_user.Modify("user_name.Protect =1")
dw_user.Modify("user_password.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_user.Modify("user_full_name.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_user.Modify("user_level.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_user.Modify("user_status.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
// mengaktifkan kolom password
dw_user.SetColumn("user_password")
// mengaktifkan dw_user
dw_user.SetFocus()
// pengaturan properti enabled command button
This.Enabled = False
cb_tambah.Enabled = False
cb_simpan.Enabled = True
cb_batal.Enabled = True
cb_refresh.Enabled = False

Masukkan script berikut ini pada event Clicked dari cb_simpan:
String ls_nama, ls_password, ls_nama_lengkap
String ls_valid1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
String ls_valid2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
Char lc_karakter
Integer li_loop, li_valid = 0
Long ll_user_id, ll_count

// cek data yang dimasukkan oleh user
dw_user.AcceptText()
ls_nama = dw_user.GetItemString(dw_user.GetRow(), "user_name")
ls_password = dw_user.GetItemString(dw_user.GetRow(), "user_password")
ls_nama_lengkap = dw_user.GetItemString(dw_user.GetRow(), "user_full_name")
// cek null atau string kosong
IF IsNull(ls_nama) OR TRIM(ls_nama, True) = "" THEN
MessageBox("Warning", "Nama user tidak boleh kosong.", Exclamation!)
dw_user.SetColumn("user_name")
dw_user.SetFocus()
Return
ELSEIF IsNull(ls_password) OR TRIM(ls_password, True) = "" THEN
     MessageBox("Warning", "Password tidak boleh kosong.", Exclamation!)
     dw_user.SetColumn("user_password")
     dw_user.SetFocus()
     Return
ELSEIF IsNull(ls_nama_lengkap) OR TRIM(ls_nama_lengkap, True) = "" THEN
MessageBox("Warning", "Nama lengkap user tidak boleh kosong.", Exclamation!)
dw_user.SetColumn("user_full_name")
dw_user.SetFocus()
Return
END IF
// cek karakter yang diinput pada Nama, Password dan Nama Lengkap
// cek pada nama user
FOR li_loop = 1 TO LenA(ls_nama)
lc_karakter = Char(MidA(ls_nama, li_loop, 1))
IF PosA(ls_valid1, lc_karakter) = 0 THEN
li_valid ++
MessageBox("Warning", "Nama User hanya boleh diisi dengan karakter AlfaNumeric.", Exclamation!)
Exit
END IF
NEXT
IF li_valid > 0 THEN Return
li_valid = 0
// cek pada password
FOR li_loop = 1 TO LenA(ls_password)
lc_karakter = Char(MidA(ls_password, li_loop, 1))
IF PosA(ls_valid1, lc_karakter) = 0 THEN
       li_valid ++
       MessageBox("Warning", "Password hanya boleh diisi dengan karakter AlfaNumeric.", Exclamation!)
       Exit
END IF
NEXT
IF li_valid > 0 THEN Return
li_valid = 0
// cek pada nama lengkap
FOR li_loop = 1 TO LenA(ls_nama_lengkap)
lc_karakter = Char(MidA(ls_nama_lengkap, li_loop, 1))
IF PosA(ls_valid2, lc_karakter) = 0 THEN
       li_valid ++
MessageBox("Warning", "Nama lengkap user hanya boleh berupa karakter Huruf dan Spasi.", Exclamation!)
       Exit
END IF
NEXT
IF li_valid > 0 THEN Return
// cek panjang karakter yang diinput
IF LenA(ls_nama) < 3 THEN
MessageBox("Warning", "Nama user minimal 3 karakter.", Exclamation!)
dw_user.SetColumn("user_name")
dw_user.SetFocus()
Return
ELSEIF LenA(ls_password) < 5 THEN
Messagebox("Warning", "Password minimal 5 karakter.", Exclamation!)
dw_user.SetColumn("user_password")
dw_user.SetFocus()
Return
ELSEIF LenA(Trim(ls_nama_lengkap, True)) < 4 THEN
MessageBox("Warning", "Nama lengkap user minimal 4 karakter.", Exclamation!)
dw_user.SetColumn("user_full_name")
dw_user.SetFocus()
Return
END IF
// jika ini merupakan proses tambah user, cek apakah nama user yang dimasukkan sudah ada atau belum
// jika belum ada, lanjutkan dengan memasukkan user ID
IF ii_mode = 0 THEN
SELECT COUNT(*)
INTO :ll_count
FROM karyawan.tbl_user
WHERE user_name = :ls_nama
USING SQLCA;
IF IsNull(ll_count) THEN ll_count = 0
IF ll_count > 0 THEN
       MessageBox("Warning", "Nama user yang anda masukkan sudah ada..", Exclamation!)
       dw_user.SetColumn("user_name")
       dw_user.SetFocus()
       Return
END IF
SELECT MAX(user_id)
INTO :ll_user_id
FROM karyawan.tbl_user
USING SQLCA;
IF IsNull(ll_user_id) THEN ll_user_id = 0
ll_user_id ++
dw_user.SetItem(dw_user.GetRow(), "user_id", ll_user_id)
END IF
// data yang dimasukkan user tidak ada masalah, lanjutkan dengan mengupdate database
IF dw_user.Update() = 1 THEN // sukses
Commit;
MessageBox("Sukses", "Data user berhasil disimpan/diupdate.", Information!)
ELSE // gagal
Rollback;
MessageBox("Gagal", "Gagal menyimpan/mengupdate data.", StopSign!)
Return
END IF
// atur properti command button
This.Enabled = False
cb_tambah.Enabled = True
cb_edit.Enabled = True
cb_batal.Enabled = False
cb_refresh.Enabled = True
// atur properti Protect kolom datawindow
dw_user.Modify("user_name.Protect = 1")
dw_user.Modify("user_password.Protect = 1")
dw_user.Modify("user_full_name.Protect = 1")
dw_user.Modify("user_level.Protect = 1")
dw_user.Modify("user_status.Protect = 1")

Masukkan script berikut pada event Clicked dari cb_batal
IF MessageBox("Konfirmasi", "Batalkan semua perubahan ?", Question!, YesNo!, 2) = 2 THEN Return
Rollback;
dw_user.Retrieve()
// atur properti command button
This.Enabled = False
cb_tambah.Enabled = True
cb_edit.Enabled = True
cb_simpan.Enabled = False
cb_refresh.Enabled = True
//atur properti Protect kolom dw_user
dw_user.Modify("user_name.Protect = 1")
dw_user.Modify("user_password.Protect = 1")
dw_user.Modify("user_full_name.Protect = 1")
dw_user.Modify("user_level.Protect = 1")
dw_user.Modify("user_status.Protect = 1")

Untuk event Clicked dari cb_refresh, masukkan script berikut:
dw_user.Retrieve()

Sedangkan untuk event Clicked dari cb_tutup, masukkan script ini:
Close(Parent)

Simpan perubahannya, dan coba jalankan program, lalu masukkan data-datanya, coba juga dengan menginput data yang “tidak sesuai” dengan flownya.

Sampai disini kita telah menyelesaikan window w_user untuk keperluan menginput atau mengedit data user pengguna program.

Untuk sementara, bagian kelima ini cukup sampai disini dulu, nanti kita lanjutkan pada Tutorial Membuat Program Biodata Part 6.

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