Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Pemrograman Database dengan DAO pada VB                                      Hendra, S.T.DatabaseSuatu database merupakan ...
Pemrograman Database dengan DAO pada VB                                        Hendra, S.T.   3. Suatu tabel harus menghin...
Pemrograman Database dengan DAO pada VB                                      Hendra, S.T.   •    Menyediakan suatu bahasa ...
Pemrograman Database dengan DAO pada VB                                       Hendra, S.T.Suatu record dibentuk oleh banya...
Pemrograman Database dengan DAO pada VB                               Hendra, S.T.Membuat Database anda yang pertama   1. ...
Pemrograman Database dengan DAO pada VB                                    Hendra, S.T.   2. Pilih New Table, sehingga aka...
Pemrograman Database dengan DAO pada VB                                       Hendra, S.T.Anda dapat menentukan apakah fie...
Pemrograman Database dengan DAO pada VB                                   Hendra, S.T.Anda dapat menentukan option Primary...
Pemrograman Database dengan DAO pada VB                                        Hendra, S.T.    1. Pilih jenis Table type r...
Pemrograman Database dengan DAO pada VB                                   Hendra, S.T.Adapun DDL (Data Definition Language...
Pemrograman Database dengan DAO pada VB                                      Hendra, S.T.Latihan 1Judul : Membuat Database...
Pemrograman Database dengan DAO pada VB                                 Hendra, S.T.Nama Field   Type         Size        ...
Pemrograman Database dengan DAO pada VB                                       Hendra, S.T.Latihan 2Judul : Membuat Relasi ...
Pemrograman Database dengan DAO pada VB                                                        Hendra, S.T.Mengenal Data k...
Pemrograman Database dengan DAO pada VB                                                       Hendra, S.T.                ...
Pemrograman Database dengan DAO pada VB                                   Hendra, S.T. Pada recordset jenis table anda dap...
Pemrograman Database dengan DAO pada VB                                                      Hendra, S.T.Dim MyBookMark As...
Pemrograman Database dengan DAO pada VB                                     Hendra, S.T.Menambah record baru ke recordsetA...
Pemrograman Database dengan DAO pada VB                                     Hendra, S.T.If Data1.Recordset.Eof Then   Data...
Pemrograman Database dengan DAO pada VB                                     Hendra, S.T.Private Sub Data1_Error(DataErr As...
Pemrograman Database dengan DAO pada VB                                   Hendra, S.T. Latihan 3 Judul : Menggunakan Data ...
Pemrograman Database dengan DAO pada VB                       Hendra, S.T.               Name                cmdPrevComman...
Pemrograman Database dengan DAO pada VB                       Hendra, S.T.      cmdLast.Enabled = True   End If   Call Kun...
Pemrograman Database dengan DAO pada VB                       Hendra, S.T.If txtKeterangan.Text = "" Then   MsgBox "Ketera...
Pemrograman Database dengan DAO pada VB                                     Hendra, S.T.Pengaturan MultiUser pada Data Kon...
Pemrograman Database dengan DAO pada VB                                       Hendra, S.T.usaha penguncian oleh pemakai la...
Pemrograman Database dengan DAO pada VB                                     Hendra, S.T.Pada Pesimistik Locks, penguncian ...
Pemrograman Database dengan DAO pada VB                                     Hendra, S.T.End SelectEnd SubPrivate Sub cmdDe...
Pemrograman Database dengan DAO pada VB                       Hendra, S.T.If txtKeterangan.Text = "" Then   MsgBox "Ketera...
Pemrograman Database dengan DAO pada VB                                    Hendra, S.T.         Resume    Case Else       ...
Pemrograman Database dengan DAO pada VB                            Hendra, S.T.Latihan 4Judul : Pengaturan Program MultiUs...
Pemrograman Database dengan DAO pada VB                                       Hendra, S.T.         Resume    Case Else    ...
Pemrograman Database dengan DAO pada VB                                  Hendra, S.T.Latihan 5Judul : Pengaturan Program M...
Pemrograman Database dengan DAO pada VB                                Hendra, S.T.           Resume CancelcmdUpdate      ...
Upcoming SlideShare
Loading in …5
×

Pemrograman database dengan dao pada vb

2,431 views

Published on

Published in: Education
  • Be the first to like this

Pemrograman database dengan dao pada vb

  1. 1. Pemrograman Database dengan DAO pada VB Hendra, S.T.DatabaseSuatu database merupakan koleksi dari informasi yang berhubungan dengan subjek ataufungsi tertentu, seperti menangani nilai-nilai ujian mahasiswa atau menangani suatudaftar koleksi musik. Jika database anda tidak tersimpan dalam komputer, maka andaharus menangani informasi tersebut dari berbagai sumber (berkas) dan mengkoordinirserta mengorganisasinya sendiri.Dengan mengunakan suatu Sistem Manajemen Database (DBMS) anda dapatmenempatkan database anda dalam suatu file, dan mengorganisasikannya menjadi tabel-tabel, dan mengkoordinir data tersebut menjadi laporan dengan berbagai fasilitas sepertiForm, Query, Report.Dewasa ini DBMS telah menjadi inti dari administrasi dan pengolahan data padaperusahaan skala menengah keatas, dapat dibayangkan kalau pengolahan data padaperusahaan tersebut masih menggunakan cara manual, berapa jumlah manusia yangdibutuhkan serta waktu yang dihabiskan untuk menghasilkan laporan keuangan.Konsep Database RelationalPada komputer, suatu database disimpan dalam bentuk file didalam media penyimpananyang diwakili dengan nama file.Model relational merupakan standar untuk rancangan database dan terbukti sebagai carayang paling efektif dalam penyimpanan dan pengolahan data, dimana database disimpandan ditampilkan sebagai suatu koleksi dari tabel-tabel.Normalization merupakan suatu konsep yang penting dalam perancangan databaserelational, dimana beberapa konsep adalah sebagai berikut : 1. Suatu tabel harus memiliki kolom identifier yang sifatnya unique untuk membedakan record yang satu dengan yang lain didalam tabel tersebut yang biasanya dikenal sebagai Primary Key. 2. Suatu tabel hanya menyimpan data dari satu jenis entiti.Indoprog 1
  2. 2. Pemrograman Database dengan DAO pada VB Hendra, S.T. 3. Suatu tabel harus menghindari data yang berulang pada baris maupun kolom.Setelah tabel di normalisasi, maka data dapat di tampilkan dengan menggunakan fasilitasquery untuk menghasilkan informasi seakan-akan menjadi satu tabel.Suatu struktur didefinisikan dengan membuat relasi antar tabel, kaitan data antar tabel inidi dalam database merupakan model dari relationship.Adapun model database relational menawarkan keuntungan sebagai berikut : • Mengorganisasikan data didalam suatu koleksi tabel-tabel membuat rancangan menjadi mudah dipahami.Indoprog 2
  3. 3. Pemrograman Database dengan DAO pada VB Hendra, S.T. • Menyediakan suatu bahasa yang relatif lengkap untuk mendefinisikan data, mengambil dan mengupdate. • Menyediakan aturan integritas yang mana mendefinisikan suatu keadaan yang konsisten untuk meningkatkan reliabilitas data.Suatu relational database manajemen sistem (RDBMS) adalah software yangmemungkinkan anda untuk menampilkan data anda pada suatu model relational.Database-database Relational mendukung suatu bahasa standar yang dikenal sebagaiStructured Query Language (SQL). SQL telah berkembang menjadi suatu bahasa yangcomprehensive untuk pengendalian dan interaksi dengan suatu sistem manajemendatabase (DBMS). SQL adalah suatu standar yang disetujui oleh American NationalStandards Institute (ANSI). Database Northwind (Nwind.mdb) adalah suatu contohdatabase relational yang ada pada Microsoft Access dan Visual Basic.TabelModel database relational menampilkan data sebagai suatu koleksi dari tabel-tabel. Suatutabel adalah pengelompokan secara logika dari informasi yang berhubungan. Sebagaicontoh, pada database Northwind memiliki suatu daftar dari tabel-tabel karyawan,pelanggan, order. Tabel-tabel dibentuk oleh baris-baris dan kolom-kolom. Baris-barissering disebut sebagai record-record dan kolom-kolom disebut sebagai field-field.RecordSuatu record mengandung informasi dari suatu isian tunggal dalam suatu tabel. Sebagaicontoh, sebuah record dalam suatu tabel Karyawan akan mengandung informasi darikaryawan-karyawan.FieldIndoprog 3
  4. 4. Pemrograman Database dengan DAO pada VB Hendra, S.T.Suatu record dibentuk oleh banyak field. Setiap field dalam suatu record mengandungsuatu potongan tunggal dari informasi tentang record. Sebagai contoh, suatu recordKaryawan memiliki No Induk Karyawan, Nama, Marga dan yang lainnya.KeyUntuk secara unik mengenali suatu baris (record), setiap tabel harus memiliki suatuprimary key. Primary key adalah suatu field, atau konbinasi dari field-field, yang mananilainya bersifat unik untuk tiap baris atau record dalam tabel. Sebagai contoh, fieldNomor Induk Karyawan adalah primary key untuk tabel Karyawan. Tidak ada duakaryawan yang memiliki Nomor Induk yang sama.Suatu tabel dapat mengandung field yang merupakan foreign key. Suatu foreign key"menunjuk pada" suatu field primary key pada tabel yang berhubungan. Sebagai contoh,pada database Northwind, Tabel Pesanan mengandung suatu field Nomor Pelanggan.Setiap Nomor Pelanggan pada tabel Order menunjukkan Pelanggan yang melakukanPesanan tersebut.Hubungan antara tabel Pesanan dan Pelangan adalah one-to-many relationship—yangmana adalah, setiap pelanggan dapat melakukan lebih dari satu pesanan.IndexUntuk mempercepat akses, banyak database menggunakan index. Data tabel yangterindex berurut akan lebih cepat pencariaannya dibandingkan dengan tabel. Setiap isiindex menunjuk ke posisi ditabelnya.Membuat Database dengan Visual Data ManagerPada Visual Basic, anda dapat membuat database dengan menggunakan Visual DataManager yang dapat diaktifkan dari menu Add Ins, Visual Data Manager.Indoprog 4
  5. 5. Pemrograman Database dengan DAO pada VB Hendra, S.T.Membuat Database anda yang pertama 1. Dari menu File, pilih New, Microsoft Access, Version 7.0 2. Tentukan lokasi penyimpanan dan nama database anda, misalnya Indoprog.mdbSelanjutnya akan ditampilkan dua jendela yaitu : 1. Database Window, menunjukan koleksi dari database anda 2. SQL Statement, tempat anda mengetikkan bahasa SQLMembuat Tabel anda yang pertama 1. Klik kanan pada "Properties" yang berada pada Database WindowIndoprog 5
  6. 6. Pemrograman Database dengan DAO pada VB Hendra, S.T. 2. Pilih New Table, sehingga akan muncul kotak dialog Table Structure 3. Pada Table Name ketikkan nama tabel yang ingin anda buat, misalnya Forum 4. Klik pada Add Field untuk mengetikkan field-field tabel anda, dan akan muncul kotak dialog Add Field, Name ketikkan nama field anda, pilihlah Type data yang bersesuaian dan ukuran dari field tersebutIndoprog 6
  7. 7. Pemrograman Database dengan DAO pada VB Hendra, S.T.Anda dapat menentukan apakah field tersebut adalah AutoIncrField (untuk type Long),AllowZeroLength (untuk type Text), Required.Klik pada Ok, dan lakukan hal yang sama untuk field berikutnya, jika telah selesai klikpada Close. 5. Langkah selanjutnya adalah membuat Primary Key untuk tabel anda dengan melakukan klik pada tombol Add Index. Pada Name ketikkan nama Index, dan double klik pada field yang ingin di Index pada kotak Available Fields.Indoprog 7
  8. 8. Pemrograman Database dengan DAO pada VB Hendra, S.T.Anda dapat menentukan option Primary, Unique dan IgnoreNulls, klik OK jika telahselesai, dan akhirnya Close. 6. Akhirnya klik pada Build The Table.Mengetik data pada Visual Data ManagerIndoprog 8
  9. 9. Pemrograman Database dengan DAO pada VB Hendra, S.T. 1. Pilih jenis Table type recordset 2. Pada Database Windows klik kanan pada tabel yang ingin anda ketik datanya. Dalam hal ini adalah tabel Forum, dan pilih Open, klik Add dan mulai mengetikkan data anda, dan akhirnya Update.Membuat Relasi antar databaseSesuai dengan konsep database relational, tentu saja tabel-tabel didalam suatu databasememiliki link berdasarkan field tertentu yang bertindak sebagai foreign key dan primarykey.Pada database yang telah kita buat pada Latihan 1, adapun relasi antar tabel tersebutadalah sebagai berikut :Tabel Aktifitas berisi data aktifitas peserta dimana seorang Peserta dapat mengikuti lebihdari satu forum Diskusi, dan sebuah forum diskusi dapat diikuti oleh lebih dari satupeserta, dan status Peserta pada masing-masing forum diskusi dapat berbeda-beda.Tabel AktifitasNama Field (Foreign key) Foreign Tabel Foreign FieldEmail Peserta EmailForumID Forum ForumIDStatus Status StatusUntuk membuat Relasi antar tabel pada Visual Data Manager anda dapat menggunakanBahasa SQL yang diketikan pada jendela SQL Language dan kemudian di Execute.Indoprog 9
  10. 10. Pemrograman Database dengan DAO pada VB Hendra, S.T.Adapun DDL (Data Definition Language) SQL untuk membuat Relasi antar tabel adalahsebagai berikut :ALTER TABLE table ADD CONSTRAINT name FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [,foreignfield2 [, ...]])]dimana :table Nama tabelname Nama Constraint yang akan dibuatref Nama field yang akan dibuat relasiforeigntable Nama foreign tableforeignfield Nama foreign fieldContoh :ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasEmail FOREIGN KEY (Email)REFERENCES Peserta (Email);ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasForumID FOREIGN KEY(ForumId) REFERENCES Forum (ForumId);ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasStatus FOREIGN KEY(Status) REFERENCES Satus (Status);Jika dibuka dengan Relationship pada Microsoft Access maka hasil perintah SQL diatasakan membuat relasi antar tabel sebagai berikut :Indoprog 10
  11. 11. Pemrograman Database dengan DAO pada VB Hendra, S.T.Latihan 1Judul : Membuat Database dengan Visual DataManagerBuatlah database Indoprog.Mdb dengan tabel-tabel sebagai berikut :Tabel ForumNama Field Type Size AutoIncrField AllowNulls RequireForumID Text 25 Tidak YaKeterangan Text 50Alamat Text 50 Tidak YaPrimary Key (P_Key) dengan field ForumIDTabel StatusNama Field Type Size AutoIncrField AllowNulls RequireStatus Byte 1 Tidak YaKeterangan Text 50Primary Key (P_Key) dengan field StatusTabel PesertaNama Field Type Size AutoIncrField AllowNulls RequireEmail Text 25 Tidak YaNama Text 50Alamat Text 50Kota Text50 50Telepon Text 25Homepage Text 50Perusahaan Text 50TanggalGabung Date 8Primary Key (P_Key) dengan field EmailTabel AktifitasIndoprog 11
  12. 12. Pemrograman Database dengan DAO pada VB Hendra, S.T.Nama Field Type Size AutoIncrField AllowNulls RequireID Long 4 YaEmail Text 50 Tidak YaForumID Text 25 Tidak YaStatus Byte 50 Tidak YaPrimary Key (P_Key) dengan field IDIndoprog 12
  13. 13. Pemrograman Database dengan DAO pada VB Hendra, S.T.Latihan 2Judul : Membuat Relasi antar tabel dalam Databasedengan SQL1. Aktifkan Visual Data Manager, dan buatlah relasi antar table di databaseIndoprog.mdbTabel AktifitasNama Field (Foreign key) Foreign Tabel Foreign FieldEmail Peserta EmailForumID Forum ForumIDStatus Status StatusCaranya :Aktifkan database file Indoprog.mdbPada Jendela SQL Statement ketikkan :ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasEmail FOREIGN KEY (Email)REFERENCES Peserta (Email);Untuk membuat relasi antara "tabel Aktifitas" dengan "tabel Peserta" berdasarkan field"Email".Klik pada tombol Execute, jika terjadi Error abaikan saja, karena perintah SQL diatastidak menghasilkan recordset.Lanjutkan untuk relasi lainnya.Indoprog 13
  14. 14. Pemrograman Database dengan DAO pada VB Hendra, S.T.Mengenal Data kontrolDBListData kontrol merupakan kontrol standar yang disediakan pada Visual Basic untukdigunakan untuk membuat aplikasi database sederhana. Data kontrol merupakan suatulapisan yang menghubungkan data dengan user interface.Properti pada Data kontrolProperti Keterangan Menentukan pemerataan kontrol pada Form (0-None, 1- Top, 2 - Bottom, 3 - Left,Align 4 - Right) Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer mencapaiBOFAction BOF (1 - MoveFirst, 0 - BOF)Caption Menentukan tulisan pada data kontrol Menentukan jenis software file database (Access, dBaseIII, dBaseIV, dll) sebagaiAccess sumber data Menentukan path dan nama database file yang akan digunakan sebagai sumberDatabaseName data Menentukan jenis kursor yang digunakan (0 - DefaultCursor, 1 - ODBCCursor, 2 -DefaultCursorType ServerSideCursor)DefaultType Menentukan jenis data yang digunakan (2 - UseJext, 1 - UseODBC) Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer mencapaiEOFAction BOF (1 - MoveLast, 0 - EOF,2-AddNew) Menentukan modus pengaktifan database secara Share atau Exclusive (False,Exclusive True)ReadOnly Menentukan apakah recordset adalah readonly atau tidak (False, True) Menentukan jenis recordset yang akan digunakan (1-Dynaset, 0-Table, 2-RecordsetType Snapshot) Menentukan sumber data untuk recordset, dapat berupa nama tabel maupunRecordSource bahasa SQL (khusus untuk Dynaset dan Snapshot)Memahami Jenis RecordSetVisual Basic menerima dan menampilkan record dari database dengan menggunakanobjek Recordset. Recordset menampilkan record dari suatu Tabel atau record yangmerupakan hasil Query (SQL). Ada tiga jenis recordset yang dapat ditentukan padaproperti RecordSetType pada data control, adapun ketiga jenis recordset tersebut adalahsebagai berikut : Jenis Keterangan Recordset Table Suatu himpunan dari record yang diambil dari suatu tabel tunggal database. Anda dapat menambah, mengubah, atau menghapus record pada jenis recordset ini. Dynaset Suatu himpunan dari record secara dinamis yang di ambil dari suatu tabel tunggal maupun hasil Query (SQL) dari satu atau lebih tabel. Anda dapat menambah, mengurangi, atau menghapus record pada jenis recordset ini, dan perubahan akan mempengaruhi tabel yang bersangkutan. Snapshot Suatu himpunan dari record yang merupakan duplikasi secara statis. Anda dapat menggunakan recordset jenis ini untuk mencari data, dan membuat laporan. Recorset Snapshot dapatIndoprog 14
  15. 15. Pemrograman Database dengan DAO pada VB Hendra, S.T. mengandung field dari satu atau lebih tabel yang tidak dapat di update. Anda dapat memilih jenis objek Recordset yang ingin anda gunakan pada Property (RecordsetType), dan nilai defaultnya adalah vbDynasetType. Catatan : Pada Dynaset dan Snapshot, recordset disimpan pada memori lokal, jika aplikasi anda tidak menggambil data lebih dari satu tabel, ataupun sumber data non-ODBC, maka Recordset jenis Table merupakan pilihan yang baik dari segi kecepatan dan efisiensi pemakaian memori. Metoda-metoda pada Data Kontrol Sebagaimana objek-objek standar lainnya, objek Data kontrol menyediakan berbagai metoda yang dapat anda gunakan. Bergerak dalam RecordSetMetoda FungsiMoveFirst Memindahkan keaktifan pointer ke awal recordsetMoveLast Memindahkan keaktifan pointer ke akhir recordsetMovePrevious Memindahkan keaktifan pointer ke record sebelumnyaMoveNext Memindahkan keaktifan pointer ke record berikutnya Contoh : Data1.Recordset.MoveFirst Mencari suatu record tertentu Untuk RecordSet jenis Dynaset dan SnapShotMetoda FungsiFindFirst kriteria Mencari record pertama yang memenuhi kriteriaFindLast kriteria Mencari record terakhir yang memenuhi kriteriaFindNext kriteria Mencari record berikutnya yang memenuhi kriteriaFindPrevious Kriteria Mencari record sebelumnya yang memenuhi kriteria Contoh : Data1.Recordset.FindFirst "Email = hendra@indoprog.com" Untuk RecordSet jenis Table Indoprog 15
  16. 16. Pemrograman Database dengan DAO pada VB Hendra, S.T. Pada recordset jenis table anda dapat menggunakan metoda Seek, tetapi sebelumnya anda perlu menentukan index yang digunakan dengan properti index Data1.RecordSet.Index = NamaIndex Data1.RecordSet.Seek perbandingan, key1, key2, ...Perbandingan Keterangan"=" Sama dengan">=" Lebih besar atau sama">" Lebih besar"<=" Lebih kecil atau sama"<" Lebih kecil Contoh : Data1.Recordset.Index = "P_Key" Data1.Recordset.Seek "=","hendra@indoprog.com" Memeriksa hasil pencarian record Anda dapat menggunakan properti NoMatch untuk memeriksa hasil pencarian dengan metoda Find maupun metoda Seek. Contoh Data1.Recordset.FindFirst "Email = hendra@indoprog.com" If Data1.Recordset.NoMatch Then MsgBox "Peserta belum terdaftar !" Else MsgBox "Peserta telah terdaftar !" End If atau Data1.Recordset.Index = "P_Key" Data1.Recordset.Seek "=","hendra@indoprog.com" If Data1.Recordset.NoMatch Then MsgBox "Peserta belum terdaftar !" Else MsgBox "Peserta telah terdaftar !" End If Menandai posisi record Untuk menyimpan posisi record anda dapat menggunakan properti bookmark. Contoh : Indoprog 16
  17. 17. Pemrograman Database dengan DAO pada VB Hendra, S.T.Dim MyBookMark As VariantMyBookMark = Data1.RecordSet.BookmarkData1.RecordSet.MoveFirstData1.RecordSet.Bookmark = MyBookMarkMengambil nilai field dari record aktifJika suatu kontrol di bound pada data kontrol, maka kontrol tersebut akan menampilkannilai field dari record yang sedang aktif.Untuk mengambil nilai field dari record yang sedang aktif secara koding, anda dapatmenggunakan salah satu cara berikut : Data1.Recordset.Fields(0).Value Mengacu pada nilai pada field pertama n=0 Mengacu tidak langsung dengan suatu field number. Data1.Recordset.Fields(n) Mengacu pada nilai pada field pertama. Data1.Recordset.Fields("FName") Mengacu pada FName field. string$ = "FName" Mengacu tidak langsung dengan nama field. Data1.Recordset.Fields(string$) Mengacu pada FName field Data1.Recordset("FName") Mengacu kepada field sebagai collection default. Data1.Recordset(n) Mengacu kepada field sebagai collection default.Contoh :Debug.Print Data1.Recordset("Email")Mengubah nilai field dari record aktifJika suatu kontrol di bound pada data kontrol, maka perubahan nilai pada kontrol tersebutakan mempengaruhi isi field yang bersangkutan ketika posisi record pointer berpindah,maupun ketika dilakukan proses update dengan metoda UpdateRecord.Contoh :Private Sub cmdUpdate_Click()Data1.UpdateRecordEnd SubUntuk mengubah nilai field dari record yang sedang aktif secara koding, anda dapatmelakukan langkah sebagai berikut : 1. Posisikan current record ke record yang akan diedit. 2. Tentukan nilai baru kefield yang mau diubah 3. Gunakan method Update atau method Move, Find, atau Seek.Contoh :Data1.Recordset.EditData1.Recordset("Email") = "hendra@indoprog.com"...Data1.RecordSet.UpdateIndoprog 17
  18. 18. Pemrograman Database dengan DAO pada VB Hendra, S.T.Menambah record baru ke recordsetAnda dapat menggunakan prilaku properti EOFAction untuk secara otomatismenambahkan record baru ketika posisi record pointer berada di EOF, anda dapat segeramengetikkan data pada kontrol-kontrol yang dibound pada kontrol data tersebut, danmemindahkan keaktifan record pointer untuk proses update, ataupun menggunakanmetoda UpdateRecord.Secara koding anda dapat melakukan langkah berikut untuk menambahkan record baruke recordset : 1. Membuat suatu record baru dengan method AddNew. Current record pointer disimpan dan berpindah ke record baru. 2. Tentukan nilai baru untuk record baru. 3. Simpan record baru dengan method Update.Contoh :Data1.Recordset.AddNewData1.Recordset("Email") = "hendra@indoprog.com"...Data1.RecordSet.UpdateCatatan :Setelah update, posisi record pointer akan dikembalikan keposisi sebelum record barutersebut ditambah. Untuk membuat posisi record berada di record baru tersebut andadapat menggunakan bookmark yang diset ke lastmodified.Contoh :Data1.Recordset.AddNewData1.Recordset("Email") = "hendra@indoprog.com"...Data1.RecordSet.UpdateData1.RecordSet.Bookmark = Data1.Recordset.LastModifiedMenghapus record yang sedang aktifUntuk menghapus seluruh record, posisikan ke record yang akan dihapus, dan gunakanmethod Delete. Sesaat setelah record tersebut dihapus, maka record tersebut menjadiinvalid, sehingga anda harus menggunakan MoveNext untuk memindahkan posisi setelahsetiap penghapusan.Contoh :Data1.Recordset.DeleteData1.Recordset.MoveNextIndoprog 18
  19. 19. Pemrograman Database dengan DAO pada VB Hendra, S.T.If Data1.Recordset.Eof Then Data1.Recordset.MoveLastEnd IfMelakukan refresh data pada RecordsetAnda dapat menggunakan metoda Refresh untuk menutup dan membentuk ulang isiRecordset.Contoh :Data1.RefreshMenutup suatu RecordsetMethod Close menutup recordset dan membebaskan resource yang dialokasikan padanya.Usaha untuk melakukan suatu metode atau akses pada element dari recordset yang telahterhapus akan menghasilkan kesalahan.Contoh :Data1.Recordset.CloseDatabase dan recordset akan secara otomatis tertutup ketika : 1. Anda menggunakan method Close terhadap recordset tertentu. 2. Form yang mengandung data control di unload 3. Program menjalankan statement End.Event Pada Data KontrolEvent ErrorEvent Error akan dibangkitkan ketika terjadi kesalahan pada data kontrol yang bukandisebabkan oleh koding yang menggunakan perintah Visual Basic.Private Sub Data1_Error(DataErr As Integer, Response As Integer)End SubAnda dapat mendapatkan nomor kesalahan dengan mengevaluasi nilai DataErr, danmenentukan Response terhadap kesalahan tersebut (vbDataErrContinue,vbDataErrDisplay) apakah diabaikan atau ditampilkan.Contoh :Indoprog 19
  20. 20. Pemrograman Database dengan DAO pada VB Hendra, S.T.Private Sub Data1_Error(DataErr As Integer, Response As Integer)Select case DataErr Case 3163 MsgBox "Panjang data melebihi ukuran field" Response = vbDataErrContinue Case Else Response = vbDataErrDisplayEnd SelectEnd SubEvent RepositionEvent ini terjadi ketika suatu record menjadi Current position.Private Sub Data1_Reposition()End SubContoh berikut akan mengunci semua textbox dari perubahan ketika terjadi eventreposition.Private Sub Data1_Reposition()txtForumID.Locked = TruetxtKeterangan.Locked = TruetxtAlamat.Locked = TrueEnd SubEvent ValidateEvent ini terjadi sebelum perubahan dilakukan terhadap yang sedang aktif seperti metodaupdate, delete ataupun close.Private Sub Data1_Validate(Action As Integer, Save As Integer)End SubAnda dapat melakukan evaluasi terhadap Action untuk mendapatkan aksi yangmembangkitkan event Validate tersebut, misalnya vbDataActionAddNew,vbDataActionBookmark, vbDataActionCancel, dll.Indoprog 20
  21. 21. Pemrograman Database dengan DAO pada VB Hendra, S.T. Latihan 3 Judul : Menggunakan Data Kontrol untuk pengolahan data 1. Tanamkan kontrol-kontrol pada Form anda sehingga membentuk tampilan berikut :Kontrol Properti Nilai Name frmForumIDForm1 Caption Pengolahan Data Forum Diskusi IndoprogLabel1 Caption ForumIDLabel2 Caption KeteranganLabel3 Caption Alamat Forum Name RsForum DatabaseName C:Modul9Indoprog.mdbData1 RecordSource Forum BOFAction MoveFirst EOFAction MoveLast Name txtForumIDText1 DataSource RsForum DataField ForumID Name txtKeteranganText2 DataSource RsForum DataField Keterangan Name txtAlamatText3 DataSource RsForum DataField Alamat Name cmdAddCommand1 Caption &Add Name cmdEditCommand2 Caption &Edit Name cmdDeleteCommand3 Caption &Delete Name cmdUpdateCommand4 Caption &Update Name cmdCancelCommand5 Caption &Cancel Name cmdFirstCommand6 Caption &First Indoprog 21
  22. 22. Pemrograman Database dengan DAO pada VB Hendra, S.T. Name cmdPrevCommand7 Caption &Previous Name cmdNextCommand8 Caption &Next Name cmdLastCommand9 Caption &Last 2. Lakukan koding pada bagian General Declaration : Deklarasi Enumerated type untuk aksi oleh pemakai Private Enum Aksi flNone = 0 flAdd = 1 Tambah data flEdit = 2 Perbaiki data End Enum Deklarasi Variabel Flag adalah Aksi Dim Flag As Aksi Private Sub Kunci(x) txtForumID.Locked = x Kunci textbox dari txtKeterangan.Locked = x perubahan oleh pemakai txtAlamat.Locked = x End Sub Private Sub AturTombol(Add, Edit, Delete, Update, Cancel) cmdAdd.Enabled = Add Atur keaktifan cmdEdit.Enabled = Edit tombol cmdDelete.Enabled = Delete cmdUpdate.Enabled = Update cmdCancel.Enabled = Cancel End Sub 3. Lakukan koding untuk menangani Event pada Data kontrol Private Sub RsForum_Error(DataErr As Integer, Response As Integer) Select Case DataErr Case 3163 MsgBox "Panjang data melebihi ukuran field" Response = vbDataErrContinue Case Else Response = vbDataErrDisplay End Select End Sub Private Sub RsForum_Reposition() If Flag = flNone Then If RsForum.Recordset.EOF Then Jika tabel kosong Call AturTombol(True, False, False, False, False) cmdFirst.Enabled = False cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False Else Call AturTombol(True, True, True, False, False) cmdFirst.Enabled = True cmdPrev.Enabled = True cmdNext.Enabled = True Indoprog 22
  23. 23. Pemrograman Database dengan DAO pada VB Hendra, S.T. cmdLast.Enabled = True End If Call Kunci(True)End IfEnd SubPrivate Sub RsForum_Validate(Action As Integer, Save As Integer)Select Case Action Case vbDataActionAddNew Case vbDataActionMoveFirst Flag = flNone Case vbDataActionMovePrevious Flag = flNone Case vbDataActionMoveNext Flag = flNone Case vbDataActionMoveLast Flag = flNoneEnd SelectEnd Sub3. Lakukan koding untuk masing-masing tombolPrivate Sub cmdAdd_Click()Flag = flAdd Tandai sebagai tambah dataRsForum.Recordset.AddNewCall Kunci(False) Buka penguncianCall AturTombol(False, False, False, True, True)txtForumID.SetFocusEnd SubPrivate Sub cmdEdit_Click()Flag = flEditRsForum.Recordset.EditCall Kunci(False)Call AturTombol(False, False, False, True, True)End SubPrivate Sub cmdDelete_Click()On Error GoTo ErrCmdDelete_Click Error handle kalau tabel telahkosongRsForum.Recordset.Delete Hapus data, dan record menjadiinvalidRsForum.Recordset.MoveNext Pindah kerecord berikutnyaIf RsForum.Recordset.EOF Then Jika EOF RsForum.Recordset.MoveLast Pindah kerecord terakhirEnd IfExit SubErrCmdDelete_Click:Select Case Err.Number Case 3021 MsgBox "Data telah kosong", vbOKOnly + vbInformation, "Warning"End SelectEnd SubPrivate Sub cmdUpdate_Click()On Error GoTo ErrUpdate_clickIf txtForumID.Text = "" Then MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIndoprog 23
  24. 24. Pemrograman Database dengan DAO pada VB Hendra, S.T.If txtKeterangan.Text = "" Then MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIf txtAlamat.Text = "" Then MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfRsForum.Recordset.UpdateFlag = flNoneCall Kunci(True)Call AturTombol(True, True, True, False, False)RsForum.Recordset.Bookmark = RsForum.Recordset.LastModifiedExit SubErrUpdate_click:Select Case Err.Number Case 3022 MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly +vbInformation, "Warning" Case Else MsgBox Err.Number & vbCrLf & Err.DescriptionEnd SelectEnd SubPrivate Sub cmdCancel_Click()RsForum.Recordset.CancelUpdateCall Kunci(True)Flag = flNoneCall AturTombol(True, True, True, False, False)End SubPrivate Sub cmdFirst_Click()RsForum.Recordset.MoveFirstEnd SubPrivate Sub cmdPrev_Click()RsForum.Recordset.MovePreviousIf RsForum.Recordset.BOF Then RsForum.Recordset.MoveFirstEnd IfEnd SubPrivate Sub cmdNext_Click()RsForum.Recordset.MoveNextIf RsForum.Recordset.EOF Then RsForum.Recordset.MoveLastEnd IfEnd SubPrivate Sub cmdLast_Click()RsForum.Recordset.MoveLastEnd SubIndoprog 24
  25. 25. Pemrograman Database dengan DAO pada VB Hendra, S.T.Pengaturan MultiUser pada Data KontrolSuatu program MultiUser sangat tergantung pada bagaimana file database sebagaisumber daya yang digunakan dapat dibuka oleh lebih dari satu pemakai pada saat yangbersamaan.Pengaturan modus pembukaan file database pada Data kontrol dapat dilakukan denganmenentukan nilai dari properti Exclusive menjadi True (Single User) atau False (MultiUser).Sesuatu hal yang perlu diperhatikan dalam pengaktifan file Database secara Share(Exclusive False) adalah mekanisme penguncian ketika data di Edit. Mekanismepenguncian pada Data kontrol dapat menggunakan dua jenis strategi, yaitu : 1. Optimistik Locks, penguncian dilakukan sesaat pada saat metoda .Update 2. Pesimistik Locks, penguncian dilakukan sesaat setelah pemakaian metoda .EditPemakaian strategi penguncian ini dapat ditentukan pada Properti LockEdits denganmengubah nilainya menjadi True (Pesimistik Locks) atau False (Optimistik Locks).Contoh :Private Sub Form_Load()RsForum.RefreshRsForum.Recordset.LockEdits = True Menggunakan Strategi PesimistikLocksEnd SubCatatan :Penguncian dilakukan oleh Visual Basic secara per Page (Halaman) dimana terdiri dari 2Kilobyte Page dimana record tersebut berada. Pada saat suatu Page sedang dikunci, makaIndoprog 25
  26. 26. Pemrograman Database dengan DAO pada VB Hendra, S.T.usaha penguncian oleh pemakai lain terhadap data lain yang berada pada Page yang samaakan gagal.Perhatikan kembali potongan program berikut yang diambil dari Latihan 3 Modul 9,dimana mekanisme masing-masing Locks dapat dijelaskan sebagai berikut :Private Sub cmdEdit_Click()Flag = flEditRsForum.Recordset.Edit Penguncian terjadi disini pada Pesimistik LocksCall Kunci(False)Call AturTombol(False, False, False, True, True)End SubPrivate Sub cmdUpdate_Click()On Error GoTo ErrUpdate_clickIf txtForumID.Text = "" Then MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIf txtKeterangan.Text = "" Then MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIf txtAlamat.Text = "" Then MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfRsForum.Recordset.Update Penguncian terjadi disini pada Optimistik LocksFlag = flNoneCall Kunci(True)Call AturTombol(True, True, True, False, False)RsForum.Recordset.Bookmark = RsForum.Recordset.LastModifiedExit SubErrUpdate_click:Select Case Err.Number Case 3022 MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly + vbInformation,"Warning" Case Else MsgBox Err.Number & vbCrLf & Err.DescriptionEnd SelectEnd SubIndoprog 26
  27. 27. Pemrograman Database dengan DAO pada VB Hendra, S.T.Pada Pesimistik Locks, penguncian dilakukan sesaat setelah metoda Edit, dan pengunciandibuka kembali sampai metoda Update maupun Cancel Update, sedangkan OptimistikLocks, penguncian dilakukan sesaat metoda Update dilakukan.Masalah pada Pesimistik LocksMasalah pada Pesimistik Locks adalah kegagalan penguncian karena Page sedangdikunci oleh pemakai lain, sehingga permintaan Locks pada saat Edit (Pesimistik)maupun Delete gagal dilakukan.Anda dapat menggunakan Error Handling untuk menangani kegagalan ini denganmengevaluasi nilai Err yang dihasilkan, dalam hal ini adalah 3260.Contoh :Private Sub cmdEdit_Click()On Error GoTo ErrcmdEdit_ClickFlag = flEditRsForum.Recordset.Edit Sumber Error pada Pesimistik LocksCall Kunci(False)Call AturTombol(False, False, False, True, True)CancelcmdEdit:Exit SubErrcmdEdit_Click:Select Case Err Data telah dihapus pemakai lain Case 3167 MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _ "Lakukan refresh data anda !", vbOKOnly + vbInformation Data Page (2 kb) telah dikunci oleh pemakai lain Case 3260 nHitung = nHitung + 1 Memungkinkan pemakai membuat keputusan ulangi Penguncian atau batal, maksimum 2 kali If nHitung > 2 Then nPilih = MsgBox("Ulangi penguncian ?", vbYesNo + _ vbQuestion) If nPilih = vbYes Then nHitung = 1 Else Resume CancelcmdEdit End If End If DoEvents menjalankan event windows menunda sejumlah waktu random nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000) For i = 1 To nTunda: Next i Resume Case Else MsgBox "Error " & Err & ":" & Error, vbOKOnly Resume CancelcmdEditIndoprog 27
  28. 28. Pemrograman Database dengan DAO pada VB Hendra, S.T.End SelectEnd SubPrivate Sub cmdDelete_Click()On Error GoTo ErrCmdDelete_ClickRsForum.Recordset.Delete Sumber Error pada PesimistikLocksRsForum.Recordset.MoveNextIf RsForum.Recordset.EOF Then RsForum.Recordset.MoveLast Sumber Error kalau data telahhabisEnd IfCancelcmdDelete:Exit SubErrCmdDelete_Click:Select Case Err.Number Data telah kosong Case 3021 MsgBox "Data telah kosong", vbOKOnly + vbInformation,"Warning" Data Page (2 kb) telah dikunci oleh pemakai lain Case 3260 MsgBox "Data dikunci user lain, hapus tidak dapat dilakukan!", vbOKOnly + vbInformation Resume CancelcmdDelete Case Else MsgBox "Error" & Err.Number & vbCrLf & Err.DescriptionEnd SelectEnd SubMasalah pada Optimistik LocksMasalah pada Optimistik Locks adalah kegagalan penguncian karena Page sedangdikunci oleh pemakai lain, sehingga permintaan Locks pada saat Update (Optimistik)gagal dilakukan, ataupun data telah diubah oleh pemakai lain sejak metoda Edit, karenapada Optimistik Locks, tetap terbuka pemakai lain melakukan Edit terhadap data yangsama.Anda dapat menggunakan Error Handling untuk menangani kegagalan ini denganmengevaluasi nilai Err yang dihasilkan, dalam hal ini adalah 3260 (kegagalanpenguncian) dan 3197 (data telah berubah sejak metoda edit). Untuk merefresh data yangtelah berubah, anda dapat menggunakan metoda Move 0.Contoh :Private Sub cmdUpdate_Click()On Error GoTo ErrcmdUpdate_clickIf txtForumID.Text = "" Then MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIndoprog 28
  29. 29. Pemrograman Database dengan DAO pada VB Hendra, S.T.If txtKeterangan.Text = "" Then MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIf txtAlamat.Text = "" Then MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfRsForum.Recordset.Update Sumber Error Pada OptimistikLocksFlag = flNoneCall Kunci(True)Call AturTombol(True, True, True, False, False)RsForum.Recordset.Bookmark = RsForum.Recordset.LastModifiedCancelcmdUpdate:Exit SubErrcmdUpdate_click:Select Case Err.Number Terjadi duplikasi pada Primary Key Case 3022 MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly +vbInformation, "Warning" Data telah dihapus pemakai lain Case 3167 MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _ "Lakukan refresh data anda !", vbOKOnly + vbInformation Data telah berubah sejak metoda Edit Case 3197 Data pada recordset telah berubah sejak ditampilkan. MsgBox "Data telah diubah oleh pemakai lain !", vbOKOnly +vbInformation Hal ini secara otomatis akan menyegarkan kembali recordset untuk menampilkan data terakhir RsForum.Recordset.Move 0 Resume CancelcmdUpdate Data Page (2 kb) telah dikunci oleh pemakai lain Case 3260 Record dikunci pemakai lain nHitung = nHitung + 1 Mencoba mengunci dua kali Memungkinkan pemakai membuat keputusan ulangi, batal If nHitung > 2 Then nPilih = MsgBox("Data sedang dikunci pemakai lain" & vbCrLf& _ "Ulangi penguncian ?", vbYesNo + _ vbQuestion) If nPilih = vbYes Then nHitung = 1 Else Resume CancelcmdUpdate End If End If DoEvents menjalankan event windows menunda sejumlah waktu random nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000) For i = 1 To nTunda: Next iIndoprog 29
  30. 30. Pemrograman Database dengan DAO pada VB Hendra, S.T. Resume Case Else MsgBox "Error " & Err & ":" & Error, vbOKOnly Resume CancelcmdUpdateEnd SelectEnd SubRecordset pada lingkungan MultiUserTableSuatu Recordset jenis Tabel mengambil data dari suatu tabel, anda dapat melakukantambah, perbaiki maupun hapus data dari tabel, Hanya record yang aktif yang dimuat kememori. Sehingga perubahan, penambahan dan penghapusan data oleh pemakai laindapat langsung diakses.DynasetRecordset jenis Dynaset adalah himpunan dari record-record secara dinamis yang dapatmengandung field-field dari satu atau lebih tabel maupun query yang dapat di update.Ketika user mengupdate data, maka tabel yang berkaitan akan berubah. Pada lingkunganMultiUser, perubahan data tersebut dapat langsung diakses, tetapi jika seorang usermelakukan penambahan data, data tersebut tidak akan kelihatan sama user lain, sampaipemakaian metoda Requery (pada Data Kontrol digunakan Refresh). Jika seorang usermenghapus suatu record, user lain akan diberitahu ketika akan mengakses recordtersebut.Contoh :Private Sub cmdRefresh_Click()RsForum.RefreshEnd SubIndoprog 30
  31. 31. Pemrograman Database dengan DAO pada VB Hendra, S.T.Latihan 4Judul : Pengaturan Program MultiUser dengan Pesimistik Locks1. Aktifkan kembali Program Latihan 32. Ubah Recordset Type pada Data Kontrol RsForum menjadi Table3. Lakukan koding pada Event Form_Load, sebagai berikut :Private Sub Form_Load()RsForum.RefreshRsForum.Recordset.LockEdits = True Pesimistik LocksEnd Sub4. Lakukan perbaikan pada Event cmdEdit_Click, sebagai berikut :Private Sub cmdEdit_Click()On Error GoTo ErrcmdEdit_ClickFlag = flEditRsForum.Recordset.EditCall Kunci(False)Call AturTombol(False, False, False, True, True)CancelcmdEdit:Exit SubErrcmdEdit_Click:Select Case Err Data telah dihapus pemakai lain Case 3167 MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _ "Lakukan refresh data anda !", vbOKOnly + vbInformation Data Page (2 kb) telah dikunci oleh pemakai lain Case 3260 nHitung = nHitung + 1 Memungkinkan pemakai membuat keputusan ulangi Penguncian atau batal, maksimum 2 kali If nHitung > 2 Then nPilih = MsgBox("Ulangi penguncian ?", vbYesNo + _ vbQuestion) If nPilih = vbYes Then nHitung = 1 Else Resume CancelcmdEdit End If End If DoEvents menjalankan event windows menunda sejumlah waktu random nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000) For i = 1 To nTunda: Next iIndoprog 31
  32. 32. Pemrograman Database dengan DAO pada VB Hendra, S.T. Resume Case Else MsgBox "Error " & Err & ":" & Error, vbOKOnly Resume CancelcmdEditEnd SelectEnd Sub4. Lakukan perbaikan pada Event cmdDelete_Click, sebagai berikut :Private Sub cmdDelete_Click()On Error GoTo ErrCmdDelete_ClickRsForum.Recordset.DeleteRsForum.Recordset.MoveNextIf RsForum.Recordset.EOF Then RsForum.Recordset.MoveLastEnd IfCancelcmdDelete:Exit SubErrCmdDelete_Click:Select Case Err.Number Data telah kosong Case 3021 MsgBox "Data telah kosong", vbOKOnly + vbInformation,"Warning" Data Page (2 kb) telah dikunci oleh pemakai lain Case 3260 MsgBox "Data dikunci user lain, hapus tidak dapat dilakukan!", vbOKOnly + vbInformation Resume CancelcmdDelete Case Else MsgBox "Error" & Err.Number & vbCrLf & Err.DescriptionEnd SelectEnd Sub5. Simpan Project Anda, dan pada menu file pilih Make Project1.Exe, lakukanpenyimpanan ke folder dimana Indoprog.mdb berada.6. Jalankan Project1.exe (Pemakai 1)7. Jalankan Project1.exe untuk kedua (Pemakai 2) kali tanpa menutup yang sebelumnya.8. Lakukan berbagai aktifitas seperti tambah data, perbaiki data pada record yang sama,hapus data, dll. Perhatikan prilaku pada program anda pada lingkungan MultiUser.Indoprog 32
  33. 33. Pemrograman Database dengan DAO pada VB Hendra, S.T.Latihan 5Judul : Pengaturan Program MultiUser dengan Optimistik Locks1. Aktifkan kembali project sebelumnya dan lakukan perubahan pada koding EventForm_Load, sebagai berikut :Private Sub Form_Load()RsForum.RefreshRsForum.Recordset.LockEdits = True Pesimistik LocksEnd Sub2. Lakukan perbaikan koding untuk Event cmdUpdate_Click menjadi sebagai berikut :Private Sub cmdUpdate_Click()On Error GoTo ErrcmdUpdate_clickIf txtForumID.Text = "" Then MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIf txtKeterangan.Text = "" Then MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfIf txtAlamat.Text = "" Then MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning" Exit SubEnd IfRsForum.Recordset.UpdateFlag = flNoneCall Kunci(True)Call AturTombol(True, True, True, False, False)RsForum.Recordset.Bookmark = RsForum.Recordset.LastModifiedCancelcmdUpdate:Exit SubErrcmdUpdate_click:Select Case Err.Number Case 3022 MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly +vbInformation, "Warning" Case 3167 MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _ "Lakukan refresh data anda !", vbOKOnly + vbInformation Case 3197 Data pada recordset telah berubah sejak ditampilkan. MsgBox "Data telah diubah oleh pemakai lain !", vbOKOnly +vbInformation Hal ini secara otomatis akan menyegarkan kembali recordset untuk menampilkan data terakhir RsForum.Recordset.Move 0Indoprog 33
  34. 34. Pemrograman Database dengan DAO pada VB Hendra, S.T. Resume CancelcmdUpdate Case 3260 Record dikunci pemakai lain nHitung = nHitung + 1 Mencoba mengunci dua kali Memungkinkan pemakai membuat keputusan ulangi, batal If nHitung > 2 Then nPilih = MsgBox("Data sedang dikunci pemakai lain" & vbCrLf& _ "Ulangi penguncian ?", vbYesNo + _ vbQuestion) If nPilih = vbYes Then nHitung = 1 Else Resume CancelcmdUpdate End If End If DoEvents menjalankan event windows menunda sejumlah waktu random nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000) For i = 1 To nTunda: Next i Resume Case Else MsgBox "Error " & Err & ":" & Error, vbOKOnly Resume CancelcmdUpdateEnd SelectEnd Sub3. Lakukan percobaan yang sama seperti Latihan 4Latihan 6Judul : Mencoba Dynaset di lingkungan MultiUserLakukan percobaan RecordsetType Dynaset untuk program Latihan 1 dan 2 dantambahkan tombol untuk refresh Recordset.Private Sub cmdRefresh_Click()RsForum.RefreshEnd SubIndoprog 34

×