Social Icons

google plustwitterfacebookinstagramlinkedinrss feedcontact me

Jumat, 03 Oktober 2014

Membuat Program Biodata Karyawan Part 7

Pada bagian sebelumnya (Tutorial Membuat Program Biodata Karyawan Part 6) kita telah selesai mendesain window w_karyawan, pada bagian ketujuh ini kita akan sempurnakan window w_karyawan agar dapat digunakan untuk menginput atau mengedit data karyawan.
Namun sebelumnya saya mohon maaf terlebih dahulu, karena ada sedikit perubahan baik itu di desainnya maupun didatabasenya. Perubahan ini terpaksa saya lakukan karena jika tidak diubah maka akan membuat script kodenya bertambah banyak dan berputar-putar, yang nantinya malah akan membuat anda menjadi bingung.

Perubahannya adalah sebagai berikut:
Database
Dalam skema database karyawan kita telah membuat sebuah tabel dengan nama tbl_karyawan, namun pada tabel tersebut tidak ada kolom yang mendefinisikan status karyawan tersebut masih bekerja pada perusahaan atau tidak, oleh karena itu perubahan yang harus dilakukan adalah menambah sebuah kolom baru pada tabel tbl_karyawan untuk mendefinisikan status karyawan. Untuk menambah kolom tersebut silahkan lakukan langkah-langkah berikut ini:
  • Buka pgAdmin III dengan cara klik Start->All Program->PostgreSQL 9.3->pgAdmin III
  • Klik dua kali pada Server PostgreSQL 9.3 (localhost:5432) lalu masukkan passwordnya
  • Expand Databases, postgres, Schemas, karyawan, Tables
  • Klik kanan pada tbl_karyawan lalu pilih New Object->New Column
  • Isikan Name: keterangan, Data type: character varying, Length: 50
  • Klik OK, dan kita pun selesai melakukan perubahan pada tabel tbl_karyawan
Datawindow d_karyawan
Pada langkah sebelumnya kita telah menambahkan sebuah kolom baru pada tabel tbl_karyawan, namun kolom tersebut tidak akan otomatis masuk dalam datawindow d_karyawan yang telah kita buat sebelumnya, untuk menambahkan kolom tersebut langkah-langkahnya adalah sebagai berikut:
  • Jalankan Powerbuilder Classic 12
  • Buka workspace biokaryawan
  • Klik dua kali pada d_karyawan hingga jendela datawindow painternya terbuka
  • Klik menu Design->Data Source…
  • Pada table layout scroll kebawah ditabel karyawan.tbl_karyawan hingga anda menemukan kolom keterangan yang dalam posisi tidak terpilih/terseleksi
  • Klik kolom keterangan untuk menyeleksinya lalu tutup jendela data source
  • Pilih Yes pada pesan yang tampil untuk mengkonfirmasi perubahan yang baru saja dilakukan
  • Pada datawindownya secara otomatis kolom keterangan akan ada pada band detailnya
  • Tambahkan 1 control Text kedalam datawindownya atur namanya menjadi t_foto dan Textnya dikosongkan, serta bordernya diganti menjadi No Border dan backgroundnya transparent
  • Hilangkan tanda pada kotak property visible dari command button b_foto
  • Pilih kolom nik_karyawan lalu pilih tab Format pada propertiesnya lalu masukkan pada kotak Format: @@.@@-@@@@@ anda juga bisa menggunakan format yang lain yang penting jumlah karakter @ ada 9 buah (sesuai dengan format penginputan NIK).
  • Atur sedemikian rupa layoutnya hingga menjadi seperti ini:
  • Klik menu Design->Data Source...
  • Klik lagi Menu Design lalu pilih Retrieval Arguments
  • Pada kotak Name, masukkan: ra_nik, lalu pada Type, pilih String, lalu klik OK
  • Pilih tab Where (dibawah table layout) lalu pada kotak Column pilih karyawan.tbl_karyawan.nik_karyawan
  • Pada kotak Operator pilih =
  • Pada kotak Value ketikkan :ra_nik
  • Tutup jendela data source lalu pilih Yes untuk mengkonfirmasi perubahan yang dilakukan
  • Simpan perubahan untuk datawindow d_karyawan
