• Tidak ada hasil yang ditemukan

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

Dokumen terkait