ANALISIS DAN DESAIN SISTEM
4.3 Implementasi Program
Sub bab ini membahas logika penulisan program disertai dengan coding untuk setiap form. Pembahasan meliputi kode visual basic 6.0 dan skrip database utama pada setiap form aplikasi yang dibuat serta fungsi-fungsi yang utama.
4.3.1 Koneksi Database
Setelah melakukan proses pembuatan tabel pada database, langkah selanjutnya adalah membuat skrip koneksi agar database yang telah dibuat dapat diakses dari sistem. Data tentang nama database, username, passworddisimpan dalam sebuah file modul1.
!
" # $ %
$ %
& ' ! #
& '(# # & '( # & '$ ) # & ' # & ' # & '" # & '$ # & ' # & ' # # *+ , $ % , $ % , $ % " # , $ % , $ % , $ % , $ % , $ % , $ % ! , $ % ! - # - , . / , 0" "1 2. 3 . ) # , )2. 3 . ) 4 ,5 2. 3 . ) #,671. , $ % -" , 6 1 4.3.2 FormLogin
Form digunakan untuk mengetahui siapakah yang menggunakan sistem. User yang berasal dari staff Biro Pengendali memiliki hak akses berupa form SPP, form Status KKP, form Status Telusur Produk. User yang berasal dari Unit Komponen Logam hanya memiliki hak akses yaitu form Penyerahan Komponen. User yang berasal dari Biro Teknik / PPIC Unit Hospital Equipment memiliki hak akses yaitu form SPK, form Status KKP, form Status Telusur Produk dan form KKP Master. Sedangkan
57
setiap Kepala Bagian Unit Hospital Equipment masing – masing hanya memiliki hak akses yaitu form yang KKP yang sesuai dengan bagiannya masing-masing. Semua user diberi hak akses untuk mengganti password pada form Ubah Password.
Dim A As Byte Dim B As Byte
Private Sub Form_Load() txtNama.MaxLength = 20 txtKataKnc.MaxLength = 20 txtKataKnc.PasswordChar = "*" txtNama.Enabled = True txtKataKnc.Enabled = False End Sub
Private Sub txtNama_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 27 Then Unload Me If KeyAscii = 13 Then
Call BukaDB
xnama = txtNama.Text
RSLogin.Open " select Nama_Login from Staff where
Nama_Login = '" & xnama & "'", strKonn If RSLogin.EOF Then
A = A + 1
If 1 - A = 0 Then
MsgBox " Kesempatan ke " & A & " Salah " & Chr(13) & _
"Nama '" & txtNama & "' tidak dikenali.." txtNama = ""
txtNama.SetFocus strKonn.Close ElseIf 2 - A = 0 Then
MsgBox " Kesempatan ke " & A & " Salah " & Chr(13) & _
"Nama '" & txtNama & "' tidak dikenali.." txtNama = ""
txtNama.SetFocus strKonn.Close ElseIf 1 - A = 0 Then
MsgBox " Kesempatan ke " & A & " Salah " & Chr(13) & _
"Nama '" & txtNama & "' tidak dikenali.." & _ Chr(13) & _
"Kesempatan habis, Ulangi dari awal" 'strKonn.Close Unload Me End If Else txtNama.Enabled = False txtKataKnc.Enabled = True txtKataKnc.SetFocus strKonn.Close End If End If
End Sub
Private Sub txtKataKnc_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 27 Then Unload Me Dim KataKunci As String Dim NamaLogin As String If KeyAscii = 13 Then Call BukaDB
RSLogin.Open "select * from Staff where Nama_Login= '" & xnama & "' and Kata_Kunci = '" & txtKataKnc & "'", strKonn
If RSLogin.EOF Then B = B + 1
If 1 - B = 0 Then
MsgBox "Kesempatan ke " & B & " Salah!!!" txtKataKnc = ""
txtKataKnc.SetFocus strKonn.Close ElseIf 2 - B = 0 Then
MsgBox "Kesempatan ke " & B & " Salah!!!" txtKataKnc = ""
txtKataKnc.SetFocus strKonn.Close ElseIf 3 - B = 0 Then
MsgBox "Kesempatan Habis....Ulangi dari awal!!!" Unload Me strKonn.Close End If Else Unload Me FormMenu.Show End If End If End Sub 4.3.3 Form Utama
Form Utama digunakan sebagai tampilan pertama setelah user berhasil login ke dalam sistem. Di dalam form utama terdapat link untuk membuka form yang lain. Link tersebut dibuat dalam bentuk menu bar pada bagian atas aplikasi program.
4.3.4 Form SPP
Form SPP merupakan form yang digunakan untuk menentukan produk – produk apa saja yang akan diproduksi. Pada Surat Perintah
59
Produksi terjadi proses penyimpanan data ke dalam database yang melibatkan dua tabel yaitu tabel SPP dan tabel perintah_Produksi dimana satu Surat Perintah Produksi bisa memiliki banyak produk. Listing kode penyimpanan pada Surat Perintah Produksi
Private Sub cmdTambah_Click() Call BukaDB
cmdCetak.Enabled = True Dim xSQLTambahSpp As String Dim nik2 As String
Set RSNik = New ADODB.Recordset
If txtNoSpp.Text = "" Or txtNoRincian.Text = "" Or cmbNoCtlg = "" Or txtJmlh = "" Or txtTargetSls = "" Then MsgBox "Data belum lengkap..."
Exit Sub End If
xSpp = txtNoSpp.Text
'simpan transaksi ke tabel SPP
RSNik.Open "select * from staff where Nama_Login = '" & xnama & "'", strKonn
If Not RSNik.EOF Then nik2 = RSNik!NIK End If
If cekspp(txtNoSpp.Text) = False Then 'cek jika belum ada baru simpan
xSQLTambahSpp = " insert into SPP(No_Spp , Tanggal) values ('" & txtNoSpp & "' , '" & lblTanggal & "')" strKonn.Execute (xSQLTambahSpp)
End If
If cekspp2(txtNoSpp.Text) = False Then xSQLTambahSpp = ""
xSQLTambahSpp = "insert into
pengesahan_spp(NIK,no_SPP) values ('" & nik2 & "', '" & txtNoSpp & "')"
strKonn.Execute (xSQLTambahSpp) End If
'Simpan transaksi ke tabel Perintah_Produksi xSQLTambahSpp = ""
xSQLTambahSpp = "insert into Perintah_Produksi( No_Rincian_Komponen, No_Catalog, No_Spp, Jumlah ,
Target_Selesai, Keterangan) " & _
"values ('" & txtNoRincian & "','" & cmbNoCtlg & "', '" & txtNoSpp & "', '" & txtJmlh & "', '" & txtTargetSls & "', '" & txtKet & "' )"
strKonn.Execute (xSQLTambahSpp) fresh
Form_Activate End Sub
4.3.5 Form SPK
Form ini merupakan form yang digunakan untuk melakukan transaksi pemesanan komponen – komponen yang dibutuhkan untuk membuat sebuah produk berdasarkan nomor catalog produk yang ada di Surat Perintah Produksi.
Listing kode pencarian pada form SPK.
Dim RSSpk3 As ADODB.Recordset Private Sub cmdCari_Click() Dim xsql As String
Set RSSpk = New ADODB.Recordset
If txtNoSpk2 = "" Then
MsgBox "Masukan Nomor SPK!" txtNoSpk2.SetFocus
Exit Sub End If
xsql = "select No_Spk, No_Spp, No_Catalog, Jumlah, tanggal, " & _
"Tgl_Pengiriman from SPK where No_Spk = '" & txtNoSpk2 & "' order by No_Spk asc "
RSSpk.CursorLocation = adUseClient RSSpk.LockType = adLockOptimistic
RSSpk.Open xsql, strKonn, adOpenDynamic, , adCmdText ' perintah untuk buka queri
If RSSpk.EOF Then With RSSpk
MsgBox "Pencarian tidak ditemukan." txtNoSpk2.SetFocus End With Else Set DG_SPK.DataSource = RSSpk End If End Sub
4.3.6 Form Lembar Penyerahan Komponen
Form ini digunakan untuk mencatat transaksi penyerahan komponen dari unit Komponen Logam ke Unit Hospital Equipment sesuai dengan nomor catalog produk yang ada pada Surat Pemesanan Komponen.
61
Pada tabel akan ditampilkan data transaksi yang sudah disimpan ke database.
Listing kode menampilkan ke DataGrid
Private Sub Form_Activate()
Set RSKomponen = New ADODB.Recordset xsql1 = "select Penyerahan_Komponen.No_Lpb, LPB.No_Spk,LPb.Jumlah,Lpb.Tanggal, Penyerahan_Komponen.No_Komponen, Komponen.Nama_Komponen, " & _ "Komponen.Material, Komponen.JmlPerUnit,Penyerahan_Komponen.Jml_Krm_I, Penyerahan_Komponen.Jml_Krm_II,Penyerahan_Komponen.Jml_Krm_III " & _
"from LPB, Penyerahan_Komponen, Komponen Where
LPB.No_Lpb = Penyerahan_Komponen.No_Lpb And " & _
"Penyerahan_Komponen.No_Komponen = Komponen.No_Komponen order by Penyerahan_komponen.No_Lpb desc"
RSKomponen.CursorLocation = adUseClient RSKomponen.LockType = adLockOptimistic
RSKomponen.Open xsql1, strKonn, adOpenDynamic, , adCmdText ' perintah untuk buka queri
Set DG_LPB.DataSource = RSKomponen End Sub
4.3.7 Form KKP Master
Form KKP Master intinya digunakan untuk menentukan tanggal kapan produk mulai diproses dan kapan harus selesai dari proses produksi. Listing kode untuk menyimpan data ke tabel KKP.
Private Sub cmdSimpan_Click()
xNoKKP = cmbNoSpp.Text + cmbNoRincian.Text + txtNoKkp.Text If cmbNoSpp.Text = "" Or cmbNoRincian.Text = "" Or txtNoKkp.Text = "" Or cmbNoGambar.Text = "" Then
MsgBox "Data belum lengkap..." Exit Sub
End If
If DTPicSelesaiLas > DTPicSelesaiCat Or DTPicSelesaiCat > DTPicSelesaiAss Or DTPicSelesaiAss > DTPicSelesaiPack Then
MsgBox "Cek Masalah Penanggalan...." Exit Sub
End If
Dim SQLTambahKKPMaster As String
SQLTambahKKPMaster = " insert into KKP(No_Kkp,No_Catalog, No_Gambar,No_spp,NoRc1,NoUrt, " & _
" Tanggal_Kkp, PTSL, PTSC, PTSA, PTSP) " & _
cmbNoRincian & "' + '" & txtNoKkp & "', '" & lblNoCatalog & "', " & _
" '" & cmbNoGambar & "','" & cmbNoSpp & "','" & cmbNoRincian & "','" & txtNoKkp & "', " & _
" '" & lblTglKKP & "', '" & DTPicSelesaiLas & "', '" & DTPicSelesaiCat & "', '" & DTPicSelesaiAss & "', '" & DTPicSelesaiPack & "') "
strKonn.Execute (SQLTambahKKPMaster) End Sub
4.3.8 Form KKP Las
Form KKP Las, KKP Cat, KKP Assembly dan KKP Packing pada dasarnya sama yaitu user memasukkan tanggal mulai dan tanggal selesai proses produksi untuk masing – masing bagian.
Listing program KKP Las.
Private Sub cmdBatal_Click() Unload Me
End Sub
Private Sub cmbNoKkp_Click()
Set RSKkpLas = New ADODB.Recordset
RSKkpLas.Open "select * from KKP where no_kkp = '" & cmbNoKkp & "'", strKonn
If Not RSKkpLas.EOF Then If Not RSKkpLas.EOF Then lblTglSelesai = RSKkpLas!PTSL End If
End If End Sub
Private Sub cmdCari_Click()
Set rsCariLas = New ADODB.Recordset Set rsCariLas2 = New ADODB.Recordset
rsCariLas.Open "select * from detail_kkp where no_kkp = '" & txtNoKkp2 & "' and nama_detail_kkp = 'Las'", strKonn
rsCariLas2.Open "select * from kkp where no_kkp = '" & txtNoKkp2 & "'", strKonn
If rsCariLas.EOF Then With RSCari
MsgBox "Pencarian tidak ditemukan." txtNoKkp2.SetFocus End With Else With rsCariLas cmbNoKkp.Text = rsCariLas!no_kkp xNoKKP = cmbNoKkp.Text lblNamaKkp = "Las" DTPTglMulai = rsCariLas!Tgl_mulai
63 DTPTglSelesai = rsCariLas!tgl_selesai End With With rsCariLas2 lblTglSelesai = rsCariLas2!PTSL End With End If End Sub
Private Sub cmdCetak_Click() If cmbNoKkp.Text = "" Then MsgBox "Data Masih Kosong!" Exit Sub
End If
LaporanKKPLas.Show End Sub
Private Sub cmdTambah_Click()
If DTPTglMulai > DTPTglSelesai Then MsgBox " Penulisan tanggal salah." Exit Sub
End If
xNoKKP = cmbNoKkp.Text
Dim SQLTambahKKPLas As String
If cekLas(Trim(cmbNoKkp.Text), lblNamaKkp) = False Then
SQLTambahKKPLas = " insert into detail_Kkp(No_Kkp,
Nama_Detail_Kkp, Tgl_Mulai, Tgl_Selesai, Opperator, Keterangan ) " & _
" values ('" & cmbNoKkp & "', '" & lblNamaKkp & "' , '" & DTPTglMulai & "', '" & DTPTglSelesai & "', '" & lblOperator & "', '" & lstKet & "')"
strKonn.Execute (SQLTambahKKPLas) MsgBox "Penyimpanan Berhasil"
Else: MsgBox "Nomor KKP sudah diisi " End If
End Sub
Function cekLas(xNoKKP As String, xnama As String) As Boolean Dim xsql As String
Dim rsCariLas As ADODB.Recordset
xsql = "select * from detail_kkp where no_kkp ='" & xNoKKP & "' and nama_detail_kkp = '" & xnama & "'"
Set rsCariLas = New ADODB.Recordset rsCariLas.Open xsql, strKonn
If Not rsCariLas.EOF Then cekLas = True
Else
cekLas = False End If
End Function
Private Sub Form_Load() Call BukaDB
Set RSLas = New ADODB.Recordset Set RSLas2 = New ADODB.Recordset
RSLas.Open "select * from KKP order by No_Kkp desc", strKonn cmbNoKkp.Clear
Do While Not RSLas.EOF
cmbNoKkp.AddItem RSLas!no_kkp RSLas.MoveNext
Loop
RSLas2.Open "select * from Staff where nama_login = '" & xnama & "'", strKonn
If Not RSLas2.EOF Then lblOperator = RSLas2!Nama KondisiAwal
End Sub
Private Sub KondisiAwal() lblNamaKkp = "Las" cmbNoKkp.Text = "" cmdHapus.Enabled = False cmdUbah.Enabled = False End Sub
Private Sub cmdKeluar_Click() strKonn.Close
Unload Me End Sub
Private Sub cmdRefresh_Click() KondisiAwal
End Sub
Private Sub txtNoKkp2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then cmdCari.SetFocus
If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack Or KeyAscii = vbKeyTab Or KeyAscii = vbKeyReturn) Then MsgBox "Harus angka"
End Sub
4.3.9 Form Status KKP
Form status KKP dan status telusur produk memiliki logika yang hampir sama. Pada intinya hanya mengambil data dari database berdasarkan nomor SPP dan nomor Catalog, kemudian menampilkan di tabel. Hanya saja untuk Form status KKP data yang ditampilkan hanya data – data kertas kerja produksi.
Listing program untuk menampilkan data pada tabel :
Private Sub cmdTampil_Click() Dim xsql As String
Dim RSStatKkp As ADODB.Recordset Set RSStatus = New ADODB.Recordset Set RSStatKkp = New ADODB.Recordset cmdCatak.Enabled = True
If cmbBulan.Text = "" Or cmbTahun.Text = "" Then MsgBox "Bulan dan Tahun harus diisi."
Exit Sub End If
65 xThn = Right(cmbTahun.Text, 2) xGabung = cmbBulan.Text + "/" + xThn xsql = "select Produk.Nama_Produk,
Perintah_Produksi.No_Catalog, Perintah_Produksi.No_Spp, " & _ "KKP.No_Kkp, Perintah_Produksi.Jumlah,
detail_kkp.nama_detail_kkp,detail_Kkp.Tgl_Mulai, detail_Kkp.Tgl_Selesai, " & _
"BPBJ.Tgl_Bpbj as Kirim from spp, bpbj,
Perintah_Produksi, Produk, detail_Kkp, KKP ,produksi " & _ "where SPP.no_spp = perintah_produksi.no_spp and perintah_produksi.no_catalog = Produk.no_catalog " & _
"and perintah_produksi.no_spp = left(kkp.no_kkp,6) and perintah_produksi.no_catalog = kkp.no_catalog " & _
"and kkp.no_kkp = detail_kkp.no_kkp and " & _
"perintah_produksi.no_catalog = produksi.No_catalog and produksi.no_bpbj = bpbj.no_bpbj and " & _
"Right(detail_kkp.Tgl_mulai,5) = '" & xGabung & "' and Right(detail_kkp.Tgl_Selesai,5) = '" & xGabung & "' " & _
"order by produk.nama_produk, Tgl_mulai asc"
RSStatus.CursorLocation = adUseClient RSStatus.LockType = adLockOptimistic
RSStatus.Open xsql, strKonn, adOpenDynamic, , adCmdText ' perintah untuk buka queri
Set DG_Status.DataSource = RSStatus End Sub
4.3.10 Form Status Telusur Produk
Pada form Status Telusur Produk akan ditampilkan seluruh data dari sebuah produk berdasarkan nomor SPP dan nomor Catalog. Untuk memasukkan nomor SPP dan nomor Catalog digunakan komponen ComboBox.
Listing program untuk menampilkan data pada tabel.
Private Sub cmdTampil_Click() Dim xsql As String
Dim RSTelusur As ADODB.Recordset 'Set RSTelusur = New ADODB.Recordset Set RSTelusur = New ADODB.Recordset cmdCetak.Enabled = True
xSpp2 = FormTelusur.cmbNoSpp.Text xCtlg = FormTelusur.cmbNoCatalog.Text
If cmbNoSpp.Text = "" Or cmbNoCatalog.Text = "" Then MsgBox "Nomor SPP & Nomor Catalog Masih Kosong." Exit Sub
xsql = "select Perintah_Produksi.No_Spp, Produk.No_Catalog, Produk.Nama_Produk, " & _
"Perintah_Produksi.jumlah, Perintah_Produksi.target_selesai, " & _ "spk.No_spk,kkp.No_kkp,bpbj.Tgl_bpbj as TGL_Selesai, " & _ "detail_kkp.nama_detail_kkp , detail_kkp.Tgl_mulai, detail_kkp.tgl_selesai " & _
"From Produk, perintah_produksi, spp, spk, kkp, bpbj, produksi, detail_kkp " & _
"where spp.no_spp=perintah_produksi.no_spp and Produk.No_Catalog = Perintah_Produksi.No_Catalog and " & _
"perintah_produksi.no_spp = spk.no_spp and
perintah_produksi.no_catalog = spk.no_catalog and " & _
"perintah_produksi.no_spp = kkp.no_spp and
perintah_produksi.no_catalog = kkp.no_catalog and " & _
"perintah_produksi.no_spp = produksi.no_spp and
perintah_produksi.no_catalog = produksi.no_catalog and " & _
"bpbj.no_bpbj = produksi.no_bpbj And kkp.no_kkp = detail_kkp.no_kkp and " & _
"perintah_produksi.no_spp = '" & xSpp2 & "' and perintah_produksi.no_Catalog = '" & xCtlg & "'"
RSTelusur.CursorLocation = adUseClient RSTelusur.LockType = adLockOptimistic
RSTelusur.Open xsql, strKonn, adOpenDynamic, ,
adCmdText ' perintah untuk buka queri
Set DG_Telusur.DataSource = RSTelusur End Sub
4.3.11 Form Ubah Password
Pada form Ubah Password terjadi proses transaksi update pada tabel Staff yaitu dengan mengubah kata_kunci yang lama dengan yang baru.
Listing program untuk meng-update data pada tabel Staff.
Private Sub cmdProses_Click()
Dim RSUbahPass As New ADODB.Recordset Set RSUbahPass = New ADODB.Recordset Dim xsql As String, passwd As String Dim SQLUbah As String
xsql = "select * from staff where nama_login = '" & xnama & "'"
RSUbahPass.Open xsql, strKonn, adOpenDynamic, ,
adCmdText
With RSUbahPass
passwd = RSUbahPass!Kata_kunci End With
If txtPWLama.Text = passwd Then
67
SQLUbah = "update Staff set Kata_kunci = '" & txtPWBaru & "' where Nama_Login = '" & xnama & "'"
strKonn.Execute (SQLUbah)
MsgBox "Password telah diperbaharui." End If
Else
MsgBox "Password Salah!" End If
End Sub