Sampai disini kita telah selesai membuat perubahan yang diperlukan, langkah selanjutnya adalah membuat sebuah datawindow dari tabel tbl_karyawan juga, datawindow ini adalah sebagai daftar dari NIK yang telah diinput dan juga sebagai sarana untuk navigasi dari data karyawan. Langkah-langkahnya adalah sebegai berikut:
  • Buat datawindow baru dengan cara klik File->New->pilih tab Datawindow, pilih tabular lalu klik OK
  • Pada jendela berikutnya pilih Quick Select
  • Pada kotak sebelah kiri pilih tabel karyawan.tbl_karyawan
  • Pada kotak sebelah kanan pilih kolom nik_karyawan lalu klik OK
  • Atur Property Background Color menjadi Mint lalu klik Next
  • Klik Finish untuk membuat datawindownya
  • Atur Tab Order menjadi 0 untuk kolom nik_karyawan
Atur control nik_karyawan_t seperti berikut ini:
Property Value
Text N.I.K.
Border Raised
Alignment Center
Background Maroon
Font Times New Roman
Font Size 10, Bold
Font Color Yellow
Atur Kolom nik_karyawan seperti ini:
Property Value
Alignement Center
Border Box
Protect 1
Background White
Format @@.@@-@@@@@
Font Times New Roman
Font Size 10, Bold
Font Color Black
Atur layoutnya hingga seperti ini:
  • Simpan dengan nama d_list_karyawan
  • Buka kembali window w_karyawan
  • Lebarkan lagi window w_karyawan lalu geser semua control yang ada kesebelah kanan
  • Masukkan 1 control datawindow disebelah kiri, ganti namanya menjadi dw_list lalu pilih data objectnya d_list_karyawan
Atur layoutnya seperti ini:
  • Simpan perubahan pada window w_karyawan
Sampai disini semua perubahan telah kita lakukan, maka langkah selanjutnya adalah memasukkan script code agar window w_karyawan dapat digunakan untuk menginput data, langkah-langkahnya adalah sebagai berikut:
  • Deklarasikan variabel berikut ini pada Instance Variables:
string is_pathfoto, is_namafoto, is_nik
integer ii_mode
  • Tambahkan 1 buah variabel string gs_folder pada Global Variables
  • Pada Event Constructor dari nvo_apps, masukkan script kode berikut ini:
gs_folder = GetCurrentDirectory()
  • Buat sebuah function dengan detail berikut ini:
Access: Public
Return Type: String
Function Name: wf_nik
Pass by: Value
Argument Type: Date
Argument Name: ad_masuk
  • Masukkan script berikut ini:
/*
Function untuk membuat NIK berdasarkan tanggal masuk kerja
Return Value: String
Argument: ad_masuk (Date) -> Tanggal masuk kerja
Variable:  1. ll_count (Long) -> Jumlah karyawan yang telah terdaftar dalam Tahun yang sama
2. ls_nik (String) -> Nomor Induk Karyawan
Methode: 1. Mengambil nilai dua digit tahun dan dua digit bulan dari ad_masuk
2. Nilai tersebut lalu dikalikan dengan 100000, untuk menyesuaikan dengan format 9 karakter dari nik_karyawan
3. Hasil dari perkalian tersebut lalu ditambahkan dengan jumlah karyawan yang telah ada plus 1
4. Hasil akhirnya dikonvert menjadi tipe data String
*/
Long ll_count
Integer li_year
String ls_nik

li_year = Year(ad_masuk)
SELECT COUNT(*)
INTO :ll_count
FROM karyawan.tbl_karyawan
WHERE date_part('year', tanggal_masuk) = :li_year
USING SQLCA;
IF IsNull(ll_count) THEN ll_count = 0
ll_count ++

