Bagikan melalui


Komentar di HelloData

Aplikasi HelloData melangkah melalui operasi dasar aplikasi ADO yang khas: mendapatkan, memeriksa, mengedit, dan memperbarui data. Saat Anda memulai aplikasi, klik tombol pertama, Ambil Data. Ini akan menjalankan subrutin GetData.

GetData

GetData menempatkan string koneksi yang valid ke dalam variabel tingkat modul, m_sConnStr. Untuk informasi selengkapnya tentang string koneksi, lihat Membuat String Koneksi.

Tetapkan handler kesalahan menggunakan pernyataan Visual Basic OnError. Untuk informasi selengkapnya tentang penanganan kesalahan di ADO, lihat Penanganan Kesalahan. Objek Koneksi baru dibuat, dan properti CursorLocation diatur ke adUseClient karena contoh HelloData membuat Recordset terputus. Ini berarti bahwa segera setelah data diambil dari sumber data, koneksi fisik dengan sumber data rusak, tetapi Anda masih dapat bekerja dengan data yang di-cache secara lokal di objek Recordset Anda.

Setelah koneksi dibuka, tetapkan string SQL ke variabel (sSQL). Kemudian buat sebuah instance objek baru Recordset , m_oRecordset1. Di baris kode berikutnya, buka Recordset di atas Koneksi yang ada, meneruskan sSQL sebagai sumber Recordset. Anda membantu ADO dalam membuat penentuan bahwa string SQL yang telah Anda lewati sebagai sumber untuk Recordset adalah definisi tekstual perintah dengan meneruskan adCmdText dalam argumen akhir ke metode Recordset Open. Baris ini juga mengatur LockType dan CursorType yang terkait dengan Recordset .

Baris berikut menetapkan properti MarshalOptions sama dengan adMarshalModifiedOnly. MarshalOptions menunjukkan rekaman mana yang harus di-marshal ke tingkat tengah (atau server Web). Untuk informasi lebih lengkap tentang marshaling, lihat dokumentasi COM. Saat Anda menggunakan adMarshalModifiedOnly dengan kursor pihak klien (CursorLocation = adUseClient), hanya rekaman yang telah dimodifikasi pada sisi klien yang ditulis kembali ke lapisan tengah. Mengatur MarshalOptions ke adMarshalModifiedOnly dapat meningkatkan performa karena lebih sedikit baris yang di-marshal.

Selanjutnya, putuskan sambungan Recordset dengan mengatur properti ActiveConnection sama dengan Nothing. Untuk informasi selengkapnya, lihat bagian "Memutuskan sambungan dan Menyambungkan Kembali Recordset" di Memperbarui dan Mempertahankan Data.

Tutup koneksi ke sumber data dan hancurkan objek Koneksi yang ada. Ini merilis sumber daya yang telah dikonsumsinya.

Langkah terakhir adalah mengatur Recordset sebagai DataSource untuk Kontrol Microsoft DataGrid pada formulir sehingga Anda dapat dengan mudah menampilkan data dari Recordset.

Klik tombol kedua, Periksa Data. Ini menjalankan subroutine ExamineData.

PeriksaData

ExamineData menggunakan berbagai metode dan properti objek Recordset untuk menampilkan informasi tentang data di Recordset. Ini melaporkan jumlah rekaman dengan menggunakan properti RecordCount. Ini mengiterasi melalui Recordset dan menampilkan nilai properti AbsolutePosition di kotak teks tampilan pada formulir. Ketika dalam perulangan, nilai properti Bookmark untuk rekaman ketiga ditempatkan ke variabel varian, vBookmark, agar dapat digunakan nanti.

Rutinitas menavigasi langsung kembali ke rekaman ketiga menggunakan variabel bookmark yang disimpan sebelumnya. Rutinitas memanggil subroutine WalkFields, yang mengiterasi melalui koleksi Fields dari Recordset dan menampilkan detail tentang setiap Field dalam koleksi tersebut.

Terakhir, ExamineData menggunakan properti Filter dari Recordset untuk menyaring hanya rekaman dengan CategoryId sama dengan 2. Hasil penerapan filter ini segera terlihat di kisi tampilan pada formulir.

Untuk informasi selengkapnya tentang fungsionalitas yang ditampilkan di subroutine ExamineData, lihat Memeriksa Data.

Selanjutnya, klik tombol ketiga, Edit Data. Ini akan menjalankan subroutine EditData.

EditData

Saat kode memasuki subroutine EditData, Recordset masih difilter pada CategoryId yang sama dengan 2, sehingga hanya item yang memenuhi kriteria filter yang terlihat. Pertama, mengulang melalui Recordset dan meningkatkan harga setiap item yang terlihat di Recordset sebesar 10 persen. Nilai bidang Harga diubah dengan mengatur properti Nilai untuk bidang tersebut sama dengan jumlah baru yang valid.

Ingatlah bahwa Recordset terputus dari sumber data. Perubahan yang dibuat di EditData dibuat hanya pada salinan data yang di-cache secara lokal. Untuk informasi selengkapnya, lihat Mengedit Data.

Perubahan tidak akan dilakukan pada sumber data sampai Anda mengklik tombol keempat, Memperbarui Data. Ini akan menjalankan subroutine UpdateData.

PerbaruiData

UpdateData terlebih dahulu menghapus filter yang telah diterapkan pada Recordset . Kode menghapus dan mengatur ulang m_oRecordset1 sebagai DataSource untuk Microsoft DataGrid Terikat di formulir sehingga Recordset yang tidak difilter muncul di kisi.

Kode kemudian memeriksa untuk melihat apakah Anda dapat bergerak mundur di Recordset dengan menggunakan metode Supports dengan argumen adMovePrevious.

Rutinitas berpindah ke rekaman pertama menggunakan metode MoveFirst dan menampilkan nilai asli dan nilai saat ini dari bidang, dengan menggunakan properti OriginalValue dan Value dari objek Field. Properti-properti ini, bersama dengan properti UnderlyingValue (tidak digunakan di sini), dibahas dalam Memperbarui dan Mempertahankan Data.

Selanjutnya, objek Koneksi baru dibuat dan digunakan untuk membangun kembali koneksi ke sumber data. Anda menyambungkan kembali Recordset ke sumber data dengan mengatur Koneksi baru sebagai ActiveConnection untuk Recordset. Untuk mengirim pembaruan ke server, kode memanggil UpdateBatch di Recordset.

Jika pembaruan batch berhasil, variabel bendera tingkat modul, m_flgPriceUpdated, diatur ke True. Ini akan mengingatkan Anda nanti untuk membersihkan semua perubahan yang dibuat pada database.

Akhirnya, kode kembali ke catatan pertama di Recordset dan menampilkan nilai asli dan saat ini. Nilai tetap sama setelah memanggil UpdateBatch.

Untuk informasi terperinci tentang cara memperbarui data, termasuk apa yang harus dilakukan saat data di server berubah saat Recordset Anda terputus, lihat Memperbarui dan Menyimpan Data.

Form_Unload

Subroutine Form_Unload penting karena beberapa alasan. Pertama, karena ini adalah aplikasi sampel, Form_Unload membersihkan perubahan yang dilakukan pada database sebelum aplikasi keluar. Kedua, kode menunjukkan bagaimana perintah dapat dijalankan langsung dari objek Koneksi terbuka dengan menggunakan metode Jalankan. Terakhir, ini menunjukkan contoh menjalankan kueri yang tidak menampilkan baris (kueri UPDATE) terhadap sumber data.