53
LAMPIRAN
55
Lampiran 1 Algoritma JST propagasi balik Langkah 0 : Menginisialisasi semua bobot dengan bilangan acak kecil. Langkah 1 : Jika kondisi penghentian belum terpenuhi, dilakukan langkah 2 - 8. Langkah 2 : Untuk setiap pasang data pelatihan, dilakukan langkah 3 - 8. Fase I : Propagasi maju Langkah 3 : Tiap-tiap unit input (xi, i = 1, 2, 3,..., n) menerima sinyal xi dan meneruskan sinyal tersebut ke semua unit pada lapisan tersembunyi. Langkah4 : Tiap-tiap unit tersembunyi (Zi, j = 1, 2, 3,..., p) menjumlahkan sinyalsinyal input terbobot dengan rumus : n
z _ in j = v0 j + ∑ xi vij i =1
dengan menggunakan fungsi aktivasi untuk menghitung sinyal outputnya:
z j = f ( z _ in j ) =
1 1+ e
− z _ in j
selanjutnya sinyal dikirimkan kesemua unit di lapisan output. Langkah 5 : Tiap-tiap unit output (Yk, k = 1, 2, 3,..., m) menjumlahkan sinyalsinyal input terbobot dengan rumus : p
y _ ink = w0 k + ∑ z i w jk i =1
dengan menggunakan fungsi aktivasi untuk menghitung sinyal outputnya: y k = f ( y _ in k ) =
1 1 + e − y _ ink
Fase II : Propagasi mundur Langkah 6 :Tiap-tiap unit output (Yk, k = 1, 2, 3,..., m) menerima target pola yang berhubungan dengan pola input pembelajaran, dengan menghitung informasi error nya:
δ k = (t k − y k ) f ' ( y _ in k ) kemudian menghitung koreksi bobot memperbaiki nilai wjk) dengan rumus :
(yang
∆w jk = αδ k z j
nantinya
digunakan
untuk
56
menghitung juga koreksi bias (yang nantinya digunakan untuk memperbaiki nilai w0k) dengan rumus : ∆w0 k = αδ k mengirimkankan δk ini ke unit-unit yang ada di lapisan tersembunyi. Langkah 7 : Tiap-tiap unit tersembunyi (Zj, j=1,2,3,...,p) menjumlahkan delta inputnya (dari unit-unit yang berada pada lapisan di atasnya) dengan rumus : m
δ _ in j = ∑ δ k w jk k =1
mengalikan nilai ini dengan turunan dari fungsi aktivasinya untuk menghitung informasi error dengan rumus :
δ j = δ _ in j f ' ( z _ in j ) kemudian menghitung koreksi bobot memperbaiki nilai vij) dengan rumus :
(yang
nantinya
digunakan
untuk
∆v jk = αδ j x i
menghitung juga koreksi bias (yang nantinya digunakan untuk memperbaiki nilai v0j) dengan rumus : ∆v 0 j = αδ j
Fase III : Perubahan bobot Langkah 8 Tiap-tiap unit output (Yk, k = 1, 2, 3,..., m) memperbaiki bias dan bobotnya (j = 0, 1, 2,..., p) dengan rumus : w jk (baru ) = w jk (lama ) + ∆w jk
Tiap-tiap unit tersembunyi (Zj, j = 1, 2, 3,..., p) memperbaiki bias dan bobotnya (i = 0, 1, 2,..., n) dengan rumus : vij (baru ) = v ij (lama ) + ∆v ij
1 m ∑ (t k − y k ) 2 lebih kecil dari toleransi yang m k =1 telah ditentukan atau jumlah epoh training sudah mencapai epoh maksimum, maka selesai; jika tidak maka kembali ke langkah awal. Nilai toleransi yang digunakan (ε) adalah 1< ε ≤ 0.
Jika besar total square – error
57
Lampiran 2 Hasil proses pengujian data testing dengan 7 hiden layer
58
Lampiran 3 Hasil proses pengujian data testing dengan 9 hiden layer
59
Lampiran 4 Hasil proses pengujian data testing dengan 11 hiden layer
60
Lampiran 5 Hasil proses pengujian data testing dengan 15 hiden layer
61
Lampiran 6 Hasil proses pengujian data testing dengan 20 hiden layer
62
Lampiran 7 Hasil proses pengujian data testing dengan 25 hiden layer
63
Lampiran 8 Hasil proses pengujian data testing dengan 30 hiden layer
64
Lampiran 9 Hasil proses pengujian data testing dengan 40 hiden layer
65
Lampiran 10 Hasil proses pengujian data testing dengan 50 hiden layer
66
Lampiran 11 Hasil proses pengujian data testing dengan 60 hiden layer
67
Lampiran 12 Desain antarmuka dan Sourcecode proses login Desain antarmuka Pada desain antarmuka login user, terdapat dua buah kotak isian dan dua buah tombol seperti pada Gambar. Kotak isian (1) digunakan untuk pengisian nama user, kotak isian (2) digunakan untuk pengisian password user, tombol (3) digunakan untuk masuk ke aplikasi dan tombol (4) digunakan untuk membatalkan perintah sebelumnya.
1 2 3
4
Sourcecode Private Sub Form_Load() BUKA_DATABASE buka_rs_user End Sub Private Sub tom_masuk_Click() If txt_user.Text = "Admin" Then MDI.Show Unload Me MDI.Text1.Text = "" MDI.mnadmin.Enabled = True Set frm_transparan = Nothing rs_user.Close Set rs_user = Nothing Else MDI.mnadmin.Enabled = False With rs_user rs_user.Find "kode_user='" & txt_user.Text & "'", , adSearchForward, 1 If Not .EOF Then If txt_pass.Text = !Password Then MDI.Show Unload Me MDI.Text1 = !kd_unit_kerja
68
Set
frm_transparan
=
Nothing rs_user.Close Set rs_user = Nothing End If Else MsgBox "User Anda vbCritical, "Waning" End If End With End If End sub
Salah",
69
Lampiran 13 Desain antarmuka dan sourcecode proses input tabel user Desain antarmuka Pada desain antarmuka ini digunakan untuk penambahan user baru atau penghapusan user lama. Pada desain antarmuka ini terdapat tiga buah kotak isian dan lima buah tombol seperti pada Gambar. Kotak isian (1) untuk pengisian username, kotak isian (2) untuk pengisian unit kerja, kotak isian (3) utuk pengisian password, tombol (4) untuk ijin penambahan, tombol (5) penyimpanan data, tombol (6) untuk penghapusan data, tombol (7) untuk pembaharuan dan tombol 8 untuk keluar.
1
2
3
4
5
6
7
8
Sourcecode Private Sub Form_Load() BUKA_DATABASE buka_rs_user buka_rs_unit End Sub Private Sub TOMHAPUS_Click() a = MsgBox("Data Akan dihapus ?", vbYesNo, "Konfirmasi") If a = vbYes Then rs_user.Delete End If End Sub Private Sub TOMKELUAR_Click() rs_user.Close rs_unit.Close Unload Me End Sub Private Sub TOMSIMPAN_Click() If txt_user.Text = "" Then
70
MsgBox "Kotak User tidak boleh Kosong" Else With rs_user rs_user.Find "kode_user='" & txt_user.Text & "'", , adSearchForward, 1 If .EOF Then .AddNew !kode_user = txt_user.Text !Password = txt_pass.Text !kd_unit_kerja = txt_unit.Text .update kosong Else MsgBox "User ini Sudah ada" End If End With End If End Sub Private Sub TOMTAMBAH_Click() txt_user.Text = "" txt_pass.Text = "" txt_unit.Text = "" End Sub Private Sub TOMUPDATE_Click() a = MsgBox("Data akan di Update ?", vbYesNo, "Konfirmasi") If a = vbYes Then With rs_user !kode_user = txt_user.Text !Password = txt_pass.Text !kd_unit_kerja = txt_unit.Text .update End With End If End Sub
71
Lampiran 14 Desain antarmuka dan sourcecode input tabel unit kerja Desain antarmuka Pada desain antarmuka ini user memasukkan kode dan nama setiap unit kerja. Pada desain antarmuka ini terdapat dua buah kotak isian dan lima buah tombol seperti pada Gambar Kotak isian (1) untuk pengisian kode unit, kotak isian (2) untuk pengisian nama unit kerja, tombol (3) untuk ijin penambahan, tombol (4) penyimpanan, tombol (5) untuk penghapusan, tombol (6) untuk pembatalan proses sebelumnya dan tombol (7) untuk keluar dari antarmuka.
1 2
3
4
5
6
7
Sourcecode Private Sub Form_Load() buka_rs_unit End Sub Private Sub TOMHAPUS_Click() pesan = MsgBox("Apakah "Konfirmasi") If pesan = vbYes Then rs_unit.Delete Call TOMSIMPAN_TEKAN End If End Sub Private Sub TOMKELUAR_Click() rs_unit.Close Unload Me toolbar_aktif End Sub
data
akan
dihapus?",
vbYesNo,
72
Private Sub TOMSIMPAN_Click() rs_unit.Find "code='" & txt_kode.Text & "'", , adSearchForward, 1 If Not rs_unit.EOF Then MsgBox "Kode Unit ini Sudah Ada" txt_kode.SetFocus Else If txt_kode = "" Then MsgBox ("Kode unit harus terisi") txt_kode.SetFocus ElseIf txt_ket = "" Then MsgBox ("Kode Keterangan harus terisi") Text_ket.SetFocus Else pesan = MsgBox("Apakah data ini akan disimpan?", vbYesNo, "Konfirmasi") If pesan = vbYes Then simpan call TOMSIMPAN_TEKAN Else Call TOMSIMPAN_TEKAN End If End If End If End Sub Private Sub TOMTAMBAH_Click() Call TOMTAMBAH_TEKAN End Sub Sub simpan() With rs_unit .AddNew !code = txt_kode.Text !name_unit = txt_ket.Text .update End With kosong End Sub Sub setdg_unit() With dg_unit Set .DataSource = rs_unit.DataSource .Columns(0).Width = 1500 .Columns(1).Width = 6000 .HeadLines = 1.5 .HeadFont.Bold = True .HeadFont.Size = 11 .Columns(0).Caption = "KODE UNIT" .Columns(1).Caption = "KETERANGAN" End With End Sub
73
Lampiran 15 Desain antarmuka dan sourcecode input tabel formulir. Desain antarmuka Pada desain antarmuka ini digunakan untuk melakukan input data formulir. Pada desain antarmuka ini terdapat enam buah kotak isian dan delapan buah tombol seperti pada Gambar. Kotak isian (1) untuk pengisian kode unit, kotak isian (2) untuk pengisian kode formulir, kotak isian (3) untuk pengisian nama formulir, kotak isian (4) untuk pengisian tanggal penerbitan, kotak isian (5) untuk pengisian nomor revisi, kotak isian (6) untuk pengisian masa simpan, tombol (7) untuk ijin penambahan,
tombol
memperbaharui,
(8)
tombol
untuk (10)
penyimpanan,
untuk
tombol
pembaharuan,
(9)
tombol
untuk (11)
ijin untuk
penghapusan, tombol (12) untuk pembatalan proses sebelumnya, tombol (13) untuk melihat hasil pindai ,tombol (14) untuk keluar antarmuka dan tombol (15) untuk melakukan perintah scan dokumen.
1 2 3
7
8
9
10
11
6
4
12
13
5
14
15
Sourcecode Private Sub Form_Load() buka_rs_form buka_rs_unit End Sub Sub cari_unit() rs_unit.Find "code='" & txt_unit.Text & "'", , adSearchForward, 1 If Not rs_unit.EOF Then
74
lab_unit.Caption = rs_unit!name_unit rs_form.Filter = "kode_unit='" & txt_unit.Text & "'" autoform txt_nama_form.SetFocus Else lab_unit.Caption = "" End If End Sub Sub simpan() If txt_nama_form.Text = "" Or txt_rev.Text = "" Or com_masa.Text = "" Then MsgBox "Kotak Isisan Tidak Boleh Kosong" Else With rs_form .AddNew !no_form = txt_kode_form.Text !name_form = txt_nama_form.Text !rev = txt_rev.Text !date_publish = tgl_terbit.Value !record_expired = com_masa.Text !kode_unit = txt_unit.Text .update End With End If End Sub Sub update() With rs_form !no_form = txt_kode_form.Text !name_form = txt_nama_form.Text !rev = txt_rev.Text !date_publish = tgl_terbit.Value !record_expired = com_masa.Text !kode_unit = txt_unit.Text .update End With End Sub Private Sub TOMEDIT_Click() TOMEDIT.Enabled = False TOMUPDATE.Enabled = True TOMHAPUS.Enabled = False frm_isian.Enabled = True End Sub Private Sub TOMHAPUS_Click() Dim a As Integer a = InputBox("1 : Hapus Semua, 2 : Hapus File Saja") If a = 1 Then pesan = MsgBox("Apakah data ini akan dihapus?", vbYesNo, "Hapus = " & txt_kode_form.Text) If pesan = vbYes Then
75
fso.DeleteFile ("D:\VB_TESIS\citra\citra_form\" & txt_kode_form.Text & ".tif") rs_form.Delete End If ElseIf a = 2 Then fso.DeleteFile ("D:\VB_TESIS\citra\citra_form\" & txt_kode_form.Text & ".tif") With rs_form !master_citra = "" .update End With End If End Sub Private Sub TOMSCANFORM_Click() Dim a As Single a = MsgBox("Scan Image?", vbYesNo, "Konfirmasi") If a = vbYes Then Dim lRtn As Long TWscan_and_save ("D:\VB_TESIS\citra\citra_form_temp\" & left(txt_kode_form.Text, 7) & ".tif") simpan_citra End If End Sub Private Sub TOMUPDATE_Click() With rs_form pesan = MsgBox("Apakah data ini akan diperbaharui?", vbYesNo, "Konfirmasi") If pesan = vbYes Then update End With End Sub Private Sub TOMKELUAR_Click() rs_form.Close rs_unit.Close Unload Me End Sub Private Sub TOMSIMPAN_Click() If val(Len(txt_kode_form.Text)) < 7 Then MsgBox "Kode formulir tidak boleh kosong atau kurang dari 7 digit", vbCritical, txt_kode_form.Text Else With rs_form .Find "no_form='" & txt_kode_form.Text & "'", , adSearchForward, 1 If Not .EOF Then MsgBox "No Formulir ini sudah ada dalam database", vbCritical, txt_kode_form.Text txt_kode_form.SetFocus Else pesan = MsgBox("Apakah data ini akan di simpan?", vbYesNo, "Konfirmasi")
76
If pesan = vbYes Then simpan End If End With End If End Sub Private Sub TOMTAMBAH_Click() Call TOMTAMBAH_TEKAN Call kosong Call combo_no_unit_1 Call cari_unit End Sub
77
Lampiran 16 Desain antarmuka dan sourcecode penyimpanan data rekaman Desain antarmuka Pada desain antarmuka ini digunakan untuk melakukan input data rekaman dan pengenalan citra rekaman yang diambil langsung dari alat pindai (scaner). Pada desain antarmuka ini terdapat sebuah kotak isian, dua buah tombol, sebuah label dan dua buah kotak gambar seperti pada Gambar. Kotak isian (1) untuk pengisian tanggal rekam, tombol (2) untuk perintah scan dokumen, kotak gambar (3) tempat gambar angka atau huruf hasil segmentasi, tombol (4) untuk keluar anatrmuka, label (5) tempat informasi hasil pengenalan rekaman, dan kotak gambar (6) lokasi gambar (citra) hasil scan.
1
3
2
5
6
Sourcecode Private Sub cmdStart_Click() --- scan dokumen Dim i, a As Integer a = InputBox("Masukkan Jumlah Rekaman", "konfirmasi") For i = 1 To a With Twain1 .SelectDeviceByName (cboSelect.Text) .MultiImage = True .KeepImages = True .ImagesToRead = 1 .Resolution = 100 .pixelType = ptGray .AutoBright = True .AutoDeskew = True
4
78
.CausesValidation = True .Threshold = 10 If .HasADF Then .UseADF = False Else .UseADF = True End If .UseInterface = False .ShowProgress = True .WaitForAcquire = True .Acquire Pengenalanx Next i Sub SEGMENTASI()' segmentasi file dari scanner If txt_info.Text = "1" Then pic_K1.PaintPicture Picture1.image, 0, 0, b - 5, 240, 300, vbSrcCopy pic_K2.PaintPicture Picture1.image, 0, 0, + 245, b - 5, 240, 300, vbSrcCopy pic_K3.PaintPicture Picture1.image, 0, 0, + 490, b - 5, 240, 300, vbSrcCopy pic_K4.PaintPicture Picture1.image, 0, 0, + 755, b - 5, 240, 300, vbSrcCopy pic_K5.PaintPicture Picture1.image, 0, 0, + 1030, b - 5, 240, 300, vbSrcCopy pic_K6.PaintPicture Picture1.image, 0, 0, + 1270, b - 5, 240, 300, vbSrcCopy pic_K7.PaintPicture Picture1.image, 0, 0, + 1535, b - 5, 240, 300, vbSrcCopy Else pic_K1.PaintPicture Picture1.image, 0, 0, b, 240, 300, vbSrcCopy pic_K2.PaintPicture Picture1.image, 0, 0, + 245, b, 240, 300, vbSrcCopy pic_K3.PaintPicture Picture1.image, 0, 0, + 495, b, 240, 300, vbSrcCopy pic_K4.PaintPicture Picture1.image, 0, 0, + 755, b, 240, 300, vbSrcCopy pic_K5.PaintPicture Picture1.image, 0, 0, + 1015, b, 240, 300, vbSrcCopy pic_K6.PaintPicture Picture1.image, 0, 0, + 1260, b, 240, 300, vbSrcCopy pic_K7.PaintPicture Picture1.image, 0, 0, + 1515, b, 240, 300, vbSrcCopy End If pic_K1.Height = 150: pic_K1.Width = 120 pic_K2.Height = 150: pic_K2.Width = 120 pic_K3.Height = 150: pic_K3.Width = 120 pic_K4.Height = 150: pic_K4.Width = 120 pic_K5.Height = 150: pic_K5.Width = 120 pic_K6.Height = 150: pic_K6.Width = 120
240, 300, a, 240, 300, a 240, 300, a 240, 300, a 240, 300, a 240, 300, a 240, 300, a
240, 300, a, 240, 300, a 240, 300, a 240, 300, a 240, 300, a 240, 300, a 240, 300, a
79
pic_K7.Height = 150: pic_K7.Width = 120 End Sub Sub simpan_citra1() Dim a As Single With rs_form .Find "no_form='" & lbl_karakter.Caption & "'", , adSearchForward, 1 If Not .EOF Then If !kode_unit = MDI.Text1.Text Then With rs_record Dim X As String X = 100000 + val(.RecordCount) .AddNew !no_record = lbl_karakter.Caption & right(X, 5) !no_form = lbl_karakter.Caption tgl_record.Format = dtpShortDate !date_record = tgl_record.Value With rs_form .Find "no_form='" & lbl_karakter.Caption & "'", , adSearchForward, 1 If Not .EOF Then rs_record!date_expired = tgl_record.Value + val(!record_expired) * 365 End With !citra = lbl_karakter.Caption & right(X, 5) & ".pdf" .update End With Picture1.Picture = Twain1.Picture Twain1.SaveToFile ("D:\VB_TESIS\citra\citra_record\" & lbl_karakter.Caption & right(X, 5) & ".pdf") tutup_tabel_JST bersihkan_tabel_jst pic_K1.Cls: pic_K2.Cls: pic_K3.Cls: pic_K4.Cls: pic_K5.Cls: pic_K6.Cls: pic_K7.Cls Picture1.Picture = LoadPicture("D:\VB_TESIS\latar1.gif") pic_K4.Cls: pic_K5.Cls: pic_K6.Cls: pic_K7.Cls Else MsgBox "Oops!!, Rekaman ini Milik unit : " & !kode_unit tutup_tabel_JST bersihkan_tabel_jst pic_K1.Cls: pic_K2.Cls: pic_K3.Cls: pic_K4.Cls: pic_K5.Cls: pic_K6.Cls: pic_K7.Cls Picture1.Picture = LoadPicture("D:\VB_TESIS\latar1.gif")
80
End If Else MsgBox
"Nomor
ini
tidak
ditemukan
dalam
database" Dim aa As String aa = InputBox("Masukan No Formulir!", "Input No Formulir", lbl_karakter.Caption) lbl_karakter.Caption = aa .Find "no_form='" & lbl_karakter.Caption & "'", , adSearchForward, 1 If Not .EOF Then With rs_record X = 100000 + val(.RecordCount) .AddNew !no_record = lbl_karakter.Caption & right(X, 5) !no_form = lbl_karakter.Caption !date_record = tgl_record.Value With rs_form .Find "no_form='" & lbl_karakter.Caption & "'", , adSearchForward, 1 If Not .EOF Then rs_record!date_expired = tgl_record.Value + val(!record_expired) * 365 End With !citra = lbl_karakter.Caption & right(X, 5) & ".pdf" .update End With Picture1.Picture = Twain1.Picture Twain1.SaveToFile ("D:\VB_TESIS\citra\citra_record\" & lbl_karakter.Caption & right(X, 5) & ".pdf") tutup_tabel_JST bersihkan_tabel_jst pic_K1.Cls: pic_K2.Cls: pic_K3.Cls: pic_K4.Cls: pic_K5.Cls: pic_K6.Cls: pic_K7.Cls Picture1.Picture = LoadPicture("D:\VB_TESIS\latar1.gif") pic_K4.Cls: pic_K5.Cls: pic_K6.Cls: pic_K7.Cls End If End If End With End Sub
81
Lampiran 17 Desain antarmuka dan sourcecode input tabel distribusi formulir Desain antarmuka Antarmuka ini digunakan untuk pendistribusian formulir kepada setiap unit kerja terkait. Adapun desain antarmuka distribusi formulir dapat dilihat pada Gambar. Pada desain antarmuka ini terdapat sebuah kotak isian, tiga buah tombol dan dua buah grid untuk menampilkan isi tabel. Kotak isian (1) berisi daftar unit kerja, tombol (2) perintah untuk pengiriman formulir, tombol (3) untuk penarikan atau penghapusan formulir, tombol (4) untuk keluar, gird (5) untuk melihat daftar formulir unit kerja pengirim, dan grid (6) untuk melihat daftar unit penerima formulir.
1 5 2
3
6 4
Sourcecode Private Sub Form_Load() buka_rs_form buka_rs_unit buka_rs_distribusi rsq_dis.Open "SELECT tab_form.no_form, tab_form.name_form, tab_unit.name_unit FROM tab_unit INNER JOIN (tab_form INNER JOIN tab_distribusi ON tab_form.no_form = tab_distribusi.kd_formulir) ON tab_unit.code = tab_distribusi.unit_kerja_penerima", _ ADO_DATABASE, _ adOpenKeyset, _ adLockBatchOptimistic, _ adCmdText rs_form.Filter = "kode_unit='" & MDI.Text1.Text & "'" combo_unit
82
With rs_unit .Find "code='" & MDI.Text1 & "'", , adSearchForward, 1 If Not .EOF Then lbl_unit.Caption = "Unit :" & !name_unit End If End With End Sub Sub kirim() rs_form.Find "no_form='" & DataGrid1.Columns(0).Text & "'", , adSearchForward, 1 If Not rs_form.EOF Then a = MsgBox("Apakah No Formmulir : " & DataGrid1.Columns(0).Text & " Akan didistribusi ke unit : " & txt_unit.Text, vbYesNo, "Konfirmasi") If a = vbYes Then With rs_distribusi .AddNew !kd_formulir = DataGrid1.Columns(0).Text !unit_kerja_penerima = txt_unit.Text .update rsq_dis.Requery set_datagrid2 End With Else MsgBox "Gagal Kirim", vbOKOnly, "informasi" set_datagrid2 End If End If End Sub Private Sub KIRIM_Click() If txt_unit <> "" Then kirim Else MsgBox " Tujuan Pengiriman Masih Ksosng", vbOKOnly End If End Sub Private Sub TOMKELUAR_Click() rs_form.Close rs_unit.Close rs_distribusi.Close rsq_dis.Close Unload Me End Sub
83
Lampiran 18 Desain antarmuka dan sourcecode daftar rekaman kadaluarsa Desain antarmuka Antarmuka ini digunakan oleh setiap unit kerja untuk melihat daftar rekaman yang sudah kadaluarsa untuk selanjutnya dimusnahkan. Adapun desain antarmuka distribusi formulir dapat dilihat pada Gambar. Pada desain antarmuka ini terdapat dua buah tombol dan dua buah grid untuk menampilkan isi tabel. Grid (1) untuk melihat daftar formulir yang sudah habis masa simpannya (kadaluarsa), tombol (2) untuk penghapusan dan tombol (3) untuk keluar dari antarmuka.
1
2
3
Sourcecode Private Sub Form_Load() RemoveCancelMenuItem Me buka_rs_unit buka_rs_record rsq_musnah.Open "SELECT tab_record.no_record, tab_form.no_form, tab_form.name_form, tab_unit.code, tab_unit.name_unit, tab_record.date_record, tab_record.date_expired, IIf(Date()>[tab_record]![date_expired],'E','N') AS Status FROM tab_unit INNER JOIN (tab_record INNER JOIN tab_form ON tab_record.no_form = tab_form.no_form) ON tab_unit.code = tab_form.kode_unit", _ ADO_DATABASE, _ adOpenKeyset, _ adLockBatchOptimistic, _ adCmdText rsq_musnah.Filter = "Code='" & MDI.Text1.Text & "' and STATUS = 'E'" Set DataGrid1.DataSource = rsq_musnah.DataSource With rs_unit
84
.Find "code='" & MDI.Text1 & "'",,adSearchForward, 1 If Not .EOF Then lbl_unit.Caption = "Unit :" & !name_unit End If End With datagrid End Sub Private Sub cari_rekaman_Click() With rs_record .Find "no_record='" & DataGrid1.Text & "'", , adSearchForward, 1 If Not .EOF Then a = MsgBox("Apakah Rekaman " & DataGrid1.Text & " Akan Diahapus?", vbYesNo, "Peringatan") If a = vbYes Then .Delete .update fso.MoveFile "D:\VB_TESIS\citra\citra_record\" & DataGrid1.Text & ".pdf", "D:\VB_TESIS\citra\pemusnahan_rekaman\" & DataGrid1.Text & right(X, 5) & ".pdf" rsq_musnah.Requery datagrid End If End If End With End Sub
85
Lampiran 19 Sampel formulir dan rekaman