ls_nik = String((Integer(String(ad_masuk, "yymm")) * 100000) + ll_count)
Return ls_nik
  • Buka event Open dari w_karyawan, lalu masukkan scipt berikut dibawah This.Move(5,5):
// atur nilai variabel is_nik agar tidak menjadi null
is_nik = ""
// atur properti object transaksi dw_list dan dw_karyawan ke SQLCA
dw_list.SetTransObject(SQLCA)
dw_karyawan.SetTransObject(SQLCA)
/* retrieve data di dw_list, dan jika ada datanya aktifkan baris pertama
lalu atur nilai variabel is_nik menjadi data nik pada baris pertama dw_list */
IF dw_list.Retrieve() > 0 THEN
dw_list.ScrollToRow(1)
dw_list.SelectRow(1, True)
is_nik = dw_list.GetItemString(1, "nik_karyawan")
END IF
// retrieve data di dw_karyawan berdasarkan nilai variabel is_nik
dw_karyawan.Retrieve(is_nik)
Masukkan script berikut pada masing-masing controlnya:
Control: pb_pertama, Event:: Clicked
// jika tidak ada data dalam dw_list jangan lakukan apa-apa
IF dw_list.RowCount() = 0 THEN Return
// jika baris aktif adalah 1 jangan lakukan apa-apa
IF dw_list.GetRow() = 1 THEN Return
// aktifkan baris pertama dalam dw_user
dw_list.ScrollToRow(1)
// seleksi hanya baris pertama dalam dw_user
dw_list.SelectRow(0, False)
dw_list.SelectRow(dw_list.GetRow(), True)
Control: pb_sebelum, Event:: Clicked
// jika tidak ada data dalam dw_list jangan lakukan apa-apa
IF dw_list.RowCount() = 0 THEN Return
// jika baris aktif adalah 1 jangan lakukan apa-apa
IF dw_list.GetRow() = 1 THEN Return
// aktifkan baris sebelum baris yang aktif dalam dw_user
dw_list.ScrollPriorRow()
// seleksi hanya baris yang aktif dalam dw_user
dw_list.SelectRow(0, False)
dw_list.SelectRow(dw_list.GetRow(), True)
Control: pb_berikut, Event:: Clicked
// jika tidak ada data dalam dw_list jangan lakukan apa-apa
IF dw_list.RowCount() = 0 THEN Return
// jika baris aktif adalah baris terakhir jangan lakukan apa-apa
IF dw_list.GetRow() = dw_list.RowCount() THEN Return
// aktifkan baris selanjutnya dari baris yang aktif dalam dw_user
dw_list.ScrollNextRow()
// seleksi hanya baris yang aktif dalam dw_user
dw_list.SelectRow(0, False)
dw_list.SelectRow(dw_list.GetRow(), True)
Control: pb_terakhir, Event:: Clicked
// jika tidak ada data dalam dw_list jangan lakukan apa-apa
IF dw_list.RowCount() = 0 THEN Return
// jika baris aktif adalah baris terakhir jangan lakukan apa-apa
IF dw_list.GetRow() = dw_list.RowCount() THEN Return
// aktifkan baris terakhir dalam dw_user
dw_list.ScrollToRow(dw_list.RowCount())
// seleksi hanya baris yang aktif dalam dw_user
dw_list.SelectRow(0, False)
dw_list.SelectRow(dw_list.GetRow(), True)
Control: dw_list, Event:: Clicked
IF row = 0 THEN Return
This.SelectRow(0, False)
This.SelectRow(row, True)
Control: dw_list, Event:: rowfocuschanged
is_nik = This.GetItemString(currentrow, "nik_karyawan")
dw_karyawan.Retrieve(is_nik)
This.SelectRow(0, False)
This.SelectRow(currentrow, True)
Control: dw_karyawan, Event:: ButtonClicked
IF GetFileOpenName("Pilih Gambar",  is_pathfoto, is_namafoto, "JPG", "JPEG Files (*.JPG),*.JPG" ) = 1 THEN
This.Object.p_foto.FileName = is_pathfoto
This.Object.t_foto.Text = is_pathfoto
This.SetItem(row, "file_foto", This.GetItemString(row, "nik_karyawan") + ".jpg")
END IF
Control: dw_karyawan, Event:: ItemChanged
IF dwo.Name <> "tanggal_masuk" THEN Return
This.SetItem(row, "nik_karyawan", wf_nik(Date(data)))
This.SetItem(row, "file_foto", wf_nik(Date(data)) + ".jpg")
Control: dw_karyawan, Event:: RetrieveEnd
string ls_foto

