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.
Tidak ada komentar:
Posting Komentar
Silahkan berikan komentar anda.