Pembuatan Stored Procedure Dan Penerapannya Di VB 6

Pada tutorial sebelumnya telah diterangkan apa itu stored procedure dan saya juga pernah membahas tentang View dan penerapannya di dalam VB 6
Pada tutorial kali ini saya akan sedikit menjelaskan pembuatan dan penerapan stored procedure pada MySQL di Visual Basic 6. Dengan syarat MySQL nya versi 5 ke atas, karena untuk versi 5 ke bawah belum mendukung Stored Procedure.

Dalam pembuatan database, tabel dan stored procedure di database MySQL saya menggunakan aplikasi Navicat jika anda belum punya aplikasinya silahkan download disini dan cara settingnya silahkan buka tutorial ini. Kita akan membuat empat buah stored procedure pertama untuk simpan data, kedua untuk update atau edit data, ketiga untuk hapus data dan ke empat untuk select data. Cara-cara Pembuatan Stored Procedure Dan Penerapannya Di VB 6 sebagai berikut ini :

Buka aplikasi navicatnya kemudian buatlah sebuah database dengan nama db_akademik lalu buat tabel dengan nama tbl_mahasiswa dengan struktur seperti yang nampak pada gambar berikut ini



Jika pembuatan tabelnya sudah selesai, kemudian klik Queries pada jendela sebelah kiri kemudian klik New Query untuk lebih jelas silahkan lihat gambar berikut ini.



Setelah klik tombol new query maka muncul jendela baru kemudian ketikan script berikut ini untuk membuat Stored Procedure untuk proses simpan data, stored procedure ini saya kasih nama SP_INSERT_DATA

DROP PROCEDURE IF EXISTS SP_INSERT_DATA;
CREATE PROCEDURE SP_INSERT_DATA
     (
        IN  xNim VARCHAR(4),
        IN  xNama VARCHAR(30), 
        IN  xTgl_lahir DATE,
        IN  xAlamat VARCHAR(50)   
     )