// kosongkan nilai path foto
This.Object.t_foto.Text = ""
IF rowcount = 0 THEN
cb_edit.Enabled = False
ELSE
ls_foto = This.GetItemString(This.GetRow(), "file_foto")
IF IsNull(ls_foto) OR Trim(ls_foto, True) = "" THEN
This.Object.p_foto.FileName = gs_folder + "\" + "Default.jpg"
ELSE
This.Object.p_foto.FileName = gs_folder + "\Photos\" + ls_foto
END IF
END IF
Control: cb_tambah, Event:: Clicked
ii_mode = 0 // mode Tambah Data
// atur variabel is_pathfoto dan is_namafoto menjadi null
SetNull(is_pathfoto)
SetNull(is_namafoto)
// buat baris baru dan jaga-jaga jika baris baru tidak terlihat karena ada dibawah jendela datawindownya
dw_list.ScrollToRow(dw_list.InsertRow(0))
dw_list.SelectRow(0, False)
dw_list.SelectRow(dw_list.GetRow(), True)
dw_karyawan.ScrollToRow(dw_karyawan.InsertRow(0))
// memasukkan nilai default pada beberapa kolom dan object
dw_karyawan.SetItem(dw_karyawan.GetRow(), "jenis_kelamin", "Laki-Laki")
dw_karyawan.SetItem(dw_karyawan.GetRow(), "tanggal_lahir", Today())
dw_karyawan.SetItem(dw_karyawan.GetRow(), "status_nikah", "Belum Menikah")
dw_karyawan.SetItem(dw_karyawan.GetRow(), "status_kerja", "Kontrak")
dw_karyawan.SetItem(dw_karyawan.GetRow(), "tanggal_masuk", Today())
dw_karyawan.SetItem(dw_karyawan.GetRow(), "nik_karyawan", wf_nik(Today()))
dw_karyawan.Object.p_foto.FileName = gs_folder + "\" + "Default.jpg"
dw_karyawan.SetItem(dw_karyawan.GetRow(), "keterangan", "Karyawan ini masih bekerja disini")
dw_karyawan.Object.t_foto.Text = ""
// mengaktifkan kolom Tanggal Masuk
dw_karyawan.SetColumn("tanggal_masuk")
// mengaktifkan dw_karyawan
dw_karyawan.SetFocus()
// pengaturan properti enabled dari beberapa control yang ada
dw_list.Enabled = False
This.Enabled = False
cb_edit.Enabled = False
cb_simpan.Enabled = True
cb_batal.Enabled = True
cb_refresh.Enabled = False
pb_pertama.Enabled = False
pb_sebelum.Enabled = False
pb_berikut.Enabled = False
pb_terakhir.Enabled = False
// pengaturan Protect kolom dalam dw_karyawan
// If(IsRowNew(),0,1) berarti jika baris merupakan baris baru, maka kolom bisa diakses, jika tidak kolom tidak bisa diakses
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)'")
// menampilkan tombol Pilih Foto
dw_karyawan.Object.b_foto.Visible = True
Control: cb_edit, Event:: Clicked
Long ll_row // deklarasi untuk baris yang sedang aktif

