Pages

Untuk Mencapai Kesuksesan, Kita Jangan Hanya Bertindak, Tapi Juga Perlu Bermimpi, Jangan Hanya Berencana, Tapi Juga Perlu Untuk Percaya

Minggu, 28 November 2010

DAO (Database Access Objects) pada Visual Basic

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.

0 komentar:

Posting Komentar