8
\ Pemrograman Visual ll- Studi Kasus Penyewaan Mobil - Kresna Adhi Pratama i PYK Dadabase: PENYEWAANMOBIL Struktur Tabel 1. Tabel: anggota Field Type Width kdanggota CHAR 5 nmanggota VARCHAR 25 gender CHAR 1 alamat VARCHAR 30 telepon VARCHAR 15 noktp VARCHAR 20 2. Tabel. karyawan Field Type Width kdkaryawan CHAR 5 nmkaryawan VARCHAR 25 jabatan VARCHAR 5 password VARCHAR 15 Tabel:mobil Field Type nopolisi VARCHAR nmmobil VARCHAR tarif MEDIUMINT Tabel:sewa Field Type nosewa CHAR kdanggota CHAR kdkaryawan CHAR Tabel: detailsewa Field Type nosewa CHAR nopolisi VARCHAR tglsewa DATE tglkembali DATE status CHAR Primary Yes 3. 4. 5. width 8 25 10 width 9 5 5 width I 8 't Primary Yes Primary Yes Primary Primary Yes Form Master Anggota Kode Program Form Master Anggota

Tutorial Visual Basic 6 - Database MySQL dan ADODC

Embed Size (px)

DESCRIPTION

Contoh program koneksi database MySQL dengan Visual Basic 6.0 menggunakan ADODC. Contoh kasus penyewaan mobil.

