DAO didasarkan pada Microsoft Jet database engine.
Sehinga DAO sangat cocok secara optimal bekerja dengan Microsoft Jet (. MDB) database.
Bagi anda yang masih menyimpan project database lama dengan database MS-Acces, mungkin
masih memakai DAO ini untuk pengkses database nya.
Mungkin saja anda mendapat tugas memaintenance program yang sudah lama ditinggalkan
oleh programmer lamanya dan project tersebut masih menggunakan DAO.
Microsoft Access 2000 meliputi perpustakaan DAO versi 3,6, Ini adalah upgrade dari
versi 3,5. DAO Versi 3.5 sangat sesuai dengan Access 97. (Arsitektur dasar dan fungsi
sangat mirip antar versi)
DAO bergantung pada model obyek Workspace untuk berbagai jenis data akses. Objek
Workspace dapat berisi sesi, keamanan, dan transaksi informasi. (objek Workspace
mendefinisikan bagaimana aplikasi berinteraksi dengan data.)
Di bawah ini adalah gambar struktur objek DAO

Objek DBEngine
Objek DAO tingkat atas setelah Workspace adalah DBEngine. Anda dapat menggunakan
metode CreateWorkspace untuk membuka sesi. Anda dapat mengatur properti DefaultType
dari DBEngine objek tersebut agar Workspace terbuka tanpa adanya pengaturan CreateWorkspaceType
tertentu.
Sifat DBEngine dan metode yang tersedia untuk Workspace menyediakan seperangkat
inti fungsi DAO. Anda dapat menggunakan DBEngine untuk membuat dan mengelola database.
Metode CreateDatabase menciptakan Workspace baru, dan Anda dapat menggunakan argumen
pada metode ini untuk menetapkan urutan semacam database dan status enkripsi.
Anda juga dapat mengatur format versi dalam pemrograman database untuk membuat database
yang kompatibel dengan versi Access sebelumnya.
Metode OpenDatabase membuka database yang sudah ada dalam sebuah objek Workspace.
Setelah Anda membuat database, Anda dapat menerapkan metode Compact dan Repair untuk
mengelola database.
DAO memungkinkan proses transaksi melalui DBEngine dengan tiga metode: BeginTrans,
CommitTrans, dan Rollback. Transaksi adalah satu set operasi yang terjadi dalam
mode semua-atau-tidak. Jika link dalam rantai operasi database gagal, Anda dapat
membatalkan kembali semua operasi.
Sebagai contoh, jika sebuah bank transfer uang dari giro ke rekening tabungan, baik
debet untuk memeriksa dan kredit untuk tabungan harus sukses agar pembukuan menjadi
balance. Jika salah satu bagian gagal, maka semua transaksi harus dibatalkan.
Transaksi juga dapat mempercepat pemrosesan database dengan menulis batching set
disk. Transaksi tersarang Anda dapat sampai dengan lima level. Beberapa sifat dan
metode yang tersedia tergantung pada jenis kerja yang digunakan. Namun, tidak peduli
dengan Workspace yang Anda gunakan, DBEngine berisi koleksi Kesalahan dan Workspace.
Errors Collection
Anda menggunakan Errors Collection dalam proses akses data. Errors Collection berisi
nomor satu atau lebih kesalahan dan deskripsi dari pernyataan terakhir gagal. Errors
Collection, seperti koleksi DAO lain, adalah berbasis nol. Jumlah properti nya menunjukkan
jumlah kesalahan dalam koleksi, dan kesalahan individu memiliki jumlah item 0 melalui
Count -1. Catatan terakhir dalam koleksi Kesalahan sesuai dengan Microsoft ® Visual
Basic for Applications (VBA) objek Err.
Ketika Anda debug aplikasi Anda, Anda mungkin akan terbantu bila melakukan penghitungan
koleksi Kesalahan. Hal ini untuk menyederhanakan pencarian sumber kesalahan atau
solusi untuk kesalahan. Workspaces collection Anda menggunakan properti dan metode
Workspaces collection untuk sesi referensi kerja individu.
Karena Workspaces collection selalu tersedia, akses dapat mempertahankan beberapa
sesi secara bersamaan dan aplikasi Anda dapat membuka dan mengelola setiap kombinasi
ODBCDirect Jet dan Workspace. Anda dapat menggunakan argumen Nama metode unik CreateWorkspace
untuk referensi Workspace individual dalam koleksi dengan menggunakan salah satu
format:
DBEngine.Workspaces (0)
DBEngine.Workspaces ("Nama")
DBEngine.Workspaces! [Nama]
Semua objek DAO memiliki referensi sintaks mirip dengan contoh-contoh ini. Dua gaya
yang tercantum di atas cocok dengan konvensi ADO.
Anda harus mengadopsi salah satu sebisa mungkin untuk meningkatkan keterampilan
migrasi Anda ketika Anda mulai coding dengan ActiveX Data Objects (ADO).
objek Workspace berbagi beberapa metode penting dengan objek DBEngine, seperti CreateDatabase,
OpenDatabase, dan BeginTrans. metode lain, seperti CreateUser dan CreateGroup, yang
unik ke objek Workspace.
Kedua metode membantu mengelola keamanan user-level dalam sebuah WorkSpace. Databases
collection Dalam Workspace, Anda dapat membuka pemrograman database multipel. Menggunakan
DAO dengan VBA menawarkan keuntungan nyata user interface yang memungkinkan pembukaan
sebuah database tunggal pada suatu waktu.
Anda menggunakan nama variabel untuk objek database referensi untuk mempercepat
akses. Pendekatan yang sama meningkatkan kecepatan untuk objek DAO banyak. Properti
Nama database individu dalam sebuah Workspace Jet adalah path ke file database.
Anda referensi database untuk proyek ini dalam kode VBA Anda dengan fungsi CurrentDb.
Akses juga mendukung sintaks alternatif DBEngine (0)
(0) untuk referensi database saat ini. Sintaks CurrentDb menciptakan contoh lain
dari database proyek ini, tetapi sintaks DBEngine mengacu pada salinan yang terbuka
dari database saat ini.
Recordsets collection
Sebuah objek Recordset merupakan record dalam tabel atau yang dihasilkan dari query
baris yang dikembalikan. Anda membuat Recordset yang baru dengan menggunakan metode
OpenRecordset. Anda dapat memanggil metode ini dari beberapa objek, termasuk database
dan objek TableDef, untuk menciptakan sebuah recordset.
Object lain yang memiliki metode OpenRecordset termasuk objek QueryDef dan bahkan
Recordset lainnya. Metode ini menambahkan recordset baru untuk koleksi Recordset.
Anda dapat membuat lima jenis Recordset, seperti ditunjukkan pada tabel berikut.
Jenis Obyek Recordset
1. Tabel
Jenis ini mengacu pada record di Table, seperti yang Anda buat dengan menggunakan
metode CreateTableDef. Selalu mengacu pada tabel Jet tunggal. Anda dapat memperbarui
field nilai-nilai serta menambah dan menghapus Record. Tidak ada kursor ODBC yang
sesuai.
2. Dynaset
Tipe ini adalah kumpulan Record dinamis yang dapat dihasilkan dari satu
atau lebih tabel. Recordset jenis ini dapat diupdate, sehingga Anda dapat menambah,
menghapus, dan memodifikasi record.
Anda menggunakan properti DataUpdatable field untuk menentukan apakah sebuah field
diupdate. Dalam sebuah database multiuser, Anda dapat melihat perubahan yang dipilih
dibuat oleh pengguna lain. Recordset jenis ini sesuai dengan kursor keyset ODBC.
3. Snapshot
Dengan jenis ini, Anda bisa memeriksa record berdasarkan satu atau lebih
tabel, tetapi Anda tidak dapat mengubah record. Setelah Anda memuat snapshot ke
dalam memori, hal itu tidak mencerminkan modifikasi lebih lanjut ke table yang mendasarinya.
Recordset jenis ini sesuai dengan kursor ODBC statis.
4. Forward-Only
Jenis ini identik dengan recordset jenis-snapshot, tetapi Anda hanya dapat
bergerak maju. Tipe ini sesuai dengan sebuah kursor ke forward-only ODBC.
5. Dynamic
Jenis ini merupakan hasil query berdasarkan satu atau lebih tabel. Pengguna
dapat meng-update recordset dengan menambahkan, menghapus, dan memodifikasi record.
Jenis ini juga menunjukkan perubahan yang dilakukan oleh pengguna lain dalam lingkungan
multiuser. Ini tersedia hanya di Workspace ODBCDirect dan sesuai dengan kursor ODBC
dinamis.
Metode Open Recordset
Metode OpenRecordset membutuhkan argumen sumber yang menentukan hasil recordset.
Sumber ini biasanya terdiri dari nama tabel, nama permintaan, atau pernyataan SQL.
Anda juga dapat menentukan jenis recordset, jika tidak, DAO mengembalikan sebuah
tabel, dynaset, atau jenis-forward only, tergantung pada sumber.
Sebuah argumen pilihan memungkinkan Anda menentukan salah satu karakteristik beberapa
recordset, seperti melarang user dari membaca atau menulis ke recordset. Argumen
terakhir memungkinkan Anda mengatur properti LockEdits untuk sebuah recordset.
Properti ini menunjukkan jenis penguncian yang berlaku saat aplikasi merevisi, menambah,
atau menghapus record dari suatu recordset. Dengan Workspace Jet, pengaturan Anda
untuk argumen akhir ini cenderung read-only, kunci pesimis, dan kunci optimis.
Dengan pengaturan read-only, tidak ada revisi recordset yang mungkin. Dengan kunci
pesimis, invoking metode Edit mengunci halaman yang berisi record. Dengan kunci
optimis, pengguna lain dapat merevisi record sampai aplikasi Anda memanggil metode
Update. Hal ini dapat menghasilkan recordset berperforma lebih cepat, tetapi juga
dapat menyebabkan update bertentangan.
Metode Recordset
Anda dapat memodifikasi data dalam recordset dengan menggunakan Edit, AddNew, Update,
dan metode Hapus. Anda menggunakan metode Update Edit dan bersama-sama untuk merevisi
nilai dalam sebuah recordset. Metode Edit membuka record untuk mengedit, dan metode
Update mamasukkan nilai-nilai baru untuk tabel. Metode AddNew dan Update beroperasi
sebagai satu tim.
Ada sinyal bahwa kode Anda akan menambahkan merekam dengan menerapkan metode AddNew.
Anda menyimpan record baru dengan metode Update. Metode Hapus menghapus rekord saat
ini dari suatu recordset. Setelah Anda menghapus record, record tetap berjalan sampai
Anda menavigasi ke rekor baru. Metode Hapus tidak memerlukan metode Update.
Anda dapat menggunakan satu set move metode untuk melakukan navigasi recordset.
Sekali Anda menambahkannya ke koleksi Recordset. MoveNext dan MovePrevious metode
navigasi maju dan mundur satu record.
Jika Anda sudah pada rekaman pertama dan aplikasi Anda memanggil metode MovePrevious,
DAO kembali awal "file" (BOF) marker dari recordset. Anda dapat menggunakan tanda
ini untuk bendera gerakan di luar rekaman pertama. Demikian pula, DAO mengembalikan
sebuah "akhir file" (EOF) penanda saat aplikasi memanggil metode MoveNext dari catatan
terakhir.
Setiap usaha untuk bergerak melampaui baik atau penanda BOF ataupun EOF menghasilkan
error run-time. Metode move memungkinkan Anda menentukan jumlah baris tetap bergerak.
Anda juga dapat menetapkan posisi awal selain rekord saat ini. MoveFirst dan MoveLast
Method bergerak langsung ke rekaman pertama dan terakhir di sebuah recordset, masing-masing.
Dengan Recordset yang sangat besar, mungkin ada jeda yang signifikan hingga mencapai
rekord terakhir dalam sebuah recordset. Satu set metode menavigasi ke record baru
yang memenuhi kriteria tertentu. Metode ini FindFirst, FindLast, FindNext,
dan FindPrevious.
Anda tentukan kriteria untuk metode Find dengan sintaks yang sama dengan klausa
WHERE dalam pernyataan SQL. Jika tidak ada record memenuhi kriteria yang ditentukan,
metode ini mengatur properti recordset's NoMatch jadi benar. Jika
tidak, mereka hanya pindah ke record yang memenuhi kriteria. Kedua FindNext dan
FindPrevious bergerak dari record saat ini.
FindFirst dan FindLast pencarian dari record pertama atau terakhir, masing-masing.
Ketika Anda bekerja dengan objek TableDef, metode Seek dapat menghasilkan hasil
yang lebih cepat daripada metode Find. Secara umum,
Anda mendapatkan performa pencarian yang lebih baik dengan menggunakan pernyataan
SQL pada pencarian metode OpenRecordset. Dengan metode Find, Move, dan Seek, Lebih
dianjurkan untuk menetapkan properti recordset's Indeks sehingga Anda dapat menempatkan
record dalam urutan yang tepat ditentukan oleh field indeks.
Objek Workspace
Objek Jet Database di Workspace dapat mengaktifkan unsur-unsur yang dipilih sebuah
skema database. Sebagai contoh, Anda dapat membuka Recordset untuk manipulasi atau
Anda dapat menjalankan action query yang mengupdate, menambah, atau menghapus record.
Database metode juga memungkinkan Anda membuat dan mengelola replika. Lima koleksi
hirarkis untuk database tercantum di bawah ini. Objek Database memiliki metode menambahkan
elemen baru untuk semua koleksi ini:
TableDefs
Recordset
QueryDefs
Koleksi TableDefs
Koleksi TableDefs mengakses TableDef individual dalam database. objek TableDef
berisi koleksi fields dan Indeks, sehingga Anda dapat menentukan table dengan menggunakan
obyek TableDef. Anda menggunakan CreateField dan metode CreateIndex untuk menulis
definisi tabel.
Bila Anda menggunakan metode CreateField, Anda menentukan field Anda, dengan menunjuk
nama, jenis, dan ukuran. Kemudian Anda memanggil metode Add ke bidang baru
yang Anda tambahkan ke koleksi Fields untuk objek TableDef.
Jika sudah berisi koleksi fields dengan nama Anda tentukan sebagai argumen, kode
Anda menghasilkan error run-time trappable (error yang dapat ditangkap).
Anda dapat menggunakan ini untuk mengelola objek TableDef Anda, misalnya, menghapus
field lama dengan metode Delete. Bila Anda membuat indeks, Anda menjalankan
metode CreateIndex dan tambahkan satu atau lebih field ke indeks. Lalu Anda menambahkan
indeks baru ke koleksi Indeks untuk objek TableDef.
Jika indeks sudah ada dengan nama yang Anda tentukan, error run-time terjadi. Anda
dapat menggunakan perangkap kesalahan (error trapping) ini untuk mengelola proses
pengindeksan objek TableDef.
Koleksi QueryDefs
Koleksi QueryDefs menyimpan QueryDef individu dalam database. Objek QueryDef
adalah pernyataan SQL yang biasanya mengembalikan satu set baris atau melakukan
action seperti update, menambahkan, atau menghapus record dalam sebuah recordset.
Ketika pernyataan SQL mengembalikan objek QueryDef, Ini dapat memiliki koleksi Fields
bidang masing-masing. Jika Anda menerima pernyataan SQL argumen yang menetapkan
kriteria tersebut pada waktu runtime, objek QueryDef dapat memiliki koleksi Parameter.
Ketika objek QueryDef berjalan, Anda dapat menentukan parameter pemrograman atau
pada saat dijalankan melalui kotak dialog. Anda dapat membuat objek QueryDef baru
dengan menggunakan metode CreateQueryDef baik untuk obyek Database di ruang kerja
atau Jet Database atau objek Connection di Workspace ODBCDirect.
|