Tutorial Penggunaan ADO di dalam VBA Microsoft Access

Tutorial ADO ini menggambarkan bagaimana cara menggunakan model pemrograman ADO untuk saling berintegrasi dengan data sumber (data provider). Pada tutorial ini penulis menggunakan data sumber dari SQL Server. Penjelasan tutorial disampaikan secara langkah demi langkah agar Anda dapat memahami setiap langkahnya dengan penggambaran dan pemahaman yang sempurna, kemudian diakhiri dengan contoh secara utuh pada bagian terakhir tutorial ini. Secara umum, langkah-langkah pada tutorial ini dapat dituliskan sebagai berikut:

        Membuat suatu koneksi ke data sumber.

        Membuat suatu SQL command (ini pilihan optional, bukan wajib).

        Memilih kolom, table, dan nlai yang terdapat pada SQL command sebagai parameter variable serta inisialisasi penggunaan service component cursor (ini juga pilihan optional, bukan wajib).

        Menjalankan command (menggunakan Command, Connection, atau Recordset).

        Jika setelah dijalankan command, baris (row) tersebut dikembalikan, maka simpan baris tersebut didalam object storage (Recordset).

        Membuat suatu View terhadap object storage sehingga Anda dapat mensortir, memfilter, dan memanipulasi data (Recordset) ini juga pilihan optional, bukan wajib.

        Edit data termasuk didalamnya menambah, menghapus, ataupun merubah baris dan kolom (Recordset).

        Jika memungkinkan, update data sumber sesuai dengan perubahan dari object storage (Recordset).

        Jika transaksi selesai dilakukan, gunakan dua kemungkinan ini: “Setujui atau Batalkan” perubahan yang terjadi (semacam operasi “Save atau Cancel”).

        Mengakhiri transaksi yang telah dilakukan ini.

Langkah 1 – Membuka Koneksi ke ADO

Sebelum melakukan proses-proses yang berhubungan dengan data sumber, Anda harus membuat suatu koneksi dahulu dengan data sumber tersebut, dan inilah yang disebut connection. Masing-masing data provider mempunyai ConnectionString yang berbeda-beda. Misal untuk Microsoft Jet 4.0, ConnectionString nya adalah “Microsoft.Jet.OLEDB.4.0“. Adapun untuk SQL Server, ConnectionString nya adalah “SQLOLEDB“.

Untuk membuka koneksi ke data sumber, caranya adalah menggunakan metode Coonection.Open. Setelah koneksi pertama terhubung, gunakan metode Recordset.Open. Syntaxnya adalah:

connection.Open
ConnectionString, UserID, Password, OpenOptions

recordset.Open
Source, ActiveConnection, CursorType, LockType, Options

Pada tahap ini, sample yang digunakan adalah:

Dim cnn As New ADODB.Connection

cnn.Open “DSN=Pubs;uid=sa;pwd=;”

Langkah 2 – Membuat sebuah Command

Command adalah instruksi yang dapat dimengerti oleh data provider yang mana dapat digunakan untuk memodifikasi, memanajemen, serta memanipulasi sumber data. Command biasanya ditulis didalam kode SQL. Pada langkah ini, sample yang digunakan adalah:

Dim cmd As New ADODB.Command

Set cmd.ActiveConnection = cnn

cmd.CommandText = “SELECT * from Authors”

Langkah 3 – Menjalankan Command

Terdapat tiga metode yang mana dapat menghasilkan suatu Recordset, yaitu Connection.Execute, Command.Execute, serta Recordset.Open. Ketiga syntax tersebut adalah:

connection.Execute(CommandText, RecordsAffected, Options)

command.Execute(RecordsAffected, Parameters, Options)

recordset.Open
Source, ActiveConnection, CursorType, LockType, Options

