Private Conn As ADODB.Connection
Private rs As ADODB.Recordset
'---membuat variabel yg bisa diakses oleh form
'---utk mengisi data2 server spt nama server, user dan password
Public Property Get Server() As String
Server = strServer
End Property
Public Property Let Server(ByVal sServer As String)
strServer = sServer
End Property
Public Property Get User() As String
User = strUser
End Property
Public Property Let User(ByVal sUser As String)
strUser = sUser
End Property
Public Property Get Passwords() As String
Passwords = strPass
End Property
Public Property Let Passwords(ByVal sPass As String)
strPass = sPass
End Property
'-----------------------------------------------------------------
'---menampung nama table yg mau dibuka oleh recordset
Public Property Get TableName() As String
TableName = strTable
End Property
Public Property Let TableName(ByVal sTableName As String)
strTable = sTableName
End Property
Public Function OpenRecord() As ADODB.Recordset
If rs.State = adStateOpen Then rs.Close
rs.CursorLocation = adUseClient
rs.Open strTable, Conn, adOpenStatic, adLockOptimistic
Set OpenRecord = rs
End Function
Public Sub AddRecord()
Dim i As Control
Dim f As Form
For Each i In f.Controls
If TypeOf i Is TextBox Then
i.Text = ""
ElseIf TypeOf i Is ComboBox Then
i.Text = ""
End If
Next
End Sub
Public Sub InsertRecord(ParamArray arrayFields() As Variant)
Dim i, JumlahField As Integer
JumlahField = rs.Fields.Count - 1
rs.AddNew
For i = 0 To JumlahField
rs(i) = arrayFields(i)
Next
rs.Update
End Sub
Public Sub DeleteRecord()
rs.Delete
rs.Update
rs.MoveNext
End Sub
Public Sub UpdateRecord(ParamArray arrayFields() As Variant)
On Error Resume Next
Dim i, JumlahField As Integer
JumlahField = rs.Fields.Count - 1
For i = 0 To JumlahField
rs(i) = arrayFields(i)
Next
rs.Update
End Sub
Public Sub FindRecord(ByRef sField As String)
rs.MoveFirst
rs.Find "CustomerID LIKE '" & sField & "%'"
If rs.EOF Then
MsgBox "Data tidak ditemukan", , "Find"
End If
End Sub
'---utk menampilkan data pada datagrid
Public Sub GridView(ByRef objGrid As Object)
Set objGrid.DataSource = rs
End Sub
Public Function CountRecord() As String
CountRecord = rs.RecordCount
End Function
Public Function PositionRecord() As String
PositionRecord = rs.AbsolutePosition
End Function
Public Sub MoveToFirst()
rs.MoveFirst
End Sub
Public Sub MoveToPrior()
rs.MovePrevious
End Sub
Public Sub MoveToNext()
rs.MoveNext
End Sub
Public Sub MoveToLast()
rs.MoveLast
End Sub
'---pd saat class dipanggil, maka kode dibawah ini
'---yg pertama kali di jalankan
Private Sub Class_Initialize()
Set Conn = New ADODB.Connection
Set rs = New ADODB.Recordset
'---utk mencegah error krn namaserver blm di initial
'---maka conn.open dicegah spy tdk membuka database dahulu
If Server = "" Then Exit Sub
'---krn setiap kali class ini dipanggil akan
'---menjalankan kode dibawah ini, maka utk
'---mencegah error krn membuka koneksi yg
'---yg sedang terbuka, maka selalu diperiksa
'---status koneksinya, kalo sudah terbuka
'---langsung keluar tapi kalo blm ya dibuka
If Conn.State = adStateOpen Then Exit Sub
Conn.Open "Provider=SQLNCLI.1;" & _
"Data Source=" & Server & ";" & _
"User ID=" & User & ";" & _
"Password=" & Passwords & ";" & _
"Initial Catalog=northwind"
End Sub
'---pd saat class di close bersihkan objek di memori
Private Sub Class_Terminate()
If rs.State = adStateOpen Then
rs.Close
Set rs = Nothing
End If
If Conn.State = adStateOpen Then
Conn.Close
Set Conn = Nothing
End If
End Sub
Nah saya rasa tidak perlu lagi saya menjelaskan dari kode2 diatas ya karena masing2 fungsi
sudah ada komentar penjelasanya koq
Sekarang buat lah satu module, yang fungsinya cuma utk membuat variabel global spy bisa
diakses oleh class maupun form dan isinya seperti dibawah ini:
'---variabel utk menampung nama database user
Public strUser As String
'---variabel utk menampung nama database password
Public strPass As String
'---variabel utk menampung nama server database
Public strServer As String
'---variabel utk menampung nama tabel yg mau dibuka
Public strTable As String
'---variabel utk menampung connection string database
Public ConnString As String
'---variabel utk mengecek apakah tombol add aktif/tidak
'---kalo nilainya true berati memanggil class insert
'---kalo nilainya false berati memanggil class update
Public Add As Boolean
'---variabel utk menampung kode yg mau diedit
Public UpdateKode As String
Sebelum saya lanjutkan, cara kerja dari aplikasi ini kira2 seperti bro
- Pada saat dijlalankan, akan ada form login seperti dibawah ini
Isi kode dari form diatas adalah seperti dibawah ini :
Private Sub cmdCancel_Click()
Unload Me
End Sub
'---mengisi variabel property yg ada dlm class
Private Sub cmdOK_Click()
Dim objClass As New ClassBussinessProcess
With objClass
.Server = txtServer.Text
.User = txtUserName.Text
.Passwords = txtPassword.Text
End With
frmBrowseCustomers.Show
Unload Me
End Sub
- Setelah di klik OK, maka form akan tertutup dan memanggil form lain seperti gambar dibawah ini :
Private Sub cmdCancel_Click()
Unload Me
End Sub
'---mengisi variabel property yg ada dlm class
Private Sub cmdOK_Click()
Dim objClass As New ClassBussinessProcess
With objClass
.Server = txtServer.Text
.User = txtUserName.Text
.Passwords = txtPassword.Text
End With
frmBrowseCustomers.Show
Unload Me
End Sub
- Setelah di klik OK, maka form akan tertutup dan memanggil form lain seperti gambar dibawah ini :
Kode ukt form diatas adalah seperti dibawah ini :
Private objClass As New ClassBussinessProcess
Private Sub cmdClose_Click()
Unload Me
End Sub
'---utk merefresh data spy tampil dgn data yg baru
'---krn insert data atau edit data
Private Sub cmdRefresh_Click()
objClass.OpenRecord
objClass.GridView DataGrid1
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
'---pd saat form ini menjadi form yg aktif maka akan
'---diperiksa isi variabel updatekode, jika kosong
'---maka langsung keluar, tetapi jika ada isinya
'---maka panah datagrid akan diarahkan pd data yg
'---baru saja di edit,
Private Sub Form_Activate()
If UpdateKode = "" Then
Exit Sub
Else
objClass.FindRecord UpdateKode
DataGrid1.MarqueeStyle = dbgHighlightRow
DataGrid1.SetFocus
End If
End Sub
Private Sub Form_Load()
objClass.TableName = "Customers"
objClass.OpenRecord
objClass.GridView DataGrid1
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
Private Sub ImageFirst_Click()
objClass.MoveToFirst
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub ImageLast_Click()
objClass.MoveToLast
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub ImageNext_Click()
objClass.MoveToNext
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub ImagePrevious_Click()
objClass.MoveToPrior
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub cmdAdd_Click()
'---krn add=true maka class fungsi yg
'---dipanggil adalah insert
Add = True
frmAddEditCustomers.Show vbModal
End Sub
Private Sub cmdDelete_Click()
objClass.DeleteRecord
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
Private Sub cmdEdit_Click()
Add = False
frmAddEditCustomers.Show vbModal
End Sub
Private Sub cmdFind_Click()
objClass.FindRecord txtFind.Text
DataGrid1.MarqueeStyle = dbgHighlightRow
DataGrid1.SetFocus
End Sub
Private Sub DataGrid1_Click()
Add = False
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
Private Sub DataGrid1_DblClick()
Add = False
cmdEdit_Click
End Sub
Coba perhatikan kode2 diatas, pada form diatas tidak ada kode yg biasa kita buat seperti deklarasi variabel
utk koneksi database atau insert atau yang lain. jadi form diatas bener2 gak kode pemrosesan yg ada cuma
memanggil class, jadi kalo ada perubahan pd class maka tampilan form gak ngaruh .
Cara kerja form diatas adalah sebagai berikut :
1. Pada saat di klik tombol Add atau Edit maka akan terbuka form seperti dibawah ini
Private objClass As New ClassBussinessProcess
Private Sub cmdClose_Click()
Unload Me
End Sub
'---utk merefresh data spy tampil dgn data yg baru
'---krn insert data atau edit data
Private Sub cmdRefresh_Click()
objClass.OpenRecord
objClass.GridView DataGrid1
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
'---pd saat form ini menjadi form yg aktif maka akan
'---diperiksa isi variabel updatekode, jika kosong
'---maka langsung keluar, tetapi jika ada isinya
'---maka panah datagrid akan diarahkan pd data yg
'---baru saja di edit,
Private Sub Form_Activate()
If UpdateKode = "" Then
Exit Sub
Else
objClass.FindRecord UpdateKode
DataGrid1.MarqueeStyle = dbgHighlightRow
DataGrid1.SetFocus
End If
End Sub
Private Sub Form_Load()
objClass.TableName = "Customers"
objClass.OpenRecord
objClass.GridView DataGrid1
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
Private Sub ImageFirst_Click()
objClass.MoveToFirst
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub ImageLast_Click()
objClass.MoveToLast
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub ImageNext_Click()
objClass.MoveToNext
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub ImagePrevious_Click()
objClass.MoveToPrior
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
DataGrid1.MarqueeStyle = dbgHighlightRow
End Sub
Private Sub cmdAdd_Click()
'---krn add=true maka class fungsi yg
'---dipanggil adalah insert
Add = True
frmAddEditCustomers.Show vbModal
End Sub
Private Sub cmdDelete_Click()
objClass.DeleteRecord
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
Private Sub cmdEdit_Click()
Add = False
frmAddEditCustomers.Show vbModal
End Sub
Private Sub cmdFind_Click()
objClass.FindRecord txtFind.Text
DataGrid1.MarqueeStyle = dbgHighlightRow
DataGrid1.SetFocus
End Sub
Private Sub DataGrid1_Click()
Add = False
txtRecord.Text = objClass.PositionRecord & " of " & objClass.CountRecord
End Sub
Private Sub DataGrid1_DblClick()
Add = False
cmdEdit_Click
End Sub
Coba perhatikan kode2 diatas, pada form diatas tidak ada kode yg biasa kita buat seperti deklarasi variabel
utk koneksi database atau insert atau yang lain. jadi form diatas bener2 gak kode pemrosesan yg ada cuma
memanggil class, jadi kalo ada perubahan pd class maka tampilan form gak ngaruh .
Cara kerja form diatas adalah sebagai berikut :
1. Pada saat di klik tombol Add atau Edit maka akan terbuka form seperti dibawah ini
Form diatas fungsinya utk menginsert data atau mengedit data
2. Apabila tombol delete di klik maka akan langsung memanggil fungsi menghapus yg ada dalam class
Nah kira-kira seperti itulah ya bisnis proses nya, mudah2an bisa dipahami.
kalo diperhatikan, kode diatas hampir tidak menggunakan sql sintak.
Sumber : http://www.rudihartono.com/index.php/database-programming/18-aplikasi-3-tier
Nama : Cyntia Al Annisa
Nim : 11.41010.0213
2. Apabila tombol delete di klik maka akan langsung memanggil fungsi menghapus yg ada dalam class
Nah kira-kira seperti itulah ya bisnis proses nya, mudah2an bisa dipahami.
kalo diperhatikan, kode diatas hampir tidak menggunakan sql sintak.
Sumber : http://www.rudihartono.com/index.php/database-programming/18-aplikasi-3-tier
Nama : Cyntia Al Annisa
Nim : 11.41010.0213