ii_mode = 1 // mode Edit Data
// mengambil baris yang sedang aktif
ll_row = dw_karyawan.GetRow()
// mengambil nilai dari kolom file_foto
is_pathfoto = dw_karyawan.GetItemString(dw_karyawan.GetRow(), "file_foto")
// pengaturan Protect kolom dalam dw_karyawan
// If(GetRow() = " + String(ll_row) + ",0,1) berarti jika baris merupakan baris yang aktif saat tombol edit ditekan, maka kolom bisa diakses, jika tidak kolom tidak bisa diakses
dw_karyawan.Modify("nama_karyawan.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("jenis_kelamin.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("tempat_lahir.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("tanggal_lahir.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("status_nikah.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("pendidikan.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("alamat_lengkap.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("nomor_telepon.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("nomor_handphone.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("alamat_email.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("nama_bagian.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("nama_jabatan.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("status_kerja.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("keterangan.Protect ='1~tIf(GetRow() = " + String(ll_row) + ",0,1)'")
dw_karyawan.Modify("tanggal_masuk.Protect =1")
// menampilkan tombol Pilih Foto
dw_karyawan.Object.b_foto.Visible = True
// mengaktifkan kolom nama karyawan
dw_karyawan.SetColumn("nama_karyawan")
// mengaktifkan dw_karyawan
dw_karyawan.SetFocus()
// pengaturan properti enabled dari beberapa control
dw_list.Enabled = False
This.Enabled = False
cb_tambah.Enabled = False
cb_simpan.Enabled = True
cb_batal.Enabled = True
cb_refresh.Enabled = False
pb_pertama.Enabled = False
pb_sebelum.Enabled = False
pb_berikut.Enabled = False
pb_terakhir.Enabled = False
Control: cb_simpan, Event:: Clicked
String ls_nik, ls_nama, ls_salinfoto
Long ll_row

dw_karyawan.AcceptText()
ll_row = dw_karyawan.GetRow()
ls_nama = dw_karyawan.GetItemString(dw_karyawan.GetRow(), "nama_karyawan")
ls_nik = dw_karyawan.GetItemString(dw_karyawan.GetRow(), "nik_karyawan")
IF IsNull(ls_nama) OR Trim(ls_nama, True) = "" THEN
MessageBox("Warning", "Nama Karyawan tidak boleh kosong.", Exclamation!)
dw_karyawan.SetColumn("nama_karyawan")
dw_karyawan.SetFocus()
Return
END IF

IF dw_karyawan.Update() = 1 THEN
IF Not IsNull(is_pathfoto) AND LenA(is_pathfoto) > 0 THEN
IF is_pathfoto <> dw_karyawan.GetItemString(dw_karyawan.GetRow(), "file_foto") THEN
IF FileCopy(is_pathfoto, gs_folder + "\Photos\" + ls_nik + ".jpg", True) <> 1 THEN
Rollback;
MessageBox("Error", "Data tidak berhasil disimpan (tidak dapat menyalin file foto).", StopSign!)
Return
END IF
END IF
END IF
Commit;
MessageBox("Sukses", "Data karyawan berhasil disimpan.", Information!)
ELSE
Rollback;
MessageBox("Error", "Tidak dapat menyimpan data karyawan.", StopSign!)
Return
END IF
IF ii_mode = 0 THEN
dw_list.Retrieve()
ll_row = dw_list.Find("nik_karyawan = '" + ls_nik + "'", 1, dw_list.RowCount())
dw_list.ScrollToRow(ll_row)
dw_list.SelectRow(0, False)
dw_list.SelectRow(ll_row, True)
END IF
// pengaturan Protect kolom dalam dw_karyawan menjadi 1
dw_karyawan.Modify("nama_karyawan.Protect =1")
dw_karyawan.Modify("jenis_kelamin.Protect =1")
dw_karyawan.Modify("tempat_lahir.Protect =1")
dw_karyawan.Modify("tanggal_lahir.Protect =1")
dw_karyawan.Modify("status_nikah.Protect =1")
dw_karyawan.Modify("pendidikan.Protect =1")
dw_karyawan.Modify("alamat_lengkap.Protect =1")
dw_karyawan.Modify("nomor_telepon.Protect =1")
dw_karyawan.Modify("nomor_handphone.Protect =1")
dw_karyawan.Modify("alamat_email.Protect =1")
dw_karyawan.Modify("nama_bagian.Protect =1")
dw_karyawan.Modify("nama_jabatan.Protect =1")
dw_karyawan.Modify("status_kerja.Protect =1")
dw_karyawan.Modify("keterangan.Protect =1")
dw_karyawan.Modify("tanggal_masuk.Protect =1")

// menyembunyikan tombol Pilih Foto
dw_karyawan.Object.b_foto.Visible = False
// pengaturan properti enabled command button
dw_list.Enabled = True
This.Enabled = False
cb_tambah.Enabled = True
cb_edit.Enabled = True
cb_batal.Enabled = False
cb_refresh.Enabled = True
pb_pertama.Enabled = True
pb_sebelum.Enabled = True
pb_berikut.Enabled = True
pb_terakhir.Enabled = True
Control: cb_batal, Event:: Clicked
long ll_row

IF MessageBox("Konfirmasi", "Batalkan semua perubahan ?", Question!, YesNo!, 2) = 2 THEN Return
IF ii_mode = 0 THEN
ll_row = 1
ELSE
ll_row = dw_list.GetRow()
END IF
Rollback;
is_nik = ""
IF dw_list.Retrieve() > 0 THEN
dw_list.ScrollToRow(ll_row)
dw_list.SelectRow(0, False)
dw_list.SelectRow(ll_row, True)
is_nik = dw_list.GetItemString(ll_row, "nik_karyawan")
END IF
dw_karyawan.Retrieve(is_nik)

// pengaturan Protect kolom dalam dw_karyawan menjadi 1
dw_karyawan.Modify("nama_karyawan.Protect =1")
dw_karyawan.Modify("jenis_kelamin.Protect =1")
dw_karyawan.Modify("tempat_lahir.Protect =1")
dw_karyawan.Modify("tanggal_lahir.Protect =1")
dw_karyawan.Modify("status_nikah.Protect =1")
dw_karyawan.Modify("pendidikan.Protect =1")
dw_karyawan.Modify("alamat_lengkap.Protect =1")
dw_karyawan.Modify("nomor_telepon.Protect =1")
dw_karyawan.Modify("nomor_handphone.Protect =1")
dw_karyawan.Modify("alamat_email.Protect =1")
dw_karyawan.Modify("nama_bagian.Protect =1")
dw_karyawan.Modify("nama_jabatan.Protect =1")
dw_karyawan.Modify("status_kerja.Protect =1")
dw_karyawan.Modify("keterangan.Protect =1")
dw_karyawan.Modify("tanggal_masuk.Protect =1")
// menyembunyikan tombol Pilih Foto
dw_karyawan.Object.b_foto.Visible = False
// pengaturan properti enabled command button
dw_list.Enabled = True
This.Enabled = False
cb_tambah.Enabled = True
cb_edit.Enabled = True
cb_simpan.Enabled = False
cb_refresh.Enabled = True
pb_pertama.Enabled = True
pb_sebelum.Enabled = True
pb_berikut.Enabled = True
pb_terakhir.Enabled = True
Control: cb_refresh, Event:: Clicked
// retrieve ulang dw_list dan dw_karyawan
is_nik = ""
IF dw_list.Retrieve() > 0 THEN
dw_list.ScrollToRow(1)
dw_list.SelectRow(1, True)
is_nik = dw_list.GetItemString(1, "nik_karyawan")
END IF
dw_karyawan.Retrieve(is_nik)
Control: cb_tutup, Event:: Clicked
Close(Parent)

Simpan perubahannya dan lakukan pengetesan semua controlnya, dari input, edit, simpan, batal, refresh dan juga event-event yang lainnya.

Akhirnya selesailah kita membuat window w_karyawan untuk dapat digunakan sebagai sarana menginput atau mengedit data karyawan.
Pada bagian selanjutnya kita akan membuat laporan daftar nama karyawan yang telah diinput, silahkan klik Tutorial Membuat Program Biodata Karyawan Part 8.

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