Ini merupakan artikel puncax :D dari pengenalan firebird yang dilanjutkan dengan pembuatan store procedure (SP), trigger dan view dan kini saat kita membahas penggunaan SP dan view.
Untuk mengakses firebird dari aplikasi kita membutuhkan Firebird ODBC yang bisa didownload disini
1. Store Procedure
Disini kita akan mengakses SP proc_add_supplier yang mempunyai tiga parameter yaitu : nama, alamat dan telepon
Ada 2 cara untuk mengakses SP :
1
2
3
4
5
6
Private Sub cmdAksesSP_Click()
Dim strSql As String
strSql = “EXECUTE PROCEDURE proc_add_supplier(‘KoKom Armagedon’, ‘Yogyakarta’, ‘0813 8176 xxxx’)”
conn.Execute strSql ‘conn -> variabel dengan tipe ADODB.Connection
End Sub
EXECUTE PROCEDURE merupakan perintah bawaan firebird untuk mengakses store procedure jadi tidak semua database server mempunyai perintah ini.
Cara yang ke dua dengan menggunakan kombinasi objek ADODB.Command, ADODB.Parameter dan ADODB.Connection.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Function addSupplier(ByVal nama As String, ByVal alamat As String, ByVal telepon As String) As Boolean
Dim cmd As ADODB.Command
Dim param As ADODB.Parameter
Dim i As Long
On Error GoTo errHandle
Set cmd = New ADODB.Command
cmd.ActiveConnection = Conn
Set param = cmd.CreateParameter(“nama”, adVarChar, adParamInput, 30, nama)
cmd.Parameters.Append param
Set param = cmd.CreateParameter(“alamat”, adVarChar, adParamInput, 50, alamat)
cmd.Parameters.Append param
Set param = cmd.CreateParameter(“telepon”, adVarChar, adParamInput, 20, telepon)
cmd.Parameters.Append param
cmd.CommandText = “proc_add_supplier”
cmd.CommandType = adCmdStoredProc
cmd.Execute
addSupplier = True
For i = 0 To cmd.Parameters.Count - 1
cmd.Parameters.Delete (0)
Next
Set cmd = Nothing
Set param = Nothing
Exit Function
errHandle:
addSupplier = False
End Function
kemudian tinggal panggil seperti ini
1
2
3
4
5
Private Sub cmdAksesSP_Click()
Dim result As Boolean
result = addSupplier(“KoKom Armagedon”, “Yogykarta”, “0813 8176 xxxx”)
End Sub
2. Store Procedure yang dijadikan fungsi
Store procedure yang kita akses adalah func_get_stok yang mempunyai parameter kode barang. Caranya mirip dengan cara ke dua untuk mengakses store procedure biasa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Function getStokBarang(ByVal kodeBarang As String) As Long
Dim cmd As ADODB.Command
Dim param As ADODB.Parameter
Dim i As Long
On Error GoTo errHandle
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
Set param = cmd.CreateParameter(“kode_barang”, adVarChar, adParamInput, 20, kodeBarang)
cmd.Parameters.Append param
Set param = cmd.CreateParameter(“stok”, adNumeric, adParamOutput) ‘ini tambahan parameter yg harus didaftarkan untuk menampung return value
param.Precision = 5
param.NumericScale = 2
cmd.Parameters.Append param
cmd.CommandText = “func_get_stok”
cmd.CommandType = adCmdStoredProc
cmd.Execute
getStokBarang = cmd.Parameters(“stok”).Value 'membaca nilai kembalian fungsi (return value)
For i = 0 To cmd.Parameters.Count - 1
cmd.Parameters.Delete (0)
Next
Set cmd = Nothing
Set param = Nothing
Exit Function
errHandle:
getStokBarang = 1
End Function
kemudian tinggal panggil seperti ini
1
2
3
Private Sub cmdAksesSP_Click()
Debug.Print “jumlah stok : ” & getStokBarang(“12345”)
End Sub
Variabel cmd, param dan i sebaiknya dideklarasikan di bagian [general declaration] jika akan digunakan lebih dari 1 kali.
3. View
Untuk mengakses view sama seperti memanggil query biasa, oleh karena itu kita membutuhkan variabel dengan tipe recordset untuk menampung hasil view/query.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub cmdAksesView_Click()
Dim rs As ADODB.Recordset
Dim strSql As String
Dim i As Long
strSql = “SELECT * FROM v_info_pembelian” ‘v_info_pembelian -> nama view
Set rs = openRecordset(strSql)
If Not rs.EOF Then
For i = 1 To getRecordCount(rs)
Debug.Print “Supplier : ” & rs(“nama”).Value & vbCrLf & _
“Alamat : ” & rs(“alamat”).Value & vbCrLf & _
“Nota : ” & rs(“nota”).Value & vbCrLf & _
“Tanggal ” & Format(rs(“tanggal”).Value, “dd/MM/yyyy”)
rs.MoveNext
Next i
End If
Call closeRecordset(rs)
End Sub
Sample program bisa didownload disini.
Selamat mencoba :)