Citation preview

  • \Pemrograman Visual ll- Studi Kasus Penyewaan Mobil -

    Kresna Adhi Pratama i PYK

    Dadabase: PENYEWAANMOBIL

    Struktur Tabel

    1. Tabel: anggotaField Type Width

    kdanggota CHAR 5nmanggota VARCHAR 25gender CHAR 1alamat VARCHAR 30telepon VARCHAR 15noktp VARCHAR 20

    2. Tabel. karyawanField Type Width

    kdkaryawan CHAR 5nmkaryawan VARCHAR 25jabatan VARCHAR 5password VARCHAR 15

    Tabel:mobilField Type

    nopolisi VARCHARnmmobil VARCHARtarif MEDIUMINT

    Tabel:sewaField Typenosewa CHARkdanggota CHARkdkaryawan CHAR

    Tabel: detailsewaField Typenosewa CHARnopolisi VARCHARtglsewa DATEtglkembali DATEstatus CHAR

    PrimaryYes

    3.

    4.

    5.

    width82510

    width955

    widthI8

    't

    PrimaryYes

    PrimaryYes

    Primary

    PrimaryYes

    Form Master Anggota

    Kode Program Form Master Anggota

  • Dinn mode As Boolean

    Function KodeOtomatisO As StringDim urut As Integer

    liet Adodcl.RecordSource = "SELECT * " &"FROM anggota ORDER BY kdanggota"

    Adodcl.RefreshDataGridl. Refresh

    With Adodcl.RecordsetIf Adodcl.Recordset.RecordCount > 0 Then

    .MovelastLet urut = Val(Right(.Fields(O), 4)) + 1

    ElseLet urut = I

    End IfLet KodeOtomatis = "A" + _

    Format(urut, "0000')End With

    End Function

    Function Cari(kode As String) As BooleanLet Cari = False

    Adodcl. Recordset. MoveFi rstAdodcl.Recordset.Find "kdanggota = '' & _

    kode & ""', , adSearchForward, 0

    lf Adodcl.Recordset. EOF ThenLet Cari = False

    ElseLet Cari = True

    End IfEnd Function

    Private Sub BersihoDim ctrl As Control

    For Each ctrl In Me,,,,tf

    ttpuOf ctrl Is TextBox Then Let ctrl.Text =If Typeof ctrl Is OptionButton Then Let

    ctrl.Value = FalseFlext ctrl

    End Sub

    Private Sub AktifoDim ctrl As Control

    For Each clrl In MeIf TypeOf ctrl Is TextBox Then

    _

    Let ctrl.Enabled = TrueIf Type0f ctrl Is OptionButton Then

    _

    Let ctrl.Enabled = Truelflext ctrl

    End Sub

    Private Sub NonAktifoDim ctrl As Control

    For Each ctrl In MeIf TypeOf ctrl Is TextBox Then

    _

    Let ctrl.Enabled = FalseIf TypeOf ctrl Is OptionButton Then Let

    ctrl.Enabled = False

    Next ctrlEnd Sub

    Private Sub TampiloOn Error Resume Next

    With Adodcl.RecordsetLet txtKode,Text = .Fields(O)Let txtNama.Text = .Fields(1)If .Fields(2) = "1" Then

    Let OpLaki.Value = TrueElse

    Let OpPerempuan.Value = TrueEnd IfLet txtAlamat.Text = .Fields(3)Let txtTelepon.Text = .Fields(4)Let txtKtp.Text = .Fields(5)

    End WithEnd Sub

    Private Sub cmdBatal_Click( )CallTampilCall NonAktif

    Let mode = FalseEnd Sub

    Private Sub cmdHapus_ClickoOn Error GoTo ErrCmdHapus

    Dim kode As StringDim ada, tanya As Byte

    Let kode = InputBox("Ketikan kode anggota:","Hapus Anggota", "")

    If Trim(kode) = "" Then Exit SubLet ada = Cari(kode)If ada = True Then

    Let tanya = MsgBox("Hapus data?", vbYesNo,"Konfirmasi")

    If tanya = vbYes ThenAdodc 1 . Recordset. DeleteMsgBox "Data telah dihapus."

    Call BersihCallTampil

    End IfElse

    MsgBox "Data tidak adal", "Hapus Anggota"End If

    Exit Sub

    ErrCmdHapus:MsgBox "Data gagal dihapus!"

    End Sub

    Private Sub cmdKeluar_ClickoUnload Me

    End Suh

    Private Sub cmdSimpan_Click( )

  • \On Error GoTo ErrCmdSimpan

    With Adodcl.Recordsetif mode = True Then .AddNewLet .Fields(O) = txtKode.TextLet .Fields(1) = txtNama.TextIf Oplaki.Value = True Then *

    Let 'Fields(2) = "1"If OpPerempuan.Value = True Then

    -Let .Fields(2) = "PuLet .Fields(3) = txtAlamat.TextLet .Fields(4) = txtTelepon.TextLet .Fields(5) = txtKtp.Text.Update

    End With

    llet mode = False

    DataGrid 1. RefreshCall NonAktifMsgBox "Data berhasil disimpan."Fxit Sub

    ErrtfmdSimpan:MsgBox "Data.tidak berhasil disimpan!"

    End Sub

    Private Sub cmdTambah-Click( )Let mode = True

    Call AktifCall BersihLet txtKode.Text = KodeOtomatis0t-xtNama.SetFocus

    End Sub

    Private Sub cmdUbah-ClickoDim ada As Boolean

    Dim kode As String

    Let kode = InputBox("Ketikan kode anggota:", _"Ubah Anggota")

    If Trim(kode) = "" Then Exit SubLet ada = Cari(kode)If ada = False Then

    MsgBox "Data tidak ditemukan!"Else

    Call AktifCallTampiltxtNama.SetFocus

    Let txtKode.Enabled = FalseLet mode = False

    End IfEnd Sub

    Private Sub Form_LoadoLet Adodcl.RecordSource = "SELECT * FROM " &"anggota ORDER BY kdanggota"

    Adodcl.Refresh

    Let Adodcl.Visible = FalseDataGrid 1 , RefreshCall BersihCall TampilCall NonAktif

    End Sub

    Private Sub Form_Unload(Cancel As Integer)Dim tanya As Byte

    Let tanya = MsgBox("Tutup program?", _vbYesNo, "Konfirmasi")

    If tanya = vbNo Then Let Cancel = -1End Sub

    Form Master Karyawan

    'ttt: xl.

  • \Dirn mode As Boolean

    Function KodeOtomatisO As StringDim urut As Integer

    Adodcl.RecordSource = "SELECT * FROM '&"karyawan ORDER BY kdkaryawan"

    i{dodc1. RefreshDataGrid l.Refresh

    With Adodcl.RecordsetIf Adodcl,Recordset.RecordCount > 0 Then

    .MoveLastLet urut = Val(Right(.Fields(0), 4)) + 1

    ElseLet urut = 1

    End IfLet KodeOtomatis = "K" +

    -Format(urut, '0000")Fnd With

    End Function

    Fuerction Cari(kode As String) As BooleanLet Cari = False

    ,Adodc1. Recordset. MoveFirstAdodcl,Recordset.Find "kdkaryawan = '" &

    -kode & ""', , adSearchForward, 0

    lf Adodcl. Recordset. EOF ThenLet Cari = False

    ElseLet Cari = True

    End IfEnd Function

    Pri\rate Sub BersihoDim ctrl As Control

    lFor Each ctrl In MeIf TypeOf ctrl Is TextBox Or

    -Type0f ctrl Is ComboBox Then ctrl.Text =Flext ctrl

    End Sub

    Priqrate Sub AktifoDim ctrl As Control

    For Each ctrl In MeIf TypeOf ctrl Is TextBox Or

    -TypeOf ctrl Is ComboBox Then -Let ctrl.Enabled = True

    lNext ctrlEnd Sub

    Private Sub NonAlGifoDim ctrl As Control

    For Each ctrl In MeIf Type0f ctrl Is TextBox Or

    -Typeof ctrl Is ComboBox Then -Let ctrl.Enabled = False

    Next ctrlEnd Sub

    Private Sub Tampilo

    On Error Resume Next

    With Adodcl.RecordsetLet txtKode.Text = .Fields(0)Let txtNama.Text = .Fields(1)Let cmblabatan.Text = .Fields(2)Let txtPassword.Text = .Fields(3)Let txtKonfirmasi.Text = .Fields(3)

    End WithEnd Sub

    Private Sub cmdBatal_ClickoCallTampilCall NonAktif

    Let mode = FalseEnd Sub

    Private Sub cmdCari-ClickoOn Error GoTo ErrCmdCari

    Dim kode As StringDim ada As Boolean

    Let kode = InputBox("Ketikan kode karyawan:", -

    "Cari Data Karyawan", "")If Trim(kode) = "" Then Exit SubLet ada = Cari(kode)If ada = False Then

    MsgBox "Data tidak ada!"Else

    CallTampilEnd IfExit Sub

    ErrCmdCari:MsgBox "Pencarian tidak bisa dilakukanl"

    End Sub

    Private Sub cmdFirst-Click( )On Error Resume Next

    Adodcl . Recordset. MoveFirstCallTampil

    End Sub

    Private Sub cmdHapus_Click( )On Error GoTo ErrCmdHapus

    Dim tanya As ByteLet tanya = MsgBox("Hapus data?", vbYesNo, _

    "Hapus Karyawan")If tanya = vbYes Then

    Adodcl. Recordset. DeleteAdodcl.RefreshCallTampilMsgBox "Data berhasil dihapus."

    End IfExit Sub

    ErrCmdHapus:MsgBox "Data gagal dihapusl"

    End Sub

  • MsgBox "Data berhasil disimpan,"Prtvate Sub cmdlast-ClickO , Exit Sub

    tCn Error Resume NextErrCmdSimpan:

    Adodcl.Recordset.MoveLast MsgBox "Data tidak berhasil disimpanl"CallTampil End SubEnd Sub

    Private Sub cmdTambah_ClickoPrlvate Sub cmdNext_ClickO ' Call Bersih

    On Error Resume Next Call AktiftxtNama.SetFocus

    [f Adodc 1. Recordset. EOF ThenMsgBox "Record terakhir." Let txtKode.Enabled = FalseElse Let txtKode.Text = KodeOtomatisOAdodcl.Recordset.MoveNext Let mode = TrueCall Tampil

    ' End Sub

    End IfEnd Sub I Private Sub cmdTutup_Clicko

    Unload MePrfrvate Sub cmdPrev-ClickO End Sub

    0n Error Resume NextPrivate Sub cmdUbah_Click( )

    Sf Adodcl,Recordset.BOF Then Call AktifMsgBox "Record pertama."

    Else Let txtKode.Enabled = FalseAdodcl.Recordset.MovePrevious Let mode = FalseCallTampil End Sub

    End IfEnd Sub Private Sub Form-Loado

    Let Adodcl.RecordSource = "SELECT * FROM' &Pr$vate Sub cmdSimpan-ClickO " karyawan ORDER BY kdanggota"

    On Error GoTo ErrCmdSimpan Let Adodcl.Visible = FalseLet txtPassword.PasswordChar = "*"[f txtPassword.Text txtKonfirmasi.Text Then Let txtKonfirmasi.PasswordChar = "*"

    MsgBox "Password yang Anda ketikan tidak Let DataGridl.Visible = Falsesesuai l "

    Exit Sub cmblabatan.Addltem "ADMIN"End If cmblabatan.Addltem "KASIR"With Adodcl.Recordset Call Tampil

    If mode = True Then .AddNew Call NonAktifEnd Sub

    Let .Fields(O) = txtKode.TextLet .Fields(1) = txtNama.Text Private Sub Form_Unload(Cancel As fnteger)Let ,Fields(2) = cmblabatan.Text Dim tanya As ByteLet .Fields(3) = txtPassword,Text

    Let tanya = MsgBox("Tutup program?", _.Update vbYesNo, "Konfirmasi")

    End WithIf tanya = vbNo Then Let Cancel = -1

    Call NonAktif End Sub$-et mode = False

    Buatlah sebuah moduldengan nama file Modull.bas !

  • -\Kode Program Modull.bas

    Put:lic KodeKasir As String

    Form Penyewaan dan Pengembalian

    : : : : : : : : : : ; : : : : : : : i L i .t*anlterdekatrln- ig8-BooryTdeoontl2nl.ets'Ssd ; : : : : ; : : : : : : : : : : : ,DdaSewa----

    Kode Program Form Penyewaan dan Pengembalian

    Din:r total, subtotal As Currency

    Private Sub SiapkanDatabaseoLet AdoSewa.RecordSource = ''SELECT * FROM

    ser',va ORDER BY nosewa"j-et AdoDetsewa,RecrrrdSource = "SELECT * FROMd,elail_sewa WHERE nosewa = "' & txtKdSewa.Text &

    Let AdoMobil.RecordSource = "SELECT x FROMmobil WHERE nopolisi NOT IN (SELECT nopolisi FROMdeLail_sewa WHERE status = 'S')"

    .et AdoAnggota.Recordsource = 'SELECT * FROManggota ORDER BY kdanggota"

    lAdoSewa. RefreshAdoDetSewa. RefreshAdoMobil. Refresh,AdoAnggota . Refresh

    End Sub

    Private Sub IsiComboo;On Error GoTo ErrlsiCombo

    Combol.Clear,AdoMobil. Refresh

    With AdoMobil, Recordset. MoveFirstWhile Not .EOF

    Combol.AddItem . Fields(0).Value

    Nc. Sewa

    No Polei h4ul,*

    Selesai

    t

    . MoveNextV/end

    End With

    ErrlsiCombo:

    End Sub

    Private Sub AktifoLet txtSub.Enabled = TrueLet txtTotal.Enabled = TrueLet txtKdSewa.Enabled = TrueLet txtKdAnggota.Enabled = TrueLet DataCombol.Enabled = TrueLet DTPMulai.Enabled = TrueLet DTPSelesai.Enabled = True

    End Sub

    Private Sub NonAktifoLet opSewa.Enabled = FalseLet opKembali.Enabled = FalseLet txtSub.Enabled = FalseLet txtTotal.Enabled = FalseLet txtKdSewa.Enabled = FalseLet txtKdAnggota.Enabled = FalseLet Combol.Enabled = FalseLet DTPMulai.Enabled = FalseLet DTPSelesai.Enabled = False

    End Sub

    f Fenprrhafian$ub TotdBp.

    Iddflp

    i lrans*si I it,--.--,.-r----.-_----Z-:

    Iextl

    IextZ

  • Private Sub Bersihoilet opSewa.Value = False[-et opKembali.Value = Falsefi-et txtsub.Text = ""llet txtTotal.Text = ""ilet txtKdSewa.Text = ""{-et txtKdAnggota.Text = ""

    End Sub

    Prlvate Sub HitungSubTotaloDim lama As Integer

    t-et lama = DTPSelesai.Value - DTPMulai.Valuel-et subtotal = lama * AdoMobil.Recordset.Fields

    (2),tlet txtSub.Text = Format(subtotal, " #,# # #.OO")

    End Sub

    Function KodeOtomatisO As StringDim urut As Byte

    With AdoSewa. RecordsetIf.RecordCount>0Then

    .MoveLastLet urut = Val(Right(.Fields(O), 3)) + 1

    ElseLet urut = 1

    End IfFnd With

    t-et KodeOtomatis = Format(Now, "yyMMdd") &Forrnat(urut, "000")End Function

    Prtoate Sub cmdSelesai_Clicko

    With AdoSewa. Recordset.AddNewLet .Fields(0),Value = txtKdSewa.TextLet .Fields(1),Value = txtKdAnggota.TextLet .Fields(2).Value = KodeKasir. Update

    End With

    Call BersihCall NonAktif

    lLet AdoDetSewa,Recordsource = "SELECT * FROMdetrail_sewa WHERE nosewa = "' & txtKdSewa.Text &

    AdoDetSewa. RefreshEnd Sub

    Prlqrate Sub cmdTambah_Click( )l-et txtKdAnggota,Enabled = False

    llet AdoDetSewa.RecordSource = "SELECT x FRoMdebail_sewa WHERE nopolisi = "' & Combol.Text & "'AND status = 'S"'

    zAdoDetSewa.Refresh

    Ef AdoDetSewa.Recordset.RecordCount > 0 ThenMsgBox "Mobil sudah disewa! Silahkan pilih

    mohil lain!"Let AdoDetSewa.RecordSource = "SELECT *

    FROM detail_sewa WHERE nosewa = "' &txtKdSewa.Text & ""'

    AdoDetSewa, Refresh

    Exit SubEnd If

    Let AdoDetSewa,RecordSource = "SELECT x FROMdetail_sewa WHERE nosewa = "' & txtKdSewa.Text &

    AdoDetSewa.RefreshAdoDetSewa. Recordset. Requery

    With AdoDetSewa. Recordset.AddNew. Fields(0).Value = txtKdSewa.Text.Fields(1).Value = Combol.Text.Fields(2).Value = DTPMulai.Value,Fields(3).Value = DTPSelesai.Value.Fields(4),Value = "S",Update

    End With

    Let total = total + subtotalLet txtTotal.Text = Format(total, " #,# # #.O0")DataGridl.Refresh

    End Sub

    Private Sub cmdTransaksi_Click( )Call BersihCall NonAktifCall IsiComboLet opSewa.Enabled = TrueLet opKembali.Enabled = True

    Let total = 0End Sub

    Private Sub Combol_LostFocus( )AdoMobi L Recordset. MoveFi rstAdoMobil.Recordset.Find "nopolisi = "' &

    Combol.Text & ""', , adSearchForward, 0Call HitungSubTotal

    End Sub

    Private Sub DTPSelesai_ChangeoCall HitungSubTotal

    End Sub

    Private Sub Form_LoadoCall NonAktifCall SiapkanDatabase

    End Sub

    Private Sub opKembali_ClickoLet txtKdSewa.Enabled = TrueLet txtKdSewa.Text = ""Let opSewa.Enabled = FalsetxtKdSewa . SetFocus

    End Sub

    Private Sub opSewa_Click( )Let txtKdSewa.Text = KodeOtomatisLet txtKdAnggota.Enabled = TrueLet opKembali.Enabled = FalsetxtKdAn g gota. SetFocus

    End Sub

    Private Sub txtKdAnggota_KeyPress(KeyAsciiAs Integer)

    If KeyAscii = 13 Then

  • AdoAnggota.RecordSource = "SELECTkdanggota FROM anggota WHERE kdanggota = "'& Exit SubtxtKdAnggota.Text & ""' End If

    AdoAnggota.RefreshWith AdoSewa. Recordset

    If AdoAnggota.Recordset.RecordCount > 0 Then .MoveFirstLet Combol.Enabled = True .Find "nosewa = "' & txtKdSewa.Text & ""', ,Let DTPMulai.Enabled = True adSearchForward, 0Let DTPSelesai.Enabled = True Let txtKdAnggota.Text = .Fields(1).ValueCombol.SetFocus End With

    ElseLet Combol.Enabled = False With AdoDetSewa.RecordsetMsgBox "Kode anggota tidak ada!" .MoveFirst

    End If While .EOF = FalseEnd If .Fields(4).Value = "K"

    End Sub .Update.MoveNext

    Prlvate Sub txtKdSewa_KeyPress(KeyAscii As WendInteger) End With

    Sf KeyAscii = 13 ThenLet AdoDetSewa.RecordSource = "SELECT *'{ MsgBox "Terima kasihl"

    FROM detail sewa WHERE nosewa = "'&txtKdSewa.Text & "' AND status = 'S"' Call BersihAdoDetSewa.Refresh Call NonAktif

    If AdoDetSewa.Recordset.RecordCount = 0 Let AdoDetSewa.RecordSource = 'SELECT *Then FROM detail_sewa WHERE nosewa = "' &MsgBox "Tidak ada penyewaan dengan txtKdSewa.T

    nornor" &txtKdSewa.Text &"!" AdoDetSewa.RefreshCall Bersih End IfCall NonAktif End Sub

    Ga*atan:

    . Hubungkan objek Text1, Text2 dan Text3 dengan properti AdoSewa, AdoMobil dan AdoAnggota.

    . Objek DBGridl menggunakan Datasource dariobjek AdoDetSewa.