Implementasi Proses dan Pemrograman Sistem

51 grafik pengguna akan lebih mudah menginterpretasikan suatu informasi yang disajikan. Gambar 19. Form Grafik Simbapro Krisan Potong PT ABN

2. Implementasi Proses dan Pemrograman Sistem

Pada saat pemrograman dibuatlah modul untuk efektivitas dan efisiensi pengkodean, yaitu dengan meringkas kode-kode program yang sama dan digunakan secara berulang, kemudian dikumpulkan menjadi suatu sub program sendiri yang dapat dipanggil berulang-ulang sesuai kebutuhan. Sub program-sub program tersebut disimpan dalam file modul yang bernama modul1.bas. Sub program dalam bentuk prosedur maupun fungsi yang disimpan dalam file modul1.bas antara lain sebagai berikut. a. Prosedur Form Center Prosedur ini dijalankan saat form aktif. Semua form secara default diposisikan di tengah jendela form menu utama. prosedur untuk memposisikan jendela form di menu mdi Sub FormCenterFrm As Form Frm.Top = menu.Height 0.85 2 ‐ Frm.Height 2 Frm.Left = menu.Width 2 ‐ Frm.Width 2 End Sub b. Prosedur Koneksi Basis Data Komunikasi antara aplikasi Simbapro Krisan Potong PT ABN dengan Ms Access RDBMS dilakukan dengan menggunakan perantara Open Database 52 Conectivity Data Source Name ODBC DSN. Kontrol Data aplikasi menggunakan ActiveX Data Object ADO. Kontrol ADO inilah yang dikoneksikan ke DSN. Dengan ODBC ini dapat dilakukan pengaksesan data dari berbagai macam DBMS hanya dengan memastikan bahwa koneksi aplikasi ke ODBC sudah benar. Koneksi menggunakan perantara ODBC dipilih karena koneksi yang tersebut sekaligus untuk mengkoneksikan Crystal Report 4.6.1.116, yaitu program untuk pembuatan desain laporan, dengan RDBMS. Program bawaan Visual Basic 6 ini tidak dapat mengenali basis data Ms Acces 2007 yang digunakan dalam membangun basis data. Public Conn As New ADODB.Connection Public conshape As New ADODB.Connection Public rs As New ADODB.Recordset Public rshpt As ADODB.Recordset Public rssuplier As ADODB.Recordset Public rspengguna As ADODB.Recordset Public rslahan As ADODB.Recordset Public rssaprodi As ADODB.Recordset Public rsgh As ADODB.Recordset Public rsghdetil As ADODB.Recordset Public rsbagian As ADODB.Recordset Public rslokasi As ADODB.Recordset Public rsbibit As ADODB.Recordset Public rsvar As ADODB.Recordset Public rskrisan As ADODB.Recordset Public rstranstanaman As ADODB.Recordset prosedur untuk melakukan koneksi basis data Public Sub bukadb If Conn.State = 1 Then Conn.Close Set Conn = New ADODB.Connection Set rssuplier = New ADODB.Recordset Set rshpt = New ADODB.Recordset Set rslahan = New ADODB.Recordset Set rsgh = New ADODB.Recordset Set rsghdetil = New ADODB.Recordset Set rssaprodi = New ADODB.Recordset Set rsbagian = New ADODB.Recordset Set rslokasi = New ADODB.Recordset Set rsbibit = New ADODB.Recordset Set rskrisan = New ADODB.Recordset Set rspengguna = New ADODB.Recordset Set rsvar = New ADODB.Recordset Set rstranstanaman = New ADODB.Recordset Conn.Open dsn=coba End Sub prosedur untuk melakukan penutupan koneksi basis data Public Sub tutupdb 53 Conn.Close Set Conn = Nothing End Sub b. Prosedur Stok Tanaman Prosedur ini digunakan ketika melakukan operasi perubahan jumlah penanaman awal ataupun pemeliharaan terhadap objek tanaman induk, krisan, bibit. Perubahan tersebut akan mempengaruhi jumlah stok objek tanaman. Argumen yang digunakan adalah jenis objek tanaman dan kode unik dari objek tanaman tersebut. Public Sub updatestokByVal strobjek As String, ByVal strkode As String Dim longstok, longawal, longmasuk, longkeluar As Long Dim rsawal As New ADODB.Recordset Dim rsinput As New ADODB.Recordset Dim rsoutput As New ADODB.Recordset Dim strtabel, strtabeltrans, strkolom, strkolomid As String Dim strawal, strinput, stroutput, strupdate As String Select Case strobjek objek adalah tanaman induk Case induk: strtabel = tbl_induk strtabeltrans = tbl_trans_induk strkolomid = [indukid] strkolom = jmlinduk objek adalah tanaman krisan Case krisan strtabel = tbl_krisan strtabeltrans = tbl_trans_krisan strkolomid = [krisanid] strkolom = jmlkrisan objek adalah bibitkrisan Case Else strtabel = tbl_bibit strtabeltrans = tbl_trans_bibit strkolomid = [bibitid] strkolom = jmlbibit End Select strinput = SELECT SUM strkolom AS masuk strinput = strinput FROM tbl_trans_tanaman INNER JOIN strtabeltrans ON tbl_trans_tanaman.[no] = strtabeltrans .kegiatanid strinput = strinput WHERE tbl_trans_tanaman.status=PLUS AND strkolomid = strkode stroutput = SELECT SUM strkolom AS keluar stroutput = stroutput FROM tbl_trans_tanaman INNER JOIN strtabeltrans ON tbl_trans_tanaman.[no] = strtabeltrans .kegiatanid stroutput = stroutput WHERE tbl_trans_tanaman.status=MINUS AND strkolomid = strkode Call bukadb rsinput.Open strinput, Conn 54 rsoutput.Open stroutput, Conn If IsNullrsinputmasuk = True Then longmasuk = 0 Else longmasuk = rsinputmasuk End If If IsNullrsoutputkeluar = True Then longkeluar = 0 Else longkeluar = rsoutputkeluar End If longstok = longmasuk ‐ longkeluar update stok terakhier strupdate = UPDATE strtabel SET stok = longstok strupdate = strupdate WHERE strkolomid = strkode Conn.Execute strupdate Call tutupdb End Sub c. Prosedur Koneksi Data Shape Grafik yang dibuat, di antaranya ada yang menggunakan kontrol data shape, karena melibatkan 3 variabel yang berbeda. Dengan kontrol ini dapat dibuat bentuk cross tab nilai dari suatu recordset. Public rsshape As New ADODB.Recordset Public Sub bukashape If conshape.State = 1 Then conshape.Close Set conshape = New ADODB.Connection conshape.OpenPROVIDER=MSDataShape;dsn=coba;uid=;pwd=;Data Provider=MSDASQL End Sub Public Sub tutupshape conshape.Close Set conshape = Nothing End Sub d. Prosedur Minggu Kerja Prosedur ini digunakan untuk perhitungan minggu kerja. Minggu kerja aktif adalah fungsi dari perbedaan waktu dalam minggu tanggal periode awal dengan tanggal saat sistem aktif. Public Function mk As Integer Dim rsmk As New ADODB.Recordset Call bukadb rsmk.Open tbl_periode, Conn mk = DateDiffw, rsmkawal, Date Call tutupdb End Function 55 e. Prosedur Kode Transaksi Pada setiap transaksi diberikan kode unik, sehingga perlu dibuat otomatisasi dalam pembuatan kode transaksi kegiatan pemeliharaan. Prosedur ini memintakan parameter nilai dari recordset tabel transaksi, tanggal transaksi, dan nama kolom kode transaksi. Kode transaksi dibuat memenuhi yy+mm+dd+0001. Kode tersebut akan bertambah secara urut dan memulai dari urutan pertama bila ada perubahan hari. fungsi umum untuk mengambil kode transaksi operasional Public Function transrs As ADODB.Recordset, tgltrans, kolomid As String As String baca tabeltrans yang transindukidnya paling akhir rs.Requery Dim strurutan As String 10 Dim lnHitung As Long With rs jika data tidak ditemukan maka... If .EOF Then strurutan = Righttgltrans, 2 + Midtgltrans, 4, 2 + Lefttgltrans, 2 + 0001 no transidnya adalah YYMMDD0001 trans = strurutan Else jika ganti hari maka... nomor transindukidnya If Left.Fields kolomid , 6 Righttgltrans, 2 + Midtgltrans, 4, 2 + Lefttgltrans, 2 Then YYMMDD0001 strurutan = Righttgltrans, 2 + Midtgltrans, 4, 2 + Lefttgltrans, 2 + 0001 Else jika harinya sama maka... YYMMDD0001+1 lnHitung = .Fields kolomid + 1 strurutan = Righttgltrans, 2 + Midtgltrans, 4, 2 + Lefttgltrans, 2 + Right0000 lnHitung, 4 End If End If trans = strurutan End With End Function f. Prosedur Hapus Tabel Temporer Proses transaksi kadang melibatkan sebuah tabel temporer pada basis data untuk penyimpanan sementara data transaksi sebelum dilakukan penyimpanan pada tabel utama. Sebelum tabel temporari digunakan, tabel tersebut harus dikosongkan terlebih dahulu. 56 prosedur umum untuk menghapus isi suatu tabel tertentu Public Sub hapustabelstrtbl As String Dim rshapus As New ADODB.Recordset Call bukadb rshapus.Open strtbl, Conn koreksi keberadaan data, bila ada data maka hapus data If rshapus.EOF = False Then Conn.Execute delete from strtbl End If Call tutupdb End Sub g. Prosedur Kontrol Text Box Prosedur ini digunakan untuk melakukan pengosongan nilai dari semua kontrol text box yang terdapat pada suatu objek form. prosedur untuk mengosongkan textbox Public Sub kosongtextobjform As Form Dim objek As Control For Each objek In objform If TypeOf objek Is TextBox Then objek.Text = Next End Sub h. Prosedur Cek Data Prosedur ini berupa fungsi boolean untuk mengecek keberadaan data pada suatu recordset aktif. Fungsi akan mengembalikan nilai true bila data ditemukan pada recordset yang dimaksud. Sebaliknya akan memberikan nilai false bila data tidak ada. Public Function cekByVal strtabel As String, ByVal kolom As String, ByVal strnilai As String As Boolean cek = False strquery = SELECT FROM strtabel WHERE [ kolom ] = strnilai Call bukadb rs.Open strquery, Conn If Not rs.EOF Then cek = True End If Call tutupdb End Function 57 i. Prosedur Pesan Standar Prosedur ini digunakan untuk menampilkan pesan konfirmasi standar. prosedur pesan informasi Public Sub pesanByVal strjenis As String, ByVal strpesan As String Select Case UCaseTrimstrjenis Case PERHATIAN MsgBox UCasestrpesan, vbExclamation + vbOKOnly, [PESAN] Case INFO: MsgBox UCasestrpesan, vbInformation + vbOKOnly, [PESAN] End Select End Sub j. Prosedur Kode Tanaman Induk Prosedur ini digunakan dalam pembuatan kode internal dan eksternal tanaman induk yang unik. Kode internal tanaman induk memenuhi yy-mm- 000001. Angka kode akan bertambah bila tanaman induk ditanam pada bulan yang sama, dan akan mereset dari awal bila ada perubahan bulan. Sementara itu, kode tanaman eksternal memenuhi VARID + LOKASIID + MM + YY nomorinduk merupakan kodetanaman internal Private Sub nomorinduk Dim lnHitung As Long Dim strurutan As String Call bukadb rs.Open select from tbl_induk where indukid inselect maxindukid from tbl_induk ORDER BY indukid desc, Conn If rs.EOF Then kode = yy‐mm‐000001 strurutan = RightMe.DTPtgltanam, 2 + MidMe.DTPtgltanam, 4, 2 + 000001 Else If Leftrsindukid, 4 RightMe.DTPtgltanam, 2 + MidMe.DTPtgltanam, 4, 2 Then strurutan = RightMe.DTPtgltanam, 2 + MidMe.DTPtgltanam, 4, 2 + 000001 Else lnHitung = rsindukid + 1 strurutan = RightMe.DTPtgltanam, 2 + MidMe.DTPtgltanam, 4, 2 + Right0000 lnHitung, 6 End If End If Call tutupdb Me.txtindukid.Text = strurutan End Sub kodeinduk merupakan kode tanaman induk eksternal VARID + LOKASIID + MM + YY Private Sub kodeinduk Me.txtkode.Text = MidMe.cmbvarietas.Text, 3, 3 Me.cmblokasi.Text _ MidMe.DTPtgltanam, 4, 2 RightMe.DTPtgltanam, 2 End Sub 58 k. Prosedur Validasi Kelengkapan Data Sebelum data penting dilengkapi oleh pengguna, sistem akan menolak proses penyimpanan dan memberikan konfirmasi adanya ketidaklengkapan data yang akan disimpan. Metode vbCrlf digunakan untuk membuat baris baru pada tampilan message box. validasi kelengkapan data ms = If Me.cmbvarietas.Text = Then ms = ms + VARIETAS BELUM DIISI + vbCrLf If Me.txtasalinduk.Text = Then ms = ms + ASAL INDUK BELUM DIIISI + vbCrLf If Me.txtremske.Text = Then ms = ms + TURUNAN INDUK BELUM DIISI + vbCrLf If Me.txtjumlah.Text = Then ms = ms + JUMLAH STEK BELUM DIISI + vbCrLf If Me.cmblokasi.Text = Then ms = ms + LOKASI BELUM DIISI + vbCrLf If Me.txtket.Text = Then ms = ms + KETERANGAN INDUK BELUM DIISI + vbCrLf If ms Then Call pesaninfo, ms Exit Sub End If l. Prosedur Validasi Data Unik Sebelum dilakukan penyimpanan data, sistem akan melakukan pengecekan terhadap keberadaan data baru. Bila sudah terdapat data yang sama sistem akan menolak untuk melakukan proses penyimpanan. ‘validasi unik data If cektbl_induk, indukid, Me.txtindukid.Text = False Then MsgBox MOTHERSTOK ID = Me.txtindukid.Text ‐ Me.txtkode.Text Space5 Jumlah = Me.txtjumlah siap, vbOKOnly + vbInformation, [PESAN] Call simpan Else Call pesaninfo, DATA TANAMAN INDUK SUDAH ADA End If c. Prosedur Setting Grid List View Kode untuk melakukan pengaturan grid objek List View pada saat form utama tanaman induk dijalankan. Kode ini dipanggil saat form utama pada even form_load. Sub gridinduk Dim header As ColumnHeader Me.lsdata.ColumnHeaders.Clear Set header = Me.lsdata.ColumnHeaders.Add, , ID INDUK, 1500, lvwColumnLeft Set header = Me.lsdata.ColumnHeaders.Add, , KODE INDUK, 1500, lvwColumnLeft Set header = Me.lsdata.ColumnHeaders.Add, , VARIETAS, 2000, lvwColumnLeft Set header = Me.lsdata.ColumnHeaders.Add, , LOKASI, 800, lvwColumnCenter 59 Set header = Me.lsdata.ColumnHeaders.Add, , ASAL, 1500, lvwColumnCenter Set header = Me.lsdata.ColumnHeaders.Add, , REMS KE, 1500, lvwColumnCenter Set header = Me.lsdata.ColumnHeaders.Add, , TGL TANAM, 1500, lvwColumnCenter Set header = Me.lsdata.ColumnHeaders.Add, , JUMLAH, 1500, lvwColumnRight Set header = Me.lsdata.ColumnHeaders.Add, , KETERANGAN, 4000, lvwColumnLeft End Sub m. Prosedur Tampil Data Kode untuk mengambil data dari basis data sesuai dengan kategori melalui perintah sql strquery yang telah dimodifikasi agar bisa dieksekusi pada Visual Basic. Bila data ditemukan maka data tersebut akan ditampilkan dalam kontrol list view. Perintah sql dieksekusi melalui objek recordset setelah membuka koneksi dengan basis data terlebih dahulu. Kemudian dilakukan proses pengkodean untuk menampilkan data tersebut menggunakan kontrol objek List View. Private Sub tampildata strquery = select strquery = strquery from tbl_induk inner join tbl_varietas on strquery = strquery tbl_induk.varid = tbl_varietas.varid strquery = strquery INNER JOIN Tbl_trans_induk ON tbl_induk.ketinduk = tbl_trans_induk.transid Dim i As Long i = 1 Me.lsdata.ListItems.Clear Call bukadb If Me.cmbjk.ListIndex = 1 Then berdasarkan kode induk rs.Open strquery WHERE [tbl_induk.indukid] LIKE Me.txtcari.Text ORDER BY tbl_induk.tgltanam desc, Conn ElseIf Me.cmbjk.ListIndex = 2 Then berdasarkan varietas rs.Open strquery WHERE [tbl_varietas.varietas] LIKE Me.txtcari.Text ORDER BY tbl_induk.tgltanam desc, Conn ElseIf Me.cmbjk.ListIndex = 3 Then rs.Open strquery where [tbl_induk.lokasiid] LIKE Me.txtcari.Text ORDER BY tbl_induk.tgltanam desc, Conn Else rs.Open strquery ORDER BY tbl_induk.tgltanam desc, Conn End If pengingkatan data dari recordset ke listview databoundcontrol Do While Not rs.EOF Me.lsdata.ListItems.Add i, , Trimrsindukid Me.lsdata.ListItemsi.ListSubItems.Add 1, , Trimrskodeinduk Me.lsdata.ListItemsi.ListSubItems.Add 2, , Trimrsvarid ‐ Trimrsvarietas Me.lsdata.ListItemsi.ListSubItems.Add 3, , Trimrslokasiid Me.lsdata.ListItemsi.ListSubItems.Add 4, , Trimrsasalinduk Me.lsdata.ListItemsi.ListSubItems.Add 5, , Trimrsremske Me.lsdata.ListItemsi.ListSubItems.Add 6, , Trimrstgltanam Me.lsdata.ListItemsi.ListSubItems.Add 7, , Trimrsjmlinduk Me.lsdata.ListItemsi.ListSubItems.Add 8, , Trimrskettransinduk i = i + 1 60 rs.MoveNext Loop Call tutupdb Me.lblrecord.Caption = Me.lsdata.ListItems.Count Data Ditemukan End Sub o. Prosedur Simpan Data Penyimpanan data master induk melibatkan 2 buah tabel, yaitu tbl_induk dan tbl_trans_induk. Proses pertama yang dilakukan pada prosedur ini adalah mengambil kode transaksi terakhir dari tbl_trans_induk untuk mendapatkan kode transaksi penanaman induk. Perintah query penyimpanan disimpan dalam variabel string strquery1 dan strquery2. Strquery1 untuk sintaks perintah penyimpanan data pada tabel_induk sedangkan strquery2 untuk penyimpanan data tbl_trans_induk. Proses penyimpanan data ke dalam kedua tabel harus berhasil semuanya. Bila salah satu gagal maka proses penyimpanan pada kedua tabel harus dibatalkan. Oleh karena itu, digunakanlah metode begintrans, committrans, dan RollbackTrans yang ada pada objek conn ADODB.Connection. Metode begintrans digunakan untuk memulai transaksi baru, comittrans untuk menyimpan perubahan dari proses transaksi baru yang diawali metode begintrans. Rollbacktrans untuk membatalkan perubahan yang terjadi saat transaksi atau mengakhiri transaksi yang gagal. Private Sub simpan On Error GoTo salahtransaksi Dim strtransid As String Dim strquery1 As String Dim strquery2 As String ambil data transid terbaru pemeliharaan induk Call bukadb rs.Open SELECT FROM tbl_trans_induk WHERE transid inselect maxtransid from tbl_trans_induk ORDER BY transid desc, Conn strtransid = transrs, Date, transid Call tutupdb simpan data pada tabel induk strquery1 = INSERT INTO tbl_induk values Me.txtindukid.Text , strquery1 = strquery1 Me.txtkode.Text , strquery1 = strquery1 LeftMe.cmbvarietas.Text, 5 , strquery1 = strquery1 Me.cmblokasi.Text , strquery1 = strquery1 Me.txtasalinduk.Text , strquery1 = strquery1 Me.txtremske , 61 strquery1 = strquery1 Me.DTPtgltanam , strquery1 = strquery1 Me.txtjumlah.Text , strquery1 = strquery1 strtransid , strquery1 = strquery1 Me.txtjumlah.Text simpan data pada tabel trans_induk strquery2 = INSERT INTO tbl_trans_induk values strtransid , strquery2 = strquery2 Me.txtindukid.Text , strquery2 = strquery2 K001, strquery2 = strquery2 Me.DTPtgltanam , strquery2 = strquery2 Me.txtjumlah.Text , strquery2 = strquery2 Me.txtket.Text Call bukadb Conn.BeginTrans Conn.Execute strquery1 Conn.Execute strquery2 Conn.CommitTrans Call tutupdb Call Bersih frmbroinduk.cmdrefresh.Value = True Call Form_Activate Exit Sub salahtransaksi: Conn.RollbackTrans MsgBox PENYIMPANAN DATA GAGAL _ KARENA Err.Number Err.Description, vbInformation + vbOKOnly, [PESAN] Call tutupdb End Sub p. Prosedur Update Data Kode untuk update data tidak jauh berbeda dalam algoritma proses penyimpanan data. Hanya saja berbeda dalam perintah query untuk update data serta adanya proses update stok dengan memanggil prosedur umum updatestok. Hal itu dikarenakan terdapat perubahan jumlah tanam awal. Perubahan jumlah tanam induk akan mengakibatkan perubahan stok tanaman induk. On Error GoTo salahtransaksi Dim strtransid As String Dim strquery1 As String Dim strquery2 As String update pada tabel induk Call kodeinduk strquery1 = UPDATE tbl_induk SET strquery1 = strquery1 kodeinduk = Me.txtkode.Text , strquery1 = strquery1 varid = LeftMe.cmbvarietas.Text, 5 , strquery1 = strquery1 lokasiid = Me.cmblokasi.Text , strquery1 = strquery1 asalinduk = Me.txtasalinduk.Text , strquery1 = strquery1 remske = Me.txtremske , strquery1 = strquery1 tgltanam = Me.DTPtgltanam , strquery1 = strquery1 jmlinduk = Me.txtjumlah.Text strquery1 = strquery1 WHERE [indukid]= Me.txtindukid.Text 62 Call bukadb rs.Open SELECT ketinduk FROM tbl_induk WHERE [indukid] = Me.txtindukid.Text , Conn If rs.EOF = False Then strtransid = rsketinduk Call tutupdb update pada tabel trans induk strquery2 = UPDATE tbl_trans_induk SET strquery2 = strquery2 tgltrans = Me.DTPtgltanam , strquery2 = strquery2 jmlinduk = Me.txtjumlah.Text , strquery2 = strquery2 kettransinduk = Me.txtket.Text strquery2 = strquery2 WHERE [transid]= strtransid Call bukadb Conn.BeginTrans Conn.Execute strquery1 Conn.Execute strquery2 Conn.CommitTrans Call tutupdb update stok tanaman Call updatestokinduk, Me.txtindukid.Text Exit Sub salahtransaksi: Conn.RollbackTrans MsgBox PENYIMPANAN DATA GAGAL _ KARENA Err.Number Err.Description, vbInformation + vbOKOnly, [PESAN] Call tutupdb End Sub q. Prosedur Hapus Data Sistem akan mengambil kode tanaman induk dari list yang dipilih oleh pengguna, kemudian mengecek keberadaannya dalam basis data. Bila ada, sistem akan melakukan konfirmasi ulang dengan menampilkan pesan. Selanjutnya akan dilakukan proses penghapusan data yang dipilih. Private Sub cmdhapus_Click Dim i As Long Dim strnoinduk As String strnoinduk = Me.lsdata.SelectedItem If cektbl_induk, indukid, strnoinduk = True Then If MsgBoxYAKIN AKAN MENGHAPUS DATA INDUK strnoinduk ?, vbYesNo, [PESAN] = vbYes Then Call bukadb Conn.Execute DELETE FROM tbl_induk WHERE [indukid] = strnoinduk Call tutupdb Call tampildata End If Else Call pesaninfo, DATA TIDAK DITEMUKAN 63 End If End Sub r. ProsedurValidasi Data Numerik Kode program ini digunakan untuk memvalidasi data pemasukan yang hanya menerima data numerik, misalnya adalah data kolom jumlah tanam induk. Caranya dengan membuat keputusan bila karakter KeyAscii yang diinputkan bukanlah angka, yaitu antara Asc “0” dan Asc‘”9” maka KeyAscii diberikan nilai 0 artinya tidak ada karakter. Private Sub txtjumlah_KeyPressKeyAscii As Integer If Not KeyAscii = Asc0 And KeyAscii = Asc9 Or KeyAscii = vbKeyBack Or KeyAscii = vbKeyReturn Or KeyAscii = vbKeyTab Then KeyAscii = 0 If KeyAscii = vbKeyTab Or KeyAscii = vbKeyReturn Then Me.txtket.SetFocus End Sub s. Prosedur Huruf Kapital. Dengan fungsi Ucase, setiap karakter masukan akan diubah ke dalam bentuk huruf kapital. Private Sub txtasalinduk_KeyPressKeyAscii As Integer KeyAscii = AscUCaseChrKeyAscii If KeyAscii = vbKeyTab Or KeyAscii = vbKeyReturn Then Me.txtremske.SetFocus End Sub

3. Simulasi Sistem