Penjelasannya adalah sebagai berikut:

        Metode Connection.Execute menggunakan connection yang diambil langsung dari nilai yang diset-nya. Jenis command ini adalah command text.

        Metode Command.Execute menggunakan object connection yang diset di property ActiveConnection-nya. Command ini secara langsung tidak terlihat, ia terdapat di property Command.CommandText.

        Pada metode Recordset.Open, command merupakan sumber argument yang mana dapat berupa command text ataupun command object. Pada metode ini, Anda dapat menggunakan fasilitas Service Component yang terdapat pada Cursor sehingga Anda dapat lebih memaksimumkan penggunaan fasilitas yang terdapat pada data provider.

Kesimpulannya, setelah melihat perbedaan masing-masing metode diatas, yang paling baik untuk digunakan adalah metode Recordset.Open. Karena ia mendukung penggunaan Microsoft Cursor Service for OLE DB (baca lagi bab sebelumnya jika Anda lupa pengertian ini). Pada tahap ini, sample yang digunakan adalah:

Dim rs As New ADODB.Recordset

rst.CursorLocation = adUseClient

rst.Open cmd, , adOpenStatic, adLockBatchOptimistic

Langkah 4 – Memanipulasi Data

Fungsi terbesar didalam metode object Recordset adalah memeriksa, memanipulasi serta mengatur data. Anggaplah bahwa recordset itu seperti kesatuan data yang dipresentasikan didalam suatu kesatuan baris (row). Baris yang dapat dimanipulasi pada saat Anda terhubung kesana adalah Current Row, dan lokasi Recordset nya disebut Current Row Position. Setiap Anda berpindah kesuatu baris, maka Anda berada pada posisi Current Row yang baru. Didalam Recordset ini Anda dapat mencari data, memfilter data, dan lain-lain. Pada tahap ini, sample yang penulis berikan adalah:

rst!au_lname.Properties(“Optimize“) = True

rst.Sort = “au_lname”

rst.Filter = “phone LIKE ‘415 5*'”

rst.MoveFirst

Do While Not rst.EOF

    Debug.Print “Name = “; rst!au_fname; ” “; rst!au_lname; _

        “, Phone = “; rst!phone

    rst!phone = “777” & Mid(rst!phone, 4)

    rst.MoveNext

Loop

rst.Filter = adFilterNone

Tahap 5 – Update Data

Pada tahap ini, Anda akan mempelajari proses update data didalam suatu Recordset. ADO mendukung dua gagasan dasar dalam update Recordset.

Gagasan pertama, perubahan yang terjadi tidak ingin langsung diupdate kedalam recordset, yaitu perubahan yang terjadi disimpan dahulu didalam suatu mesin copy internal yang disebut juga “Copy Buffer”, kemudian kita memeriksa data didalam copy buffer tersebut, perlu atau tidak data ini di Save. Jika Anda tidak ingin perubahan dilakukan, maka data didalam copy buffer bisa dihapus. Jika Anda ingin menyimpan perubahan yang terjadi, data didalam copy buffer dapat langsung ditransfer atau diupdate ke Recordset.