BEGIN 
    INSERT INTO TBL_MAHASISWA(NIM,NAMA,TGL_LAHIR,ALAMAT)
    VALUES(xNim,xNama,xTgl_lahir,xAlamat; 
END 

Jika sudah silahkan klik tombol run pada pojok kiri atas, kemudian hapus semua script diatas lalu ketikan script berikut ini untuk membuat Stored Procedure untuk proses update/edit data, stored procedure ini saya kasih nama SP_UPDATE_DATA


DROP PROCEDURE IF EXISTS SP_UPDATE_DATA;
CREATE PROCEDURE SP_UPDATE_DATA
     (
        IN  xNim VARCHAR(4),
        IN  xNama VARCHAR(30), 
        IN  xTgl_lahir DATE,
        IN  xAlamat VARCHAR(50)   
     )
BEGIN
    UPDATE TBL_MAHASISWA SET nama=xNama,tgl_lahir=xTgl_lahir,alamat=xAlamat                     
    WHERE  nim=xNim;
END 

Jika sudah klik tombol Run pada pojok kiri atas, kemudian hapus lagi semua script diatas lalu ketikan script berikut ini untuk membuat Stored Procedure untuk proses hapus data, stored procedure ini saya kasih nama SP_DELETE_DATA

DROP PROCEDURE IF EXISTS SP_DELETE_DATA; 
CREATE PROCEDURE SP_DELETE_DATA
     (
       IN  xNim VARCHAR(4) 
     )
BEGIN 
   DELETE FROM TBL_MAHASISWA
   WHERE  nim=xNim; 
END 

Jika sudah klik tombol Run pada pojok kiri atas lagi, kemudian hapus lagi semua script diatas lalu ketikan script berikut ini untuk membuat Stored Procedure untuk proses select data, stored procedure ini saya kasih nama SP_SELECT_DATA

DROP PROCEDURE IF EXISTS SP_SELECT_DATA; 
CREATE PROCEDURE SP_SELECT_DATA
     (
        IN  xNim VARCHAR(4)      
     )
BEGIN 
    SELECT nim,nama,tgl_lahir,alamat                                     
    FROM tbl_mahasiswa
    WHERE NIM=xNim; 
END 

Jika sudah silahkan tutup jendela querynya, jika berhasil maka pada sub menu Functions akan terdapat 4 stored procedure yang telah kita buat tadi. Berikut penampakannya :



Lalu kita berpindah ke Visual Basic untuk memanggil/menerapkan stored procedure yang telah kita buat. Ikutilah langkah-langkah berikut in.
Bukalah visual basic 6 nya kemudian tambahkan References "Microsoft ActivX Data Object 2.5 Library" dengan cara klik menu Project-References seperti gambar berikut ini


cari dan beri tanda centang kemudian klik OK. untuk contoh ini saya memakai versi 2.5 jika di komputer anda tidak ada silahkan pakai versi yang lebih rendah atau yang lebih tinggi.
Kemudian buatlah sebuah form seperti gambar berikut ini


Kemudian tambahkan sebuah modul dengan cara klik menu Project-Add Module. Modul ini digunakan untuk koneksi ke database MySQL, lalu ketikan pada modul  kode beriku

Public Conn As New ADODB.Connection

Public Sub Buka()
Set Conn = New ADODB.Connection
Conn.ConnectionString = "Provider=MSDASQL.1;" _
                       & "Persist Security Info=False;" _
                       & "DRIVER={MySQL ODBC 3.51 Driver};" _
                       & "DATABASE=db_akademik;" _
                       & "OPTION=0;" _
                       & "PORT=3306;" _
                       & "SERVER=127.0.0.1;" _
                       & "UID=root;" _
                       & "PWD=;"
Conn.Open
Conn.CursorLocation = adUseClient
End Sub


pada contoh ini saya memakai Driver ODBC versi 3.51 untuk koneksi ke databasenya, jika anda belum punya silahakn download disini

Kemudian ketikan kode berikut ini pada bagian General_Declaration (bagian paling atas pada jendela kode)
Dim rsMhs As New ADODB.Recordset

Private Sub AutoNumber()
    Set rsMhs = New ADODB.Recordset
    rsMhs.Open ("SELECT * FROM tbl_mahasiswa " _
              & "WHERE nim IN(SELECT MAX(nim) " _
              & "FROM tbl_mahasiswa)order by nim DESC"), Conn
    rsMhs.Requery
    Dim urut As String * 4
    Dim Hitung As Long
    If rsMhs.EOF Then
        urut = "0001"
    Else
        Hitung = Right(rsMhs!nim, 4) + 1
        urut = Right("0000" & Hitung, 4)
    End If
    TxtNim.Text = urut
End Sub

Private Sub Bersih()
    For Each Control In FormInputMhs.Controls
        If TypeOf Control Is TextBox Then
            Control.Text = ""
        End If
    Next Control
End Sub

Private Sub AktifGrid()
    MSFlexGrid.Cols = 5
    MSFlexGrid.RowHeightMin = 300
    '-----------------------------------------
    MSFlexGrid.Col = 0
    MSFlexGrid.Row = 0
    MSFlexGrid.Text = "NO"
    MSFlexGrid.CellFontBold = True
    MSFlexGrid.ColWidth(0) = 500
    MSFlexGrid.AllowUserResizing = flexResizeColumns
    MSFlexGrid.CellAlignment = flexAlignCenterCenter
    MSFlexGrid.ColAlignment(0) = flexAlignCenterCenter
    '------------------------------------------
    MSFlexGrid.Col = 1
    MSFlexGrid.Row = 0
    MSFlexGrid.Text = "NIM"
    MSFlexGrid.CellFontBold = True
    MSFlexGrid.ColWidth(1) = 800
    MSFlexGrid.AllowUserResizing = flexResizeColumns
    MSFlexGrid.CellAlignment = flexAlignCenterCenter
    MSFlexGrid.ColAlignment(1) = flexAlignLeftCenter
    '-----------------------------------------
    MSFlexGrid.Col = 2
    MSFlexGrid.Row = 0
    MSFlexGrid.Text = "Nama Mahasiswa"
    MSFlexGrid.CellFontBold = True
    MSFlexGrid.ColWidth(2) = 2000
    MSFlexGrid.AllowUserResizing = flexResizeColumns
    MSFlexGrid.CellAlignment = flexAlignCenterCenter
    MSFlexGrid.ColAlignment(2) = flexAlignLeftCenter
    '--------------------------------------------
    MSFlexGrid.Col = 3
    MSFlexGrid.Row = 0
    MSFlexGrid.Text = "Tgl Lahir"
    MSFlexGrid.CellFontBold = True
    MSFlexGrid.ColWidth(3) = 1300
    MSFlexGrid.AllowUserResizing = flexResizeColumns
    MSFlexGrid.CellAlignment = flexAlignCenterCenter
    MSFlexGrid.ColAlignment(3) = flexAlignLeftCenter
    '-----------------------------------------------
    MSFlexGrid.Col = 4
    MSFlexGrid.Row = 0
    MSFlexGrid.Text = "Alamat"
    MSFlexGrid.CellFontBold = True
    MSFlexGrid.ColWidth(4) = 2400
    MSFlexGrid.AllowUserResizing = flexResizeColumns
    MSFlexGrid.CellAlignment = flexAlignCenterCenter
    MSFlexGrid.ColAlignment(4) = flexAlignLeftCenter
End Sub

Sub TampilGrid()
    Dim Baris As String
    MSFlexGrid.Clear
    Call AktifGrid
    '---------------------
    MSFlexGrid.Rows = 1
    Baris = 0
    Set rsMhs = New ADODB.Recordset
    rsMhs.Open "SELECT * FROM tbl_mahasiswa " _
             & "ORDER BY nim ASC", _
    Conn, adOpenDynamic, adLockOptimistic
    '---------------------
    If rsMhs.BOF Then
        Exit Sub
    Else
        rsMhs.MoveFirst
        Do While Not rsMhs.EOF
        'On Error Resume Next
            Baris = Baris + 1
            MSFlexGrid.Rows = Baris + 1
            MSFlexGrid.TextMatrix(Baris, 0) = Baris
            MSFlexGrid.TextMatrix(Baris, 1) = rsMhs.Fields("nim")
            MSFlexGrid.TextMatrix(Baris, 2) = rsMhs.Fields("nama")
            MSFlexGrid.TextMatrix(Baris, 3) = Format(rsMhs.Fields("tgl_lahir"), "dd-MM-yyyy")
            MSFlexGrid.TextMatrix(Baris, 4) = rsMhs.Fields("alamat")
        rsMhs.MoveNext
        Loop
    End If
End Sub

Kemudian kode berikut ini pada form_load
Private Sub Form_Load()
    Call Buka
    Call Bersih
    Call AutoNumber
    Call TampilGrid
    CmdSave.Caption = "&Save"
    DTPicker.Value = Date
End Sub

Jika sudah ketikan kode berikut ini pada tombol Save
Private Sub CmdSave_Click()
    '-----stored procedure input data(simpan data)-----------
    If CmdSave.Caption = "&Save" Then
        Conn.Execute "SP_INSERT_DATA('" & TxtNim.Text & "','" & TxtNama.Text & "','" & Format(DTPicker.Value, "yyyy-MM-dd") & "','" & TxtAlamat.Text & "')"
        Form_Load
        TxtNama.SetFocus
    '-----stored procedure ubah data(edit data)-----------
    ElseIf CmdSave.Caption = "&Update" Then
        Conn.Execute "SP_UPDATE_DATA('" & TxtNim.Text & "','" & TxtNama.Text & "','" & Format(DTPicker.Value, "yyyy-MM-dd") & "','" & TxtAlamat.Text & "')"
        Form_Load
        TxtNama.SetFocus
    End If
End Sub

Kemudian ketikan kode berikut ini pada tombol cancel
Private Sub CmdCancel_Click()
    Form_Load
    TxtNama.SetFocus
End Sub

Kemudian ketikan kode berikut ini pada tombol delete
Private Sub CmdDelete_Click()
    If TxtNim.Text = "" Or TxtNama.Text = "" Then
        MsgBox "Silahkan Pilih Data Yang Akan Dihapus Dahulu", vbInformation, ".:: Informasi ::."
        Exit Sub
    Else
        Pesan = MsgBox("Yakin Data Ini Akan Dihapus.....?", vbYesNo + vbQuestion, " .:: Konfirmasi ::.")
        If Pesan = vbYes Then
            Call Buka
            '-----stored procedure hapus data(delete data)-----------
            Conn.Execute "SP_DELETE_DATA('" & TxtNim.Text & "')"
            Form_Load
            TxtNama.SetFocus
        Else
            Form_Load
        End If
    End If
End Sub

Kemudian ketikan kode berikut ini pada tombol exit
Private Sub CmdExit_Click()
    Unload Me
End Sub

Kemudian ketikan kode berikut pada txtCari_Keypress()

Private Sub txtCari_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then

        Dim Baris As String
        MSFlexGrid.Clear
        Call AktifGrid
        '---------------------
        MSFlexGrid.Rows = 1
        Baris = 0

        Dim oPar1 As New ADODB.Parameter
        Dim oCmd As New ADODB.Command
        Set rsMhs = New ADODB.Recordset
        With oCmd
            .ActiveConnection = Conn
            .CommandType = adCmdStoredProc
            .CommandText = "SP_SELECT_DATA"
            Set oPar1 = .CreateParameter("NIM", adVarChar, adParamInput, 10, txtCari.Text)

            .Parameters.Append oPar1
            Set rsMhs = .Execute
        End With

        '---------------------
        If rsMhs.BOF Then
            MsgBox "Nim Yang Anda Cari Tidak Ada Dalam Database", vbInformation, "Informasi"
            Exit Sub
        Else
            rsMhs.MoveFirst
            Do While Not rsMhs.EOF
                'On Error Resume Next
                Baris = Baris + 1
                MSFlexGrid.Rows = Baris + 1
                MSFlexGrid.TextMatrix(Baris, 0) = Baris
                MSFlexGrid.TextMatrix(Baris, 1) = rsMhs.Fields("nim")
                MSFlexGrid.TextMatrix(Baris, 2) = rsMhs.Fields("nama")
                MSFlexGrid.TextMatrix(Baris, 3) = Format(rsMhs.Fields("tgl_lahir"), "dd-MM-yyyy")
                MSFlexGrid.TextMatrix(Baris, 4) = rsMhs.Fields("alamat")
                rsMhs.MoveNext
            Loop
        End If

    End If
End Sub

Kemudian ketikan kode berikut ini pada tombol Refresh
Private Sub CmdRefresh_Click()
    txtCari.Text = ""
    Call TampilGrid
End Sub

Kemudian simpan semua lalu jalankan. Demikian tutorial Pembuatan Stored Procedure Dan Penerapannya Di VB 6 semoga dapat bermanfaat, jika ada yang kurang di mengerti silahkan kasih komentar. Jika menginginkan source code dan tutorialnya silahkan download di link di bawah ini

Download Tutorial
Download Source Code


Tags:
Pembuatan Stored Procedure Dan Penerapannya Di VB 6, Tutorial pembuatan stored procedure,Tutorial penerapan stored procedure,Cara Membuat Stored Procedure Di MySQL, Penggunaan Store Procedure di MySQL, Implementasi Store Procedure di MySQL, Memanggil Stored Procedure di Visual Basic,MySQL Stored Procedure,panggil stored procedure visual basic 6.0,CARA MEMANGGIL STORE PROCEDURE,Stored Procedure yang diterapkan di Visual Basic

3 comments:

  1. apa harus pakai store procedure mas, untuk insert,update, delete

    ReplyDelete
  2. saya insert data type decimal misal 1.5 kenapa ditabel jadi 15 ya?

    ReplyDelete