Gagasan kedua, perubahan yang terjadi inginnya langsung diupdate ke Recordset (biasa disebut Immediate Mode. Atau, semua perubahan inginnya dikumpulkan dahulu (biasa disebut Batch Mode). Tentu saja dalam menggunakan gagasan ini Anda akan memerlukan property LockType dan CursorLocation.

Sample yang penulis berikan pada tahap ini adalah:

cnn.BeginTrans

rst.UpdateBatch

Tahap 6 – Mengakhiri Proses Update Data

Sekarang Anda berada pada tahap akhir tutorial ini. Bayangkan jika seandainya proses “batch-update” yang Anda lakukan pada tahap 5 gagal karena mengalami error. Bagaimana Anda akan menyikapi error yang terjadi tersebut? Bagaimanapun, jika database Anda digunakan secara online lebih dari satu user, bisa saja terjadi sebelum Anda mengupdate data, ada user lain yang masuk mendahului Anda, kemudian user tersebut memodifikasi data didalam suatu field. Inilah yang disebut dengan Conflict. ADO dapat mendeteksi situasi ini dan menampilkan suatu report error.

Pada langkah ini penulis sertakan 2 tahap sebagai berikut:

        Seandainya tidak terdapat error, maka data akan disetujui kemudian diupdate kedata sumber. Untuk menyetujui proses update dapat menggunakan statement sebagai berikut:

cnn.CommitTrans

        Jika terdapat error, maka error ini akan dihandle dengan prosedur error-handling, kemudian proses update dibatalkan / dicancel. Sample nya adalah:

rst.Filter = adFilterConflictingRecords

rst.MoveFirst

Do While Not rst.EOF

    Debug.Print “Conflict: Name =  “; rst!au_fname; ” “; rst!au_lname

    rst.MoveNext

Loop

cnn.RollbackTrans

Kemudian akhiri seluruh proses dengan pelepasan memori-memori yang digunakan, yaitu dengan statement:

rst.Close

cnn.Close

Selesai sudah tutorial ini, untuk melihat secara keseluruhan tutorial ini silahkan dilihat pada penjelasan dibawah ini.

Kesimpulan – Tutorial Penggunaan ADO

Berikut ini adalah kumpulan tutorial pada tahap-tahap diatas.

Public Sub Main()

Dim cnn As New ADODB.Connection

Dim cmd As New ADODB.Command

Dim rst As New ADODB.Recordset

‘ Langkah 1 – Membuka koneksi ke data provider

cnn.Open “DSN=Pubs;uid=sa;pwd=;”

‘ Langkah 2 – Membuat sebuah Command

Set cmd.ActiveConnection = cnn

cmd.CommandText = “SELECT * from Authors”

‘ Langkah 3 – Menambahkan fasilitas cursor dan menjalankan Command

rst.CursorLocation = adUseClient

rst.Open cmd, , adOpenStatic, adLockBatchOptimistic

‘ Langkah 4 – Memanipulasi Data

rst!au_lname.Properties(“Optimize”) = True

rst.Sort = “au_lname”

rst.Filter = “phone LIKE ‘415 5*'”

rst.MoveFirst

Do While Not rst.EOF

    Debug.Print “Name = “; rst!au_fname; ” “; rst!au_lname; _

        “, Phone = “; rst!phone

    rst!phone = “777” & Mid(rst!phone, 4)

    rst.MoveNext

Loop

rst.Filter = adFilterNone

‘ Langkah 5 – Meng-update Data

cnn.BeginTrans

On Error GoTo ConflictHandler

rst.UpdateBatch

‘Langkah 6, bagian A – Mengakhiri update data (menyetujui semua perubahan)

cnn.CommitTrans

ExitTutorial:

On Error GoTo 0

rst.Close

cnn.Close

Exit Sub

‘Langkah 6, bagian B – Mengakhiri update data (meng-cancel semua perubahan)

ConflictHandler:

rst.Filter = adFilterConflictingRecords

rst.MoveFirst

Do While Not rst.EOF

    Debug.Print “Conflict: Name =  “; rst!au_fname; ” “; rst!au_lname

    rst.MoveNext

Loop

cnn.RollbackTrans

Resume ExitTutorial

End Sub

Alhamdulillah, selesai sudah pembahasan mengenai ADO ini. Saya menyarankan agar Anda mempelajari lagi seluk beluk kode ADO di Access Help. Teori ADO yang saya bahas ini adalah teori umum / dasar, dan disini saya tidak menulis semua detail kode-kode ADO. Pada dasarnya, kode-kode ADO yang perlu Anda pelajari lagi dibagi kedalam beberapa bagian yaitu:

         ADO Objects

         ADO Collections

         ADO Properties

         ADO Dynamic Properties

         ADO Methods

         ADO Events

         ADO Enumerated Constants

         Serta ADO Errors

Jika Anda telah terbiasa menggunakan ADO, Insya Allah penggunaan masing-masing kode ADO diatas akan hafal sendiri. Begitu juga, seandainya Anda telah menghafal seluruh kode-kode ADO diatas, namun Anda jarang menggunakannya, bisa jadi Anda akan lupa lagi. Juga bagi Anda yang menggunakan data provider selain yang telah saya sampaikan, maka Anda harus mempelajari lagi penggunaan data provider tersebut di Access Help.

Leave a Reply

%d bloggers like this: