[Www.indowebster.com]-Microsoft Visual Basic 6 Dengan Database

download [Www.indowebster.com]-Microsoft Visual Basic 6 Dengan Database

of 40

Transcript of [Www.indowebster.com]-Microsoft Visual Basic 6 Dengan Database

PENDIDIKAN JARINGAN KOMPUTER DAN SISTEM INFORMASI

Copyright PIKSI-ITS 2002

Ruang C.203 Jurusan Teknik Elektro ITS Keputih Sukolilo - Surabaya Telp: (031)5929871 Fax: (031)5929870 : [email protected]

Sistem Database i

Hak CiptaBuku dan Logo dari PIKSI ITS ini adalah merupakan hak cipta dari PIKSI-ITS. Dilarang memperbanyak, memfotocopy sebagian atau seluruh isi dari buku dan logo tanpa seijin dari pihak PIKSI-ITS

DisclaimerBook and Logo PIKSI-ITS are copyright of PIKSI-ITS No part of this book, including interior design , cover and logo maybe reproduce without any permission from PIKSI-ITS

Sistem Database ii

Kata PengantarJenis pendidikan satu tahun sekarang ini sudah mulai banyak jumlahnya. Salah satunya adalah Pendidikan Jaringan Komputer dan Sistem Informasi ITS atau disingkat PIKSI ITS. PIKSI pertama mengkhususkan diri pada bidang Jaringan Komputer dan Basis Data. Kemudian menyesuaikan diri dengan perkembangan dan minat masyarakat, dibuka kelas baru Aplikasi Perkantoran. Salah satu bidang yang diajarkan PIKSI sekarang ini adalah Sistem Database. Diharapkan bahwa buku ini akan menunjuang bagi mereka yang berminat mendalami bidang ini, juga sebagai pembantu dalam perkuliahan PIKSI-ITS. Saran dan kritik anda tentang buku atau kualitas pengajaran dapat anda kirimkan ke email : [email protected].

Ketua PIKSI-ITS

I Ketut Edi Purnama, MT

Sistem Database iii

Daftar IsiKata Pengantar.......ii Daftar Isi...iii Universal Data Access1-1 I.1. Sekilas tentang Universal Data Access .......................................................... 1-2 I.2. Membandingkan ADO dengan metode Data Access lain .............................. 1-3 Pengenalan Object Model ADO 2-1 II.1 Membuat Object ADO ................................................................................... 2-2 II.2 ADO Connection Object ................................................................................ 2-3 II.3 ADO Command Object.................................................................................. 2-4 II.4 ADO Recordset Object................................................................................... 2-4 II.4.1 Setting CursorType Property................................................................... 2-4 Mengatur Koneksi ke Data Source 3-1 III.1 Definisi ADO Connection Object................................................................. 3-2 III.2 Membangun Koneksi .................................................................................... 3-2 III.2.1 Melakukan Update dengan Connection Object .................................... 3-3 III.2.2 Disconnecting dari Data Source............................................................. 3-4 III.3 Latihan: Membuat Koneksi........................................................................... 3-4 III.4 Menggunakan ADO Command Object......................................................... 3-5 Menerima Record dari Data Source4-1 IV.1 Menggunakan ADO Recordset Object ......................................................... 4-2 IV.1.1 Menggunakan Explicit Connection Object............................................ 4-2 IV.1.2 Menggunakan Implicit Connection Object............................................ 4-3 IV.1.3 Locking the Recordset ........................................................................... 4-4 IV.2 Mengakses Record dalam Recordset ............................................................ 4-4 IV.3 Binding Control ke ADO Recordset............................................................. 4-5 IV.4 Membuat Multiple Recordset ....................................................................... 4-6 Navigating Records 5-1 V.1 ADO Navigation Properties ........................................................................... 5-2 V.2 ADO Navigation Methods ............................................................................. 5-2 V.3 Latihan : Navigating an ADO Recordset ....................................................... 5-2 Memodifikasi Record. 6-1 VI.1 Memodifikasi dengan Perintah SQL ............................................................ 6-2 VI.2 Memodifikasi Record dalam Recordset........................................................ 6-2 VI.2.1 Menambah Rekord................................................................................. 6-2 VI.2.2 Menghapus Record ................................................................................ 6-3 VI.2.3 Modifikasi Record ................................................................................. 6-3 VI.2.4 Membatalkan Perubahan atau Penambahan Rekord.............................. 6-3

Sistem Database iv

Sistem Database v

Sistem Database Universal Data Access 1 - 1

BAB

1Universal Data Access Tujuan :Pada Bab Ini diharapkan mahasiswa dapat : Mendeskripsikan tujuan dari strategy universal data access strategy Mengidentifikasikan component dari OLE DB. Mendefinisikan tiga bagian umum data access method. Mendeskripsikan relationship antara OLE DB dan ADO.

Sistem Database Universal Data Access 1 - 2

I.1. Sekilas tentang Universal Data AccessUniversal Data Access (UDA) adalah starategi Microsoft strategy untuk menyediakan akses ke semua type daari informasi, dari berbagai macam source disampint relational database sederhana. Data source ini termasuk mainframe ISAM/VSAM, hierarchical databases, e-mail, file systems, text, dan graphical data. OLE DB mendasari interface yang mampu UDA. Microsoft ActiveX Data Objects (ADO) dikembangkan untuk OLE DB. ADO menggantikan database programming interfaces debelumnya, seperti DAO dan RDO. Karena ADO dibangun pada puncak dari OLE DB, ADO menguntungkan dari UDA infrastructure. Modern data-intensive application membutuhkan penggabungan dari informasi tidak hanya dalam mengatur system database tradisional tapi juga file systems, spreadsheets, e-mail, dan banyak lagi. Kekuatan dari strategy Microsoft UDA adalah strategy is that it is delivered through a common set of object-oriented interfaces. These interfaces aere based on the Microsoft Component Object Model (COM). OLE DB, yang mana berdasar pada COM, digunakan untuk menyediakan akses ke data melewati organisasi seperti ilustrasi dalam gambar 1.1.

Gambar 1.1 The universal data access architecture OLE DB adalah terbuka didesain terperinci untuk membangun pada Open Database Connectivity (ODBC) application programming interface (API). Ini merupakan standart untuk mengakses semua type dari data. Dimana ODBC dibuat untuk

Sistem Database Universal Data Access 1 - 3 mengakses relational databases, OLE DB didesain untuk relational dan non-relational information source. OLE DB termasuk langsung mendukung ODBC untuk kemampuan kedepan untuk broad range dari ODBC driver relational database tersedia hari ini. Component OLE DB terdiri dari data providers, data consumers, dan service components, seperti diilustrasikan dalam gambar 1.2.

Gambar 1.2 OLE DB components

I.2. Membandingkan ADO dengan metode Data Access lainMeskipun aplikasi dapat menggunakan Data Access Objects (DAO) dan Remote Data Objects (RDO) dalam Visual Basic 6.0, ADO adalah data-access method Microsoft menganjurkan untuk suatu aplikasi database. Semua dari data access methods ini adalah COM interfaces dan dapat digunakan dari berbagai macam tools, termasuk Microsoft Visual Basic, Microsoft Access, dan Microsoft Office. Yang mana, berbedaannya adalah:

Sistem Database Universal Data Access 1 - 4

ADO adalah object model untuk mengakses semua type data melalui OLE DB. Seperti Visual Basic, Java, C++, VBScript, dan JScript dapat menggunakan ADO yang mana dapat mengakses data dari OLE DB source apa saja. Kamu dapat menggunakan ADO untuk mengakses relational data denga baik seperti e-mail atau data yang berada pada dalam spreadsheet.

RDO adalah object model untuk mengakses relational data melalui ODBC. RDO didesain untuk memberikan perkembangan Visual Basic untuk mengakses ODBC data tanpa melakukan pengkodean ke ODBC API melalui COM interface ke ODBC API dan menyediakan funsi dari ODBC dalam programmable object model. RDO didesain untuk mengambil keuntungan dari database server yang menggunakan sophisticated query engines, seperti SQL Server dan Oracle.

DAO adalah object model untuk mengakses local atau SQL data melalui Jet. DAO paling tua dari tiga data access methods. Dengan DAO, kamu dapat mengakses data dalam Microsoft Jet databases, Microsoft Jet-connected ODBC databases, and installable indexed sequential access method (ISAM) data sources, sepeerti FoxPro, Paradox, atau Lotus 1-2-3. Bandingkan ke teknologi ADO terbaru dan RDO, DAO adalah terlambat, kurang mampu data access alternative. DAO, sepeti teman, Microsoft Jet database engine, semula didesain untuk mendukung ISAM data access.

Setelah melihat setiap metode mengakses data, kamu mungkin ingin tagu mengapa kamu membutuhkan ADO jika kamu telah menggunakan RDO/DAO. Disini dasar jawaban untuk menjawaba pertanyaan tersebut :

ADO dapar mengakses semua type data, mengingat RDO dan DAO mengakses hanya relational data. ADO object model tidak sekomplek seperti RDO atau DAO dan oleh karena itu mudah menggunakan, dengan sedikit pengkodean. ADO merupakan penggabungan dari keistemewaan RDO dan DAO dan akan menggantikan RDO dan DAO. ADO adalah standart data access object model melalui Microsoft tools, termasuk Visual Basic, Access, Office, dan Microsoft Internet Information Server.

Sistem Database Pengenalan Object Model ADO 2 - 1

BAB

2Pengenalan Object Model ADO Tujuan :Pada Bab Ini diharapkan mahasiswa dapat : Mengenali Organisasi dari ADO object model. Mendeskripsikan role dari ADO Connection object. Mendeskripsikan role dari ADO Command object. Mendeskripsikan role dari ADO Recordset object.

Sistem Database Pengenalan Object Model ADO 2 - 2

II.1 Membuat Object ADOADO object model menyediakan kemudahan untuk me-set object, properties, dan metode untuk membuat aplikasi yang mengakses dan memanipulasi data. Meskipun ADO objects mampu keluaar dari scope hierarchy, objects yang ada dalam hierarchical relationships, seperti ditunjukkan dalam gambar 2.1. Contahnya, tidak seperti dengan interface pemrograman database sebelumnya, kamu tidak harus membuat Connection object sebelum mengakses Recordset object. Dengan ADO, kamu dapat langsung membuat Recordset object, yang mana automatis membuat termasuk koneksinya. Konsep ini biasanya disebut "flat" object model.

Gambar 2.1 The ADO Object Model ADO object model mempunyai tujuh objects:

Connection object Memelihara informasi koneksi dengan data provider.

Command object Memelihara informasi tentang command, seperti stored procedure dalam SQL Server database. Kamu dapat menjalankan command string pada Connecton object atau query string seperti sewaktu membuka Recordset object, tanpa mendefinisikan Command object. Command object berguna dimana kamu membutuhkan untuk mendefinikan query parameter atau menjalankan stored procedure yang mengembalikan hasil suatu parameter.

Recordset object Berisi rekord dari query. Kamu dapat membuka rekordset tanpa secara eksplisit (jelas) membuka Connection object. Yang mana, jika pertama kamu dengan jelas membuat Connection object, kamu dapat membuka multiple

Sistem Database Pengenalan Object Model ADO 2 - 3 Recordset objects pada koneksi yang sama. Ini mengurangi aplikasi dan mengurangi beban server.

Field object Contains information about a single column of data within a recordset. The Recordset object supports the Fields collection.

Parameter object Single parameter untuk parameter perintah. Command object mendukung Kumpulan parameter.

Error object Berisi penyampaian informasi error tentang kondisi yang berlansung oleh provider. Sejak adanya pernyataan tunggal dapat menghasilkan dua atau lebih error, Errors collection dapat berisi lebih dari satu Error object.

Property object Berisi kaarakteristik pendefinisian provider dari ADO object. Property object digunakan ketika data provider membutuhkan untuk mendukung informasi specifik tentang data source yang tidak didukung oleh that ADO. Property object membuat ADO extensible.

Setiap keistemewaan ADO object dari properties dan methods yang membolehkan kamu untuk memanipulasi object. Ketika kamu bekerja dengan pemrograman ADO, kamu seperlunya menggunakan tiga ADO objects: Connection, Command, and Recordset objects. Catatan

Sebelum kamu menggunakan ADO dalam aplikasi Visual Basic, kamu harus set reference ke Microsoft ActiveX Data Objects 2.0 Library atau versi yang lebih tinggi.

II.2 ADO Connection ObjectContoh, sebelum membangun koneksi, dalam aplikasi dapat membuat koeksi string yang termasuk user's logon name dan password. Koneksi juga membolehkan kamu untuk konfigurasi property CommandTimeout. Property ini menentukan berapa lama seharusnya ADO menunggu ketika membangun koneksi sebelum menghentikan ussaha membangun koneksi dan akan menghasilkan error bila gagal mengadakan koneksi.

Sistem Database Pengenalan Object Model ADO 2 - 4

II.3 ADO Command ObjectCommand objects didefinisikan menentukan secaara detail informasi tentang data yang diterima daari database. Command objects dapat berdasarkan object database yang lain (seperti tabel, view, atau stored prosedure) atau Structured Query Language (SQL) query. Command object membuka koneksi baru atau menggunakan koneksi yang ada, tergangung pada apa yang kamu tentukan dalan property ActiveConnection. Jika kamu set property ActiveConnection dengan refensi untuk Connection object yang ada. Jika kamu menentukan property ActiveConnection dengan connection string, berart koneksi baru dibangun untuk Command object. Yang mana, sejak lebih daari satu Command object dapat menggunakan Connection object yang sama, ini berari yang at effisient.

II.4 ADO Recordset ObjectRecordset object mewakili seluruh rekord dari tabel atau executed command. Kamu gunkan Recordset objects untuk manipulasi data daari provider. Semua Recordset objects dibangunan menggunakan records (baris) dan field (kolom). Ketika kamu gunkan data dalam recordset object, kamu bekerjaja dengan database cursor. Cursor aalah database object digunkan aplikasi untuk memanipulasi data secara individu rekord yang ada. Misalkan, ketika kamu membuat rekordset, hanya satu rekord yang aktif. Kamu dapat merubah atau menghapus rekord yang aktif itu tanpa mempengaruhi rekord yang lain.

II.4.1 Setting CursorType PropertyProperty CursorType menentukan bagaimana kamu dapat menggunakan rekord dalam rekordset. Kamu dapat menyeting lebih dahulu property CursorType sebelum membuka recordset. Jika kamu tidak menetukan property sebelum kamu membuka recordset, maka nilainya adalah Static cursor. Empat macam type cursor yang tersedia pada ADO:

Dynamic cursor Berisi sekumpulan bookmark pada data sebenarnya dalam data source. Setiap saat client meminta rekord, ADO menggunakan boookmark untuk membaca nilai yang ditunjuk pointer. Yang artinya aplikasi selalu membaca nilai terakhir yang disimpan oleh user. Dynamic cursor automatis meng-update ketika user menambah atau menghapus rekord atau merubah banyak rekord yang ada dalam rekordset. Dengan cursor ini membuat lalu lintas data pada server sangat padat karena setiap kamu berpindah dari rekord satu ke rekord lain selalu dipantau oleh sever. Dynamic cursor pilihan yang baik jika aplikasi harus mendeteksi semua perubahan yang dibuat oleh user lain. Cursor ini tersedia hanya sebagai server-side cursor. Catatan

Sistem Database Pengenalan Object Model ADO 2 - 5

Microsoft Jet Engine tidak mendukung dynamic cursor, jadi jika kamu memaksakan untuk membuka dynamic cursor dengan Jet OLE DB Provider kamu selalu menerima hasil seperti membuka denga keyset cursor.

Keyset cursor Serupa dengan dynamic cursor, tapi setiap user lain mengadakan perubahan pada data maka tidak langsung ditampakan dalam rekordset. Kamu dapat membaca dan memodifikasi semua rekord, tapi kamu akan mendapat error jika kamu mengakses rekord yang telah dihapus oleh user lain. Keyset cursor hanya tersedia sebagai serve-side cursor.

Static cursor Static cursor sebenarnya adalah seakan-akan menyalin data dari database ke rekordset, bila user lain merubah data pada database maka tidak akan langsung terlihat pada user yang mengakses database dengan static cursor. Statuc cursor biasanya merupakan pilihan terbaik untuk menerima data dari stored prosedure. Kamu sehaaarusnya membuat client-side static cursor hanya ketika client workstation mempunyai memori yang cukup.

Forward-only cursor

Forward-only cursor adalah nilai default untuk server-side cursor dan hanya tersedia untuk server-side cursor. Cursor ini sangat efisien khususnya jika kamu set LockType = adReadOnly dan CacheSize = 1. Banyak programer dan pengarang menyebut juga seperti noncursor. Kamu tidak harus melakukan sesuatu yang sepesial untuk menggunakan cursor ini (noncursor) karena cursor ini default untuk ADO. Kamu dapat menafigasi forward-only Rekordset hanya menggunkan MoveNext mothod. Jika kamu ingin mendapat penampilan aplikasi yang baik untuk meng-update rekord, kamu seharusnya lakukan semua update melalui SQL commands atau stored prosedure.

Sistem Database Mengatur Koneksi ke Data Source 3 - 1

BAB

3Mengatur Koneksi ke Data Source Tujuan :Pada Bab Ini diharapkan mahasiswa dapat: Menghubungkan Data Source dengan menggunakan object ADO Connection

Sistem Database Mengatur Koneksi ke Data Source 3 - 2

III.1 Definisi ADO Connection ObjectDasar aplikasi sederhana menggunakan ADO untuk mengakses data source: 1. Mendeklarasikan variabel object Koneksi. 2. Mencoba untuk membangun hubungan dengan data source (membuka koneksi). Sejak koneksi dibuka, kamu dapat menjalankan query yang mengubah rekord atau megembalikan dari rekord yang disebut recordset. 3. Menjalankan perintah SQL. 4. Menutup koneksi. Koneksi ke data souce server resources bebas.

III.2 Membangun KoneksiDengan menggunakan metode Open untuk membuat koneksi ke database dan ketika koneksi sedang berjalan, semua peritah ke database dapat dijalankan.Syntax untuk membuka koneksi : connection.Open ConnectionString, UserID, Password, Options Penjelasan metode untuk membuka koneksi:

ConnectionString String yang bernilai berisi informasi koneksi. Informasi ini menentukan :o o

Nama provider yang digunakan koneksi. Nama dari provider berupa file.

UserID String bernilai berisis nama user ketika membangun koneksi.

Password String bernilai berisi informasi password user ketika membangun koneksi.

Options Optional ConnectOptionEnum bernilai menentukan apakah metode open bernilai akan mengembalikan sesudah (synchronously) atau sebelum (asynchronously) koneksi terjadi. Kamu dapat menge-set dengan adConnectUnspecified atau adAsyncConnect.

Contoh membangun koneksi :

Sistem Database Mengatur Koneksi ke Data Source 3 - 3Private Sub cmdConnect_Click() ' Declare the object variable Dim cnPubs As ADODB.Connection ' This variable will contain the connection information Dim strConnect As String ' Instantiate the object variable Set cnPubs = New ADODB.Connection ' Define the OLE DB connection string strConnect = "Provider=SQLOLEDB;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" ' Open the database connection cnPubs.Open strConnect, "sa", "" End Sub

CATATAN

"Data Source=" bernilai dalam connection string adala nama dari remote server. "Initial Catalog=" bernilai nama database dalam external data source. Semua penjelasan untuk metode Open adalah optional karena kamu dapat menentukan informasi koneksi menggunakan property ConnectionString Connection object's ConnectionString property, seperti ditunjukkan dibawah ini :Private Sub cmdConnect_Click() ' Declare the object variable Dim cnPubs As ADODB.Connection ' Instantiate the object variable Set cnPubs = New ADODB.Connection ' Set the ConnectionString property value cnPubs.ConnectionString = "Provider=SQLOLEDB;" & _ "UID=sa;pwd=;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" ' Call the Open method without any arguments cnPubs.Open End Sub

III.2.1 Melakukan Update dengan Connection ObjectSejak koneksi telah terjadi, kamu dapat me-update rekord dalam database. Dengan menggunakan metode Execute Connection object's , kamu dapat mengirim peerintah SQL ke database tanpa mengebalikan semua rekord ke client. Contoh, kamu mungkin membutuhkan meng-update semua prices dalam database dengan 10 percent. Dalam

Sistem Database Mengatur Koneksi ke Data Source 3 - 4 hal ini, kamu dapat menggunakan perintah query update melalui metode Execute, seperti contoh dibawah ini :Sub cmdUpdatePrices_Click() cnPubs.Execute "UPDATE Titles Set Price = Price * 1.1" End Sub

III.2.2 Disconnecting dari Data SourceSejak kamu mengahkiri koneksi, kamu menggunakan metode Close untuk memutuskan hubungan dari data source. Ini merupakan teknik yang baik untuk menutup semua koneksi yang terbuka sebelum applikasi berakhir. Code mengahkiri koneksi dari data source :Sub cmdClose_Click() cnPubs.Close ' Clear the object to free client resources Set cnPubs = Nothing End Sub

III.3 Latihan: Membuat KoneksiPada Latihan ini. Kamu menghubungkan database dengan menggunakan OLE DB provider. Untuk menghubungkan OLE DB provider menggunakan code 1. 2. 3. 4. Buka Visual Basic dan buat project baru Standard EXE. Pada Menu Project, klik References. Check Microsoft ActiveX Data Objects 2.0 Library dan klik OK. Tambahkan CommandButton ke Form1, set property Name property ke cmdConnect, dan property Caption ke &Connect. 5. Dalam cmdConnect_Click event procedure, code programnya :Private Sub cmdConnect_Click() Dim cnData As Connection ' Instanciate the connection Set cnData = New Connection With cnData .Provider = "SQLOLEDB" .ConnectionString = "User ID=sa;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" .Open End With If cnData.State = adStateOpen Then MsgBox "Connection successful." End If

Sistem Database Mengatur Koneksi ke Data Source 3 - 5' Close the connection and release the cnData object cnData.Close Set cnData = Nothing End Sub

CATATAN

The Data Source parameter of the ConnectionString must point to a SQ Server. If the name of the SQL Server is different (than VB6ENTSVR) on your network, you have to change the value of the Data Source parameter. The ConnectionString has a parameter value that uses the SQL Server OLE DB provider. Each OLE DB provider requires a different value for the ConnectionString property. 6. Pada menu Run, klik Start. 7. Klik tombol Connect button. Jika koneksi sukses, kamu tidak akan meneripa kotak pesan (pesan error). 8. Ketika selesai, klik End pada menu Run.

III.4 Menggunakan ADO Command ObjectCommand object didefinisikan dari menentukan perintah yang dijalankan untuk data source. Ini dapat berdasarkan object yang lain pada database(such as a table, view, or stored procedure) atau perintah SQL. Command object yang lain terbuka dalam koneksi baru atau menggunakan koneksi untuk melakukan query, tergantung pada apa yang kamu tentukan didalam property ActiveConnection. Jika kamu set property ActiveConnection dengan referensi ke Connection object, Command object menggunakan koneksi yang berjalan dari Connection object. Jika kamu menentukan property ActiveConnection dengan connection string, Koneksi baaru dibangun untuk Command object. Yang mana, sejak itu lebih dari satu Command object dapat menggunakan Connectionobject yang sama, pada umumnya lebih effisient untuk menggunakan satu koneksi. Sekali Command object dibuat, kamu dapat menggunakan itu untuk menjalankan perintah yang ditentukan atau membangun recordset. Query strings menghasilkan records seperti recordset, atau hanya merubah rekord dalam database. Misalnya, menggunakan pernyataan Select untuk menghasilk rekord, dimana pernyataan SQL Update atau Delete hanya menrubah rekord. Jika kamu mengirim lebih dari satu pernyataan Select, kamu dapat mengembalikan banyak rekordset recordsets dengan satu pernyataan. Dengan enggunakan property CommandText untuk menentukan pernyatan SQL, atau stored procedure, untuk mengakses pada data source.

Sistem Database Mengatur Koneksi ke Data Source 3 - 6 Berbagai macam kemungkinan printah yang kamu tempatkan pada property CommandText, tetapi kamu harus juga menggunkan property CommandType untuk menentuka type dari command yang digunakan. Daftar nilai yang diidukung CommandType : Value adCmdText adCmdTable adCmdStoredProc adCmdFile Description Digunakan jika query string adalah perintah SQL. Digunkan jika query string adalah nama dari suatau tabel. Digunakan jika query string adalah nama dari stored procedure. Digunakan jika query string adalah nama dari file yang digunakan untuk menyimpan rekord dalam object Rekordset sebelumnya.

adCmdTableDirect Digunakan spesifik untuk OLE DB providers yang mendukung pernyataan SQL dan mempu untuk langsung membukan tabel berdasarkan nama tabel. Ini merupakan varisi pada adCmdTable. adCmdUnknown Digunakan ketika command type tidak jelas diketahui, dan provider mencoba untuk menjalankan command text pertama seperti pernyataan SQL, kemudian seperti stored procedure, dan ahkirnya seperti nama tabel. Jika error terjadi jika semua dari usaha tersebut gagal. Karena Command object harus menunjukkan langkah tersebut untuk menentukan type dari query string, Hasil adalah menurun. Ini adalah nilai default.

Berikut ini kode menggunakan Command object untuk menambah pesentase discount untuk semua rekord dalam tabel Discount dengan nilai 10 percent:Private Sub cmdDoCommand_Click() Dim comDiscountUpdate As Command Set comDiscountUpdate = New Command With comDiscountUpdate .CommandType = adCmdText .ActiveConnection = "Provider=SQLOLEDB;" & _ "User ID=sa;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" .CommandText = "UPDATE Discounts SET Discount = Discount * 1.1" ' Call the Execute method to update the Discounts .Execute End With End Sub

Sistem Database Mengatur Koneksi ke Data Source 3 - 7 CATATAN

Query string dapat juga nama dari stored procedure atau table.

Sistem Database Navigating Records 4 - 1

BAB

4Menerima Record dari Data Source Tujuan :Pada Bab Ini diharapkan mahasiswa mampu: Mengembalikan records dari data source. Definisi dan menggunakan cursors. Mengembalikan dan mengatur banyak recordsets.

Sistem Database Navigating Records 4 - 2

IV.1 Menggunakan ADO Recordset ObjectRecordset object mewakili hasi dari pelaksanaan perintah pda data source. Kamu dapta menggunakan object tersebut untuk memanipulasi data. Sekali koneksi dibangun ke data source, kamu dapta mengebalikan rekord dengan menggunakan metode Open Recordset object's. Berikut ini syntax untuk mengakse rekord dalam data source : recordset.Open Source, ActiveConnection, CursorType, LockType, Options Penjelasan metode Open pada rekordset : Argument Source Description Optional. Bisa berupa Nama variaberl yang berisi, pernyataan SQL, nama tabel, memanggil stored procedure.

ActiveConnection Optional. Nama variabel koneksinya atau String berisi parameter ConnectionString. CursorType LockType Optional. Nilai yang menentukan type dari cursor provider yang digunakan ketika membuka rekordset. Optional. Nilai ynag menentukan apa type dari locking (concurrency) provider yang digunakan ketika membuka rekordset. Optional. Benilai Long yang menandakan bagaimana provider menilai Source argument jika menunjukkan sesuatu yang lain dari Command object, atau yang menunjukkan recordset yang disimpan daei file dimana file tersebut disimpan sebelumnya.

Options

IV.1.1 Menggunakan Explicit Connection ObjectKamu dapat membangun Recordset object berdasarkan active connection ke data source, yang mana dibatasi jumlah dari koneksi dan mengurangi sejumlah resouce client dan server yang digunakan dalam applikasi. Bergantung pada kebutuhan dari rekordset, kamu boleh membutuhkan untuk membangun dalam explicit Connection object atau Command object lebih dahulu. Berikut ini contoh membuka dengan rekordset baru dari koneksi yang sudah berjalan :Dim cnPubs As Connection Dim rsTitles As Recordset ' Instantiate the objects Set cnPubs = New Connection Set rsTitles = New Recordset

Sistem Database Navigating Records 4 - 3' Open the connection cnPubs.ConnectionString = "Provider=SQLOLEDB;" & _ "User ID=sa;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" cnPubs.Open ' Retrieve records from the data source rsTitles.Open "Select * from Titles", cnPubs

IV.1.2 Menggunakan Implicit Connection ObjectAlternative untuk menggunakan Connection object yang ada adalah untuk membuka rekordset baru menggunakan implicit connection. Satu dari keistemewaan dariADO object model adalah kemampuan memanggil objects langsung. Ketika memanggil Recordset object secara langsung, ADO automatis membuat background Connection object (You cannot access this object programmatically). Ini automatis ditutup ketika rekordset ditutup. Berikut ini contoh menggunkan implicit connection untuk mengembalikan records dari tabel Titles:Private Sub cmdOpenRecordset_Click() Dim rsTitles As Recordset ' Instantiate the Recordset object Set rsTitles = New Recordset ' Open a new connection and return the appropriate records rsTitles.Open "Select * from Titles", _ "Provider=SQLOLEDB;User ID=sa;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" End Sub

Seperti kamu lihat, menggunakan teknik ini mengurangi sejumlah kode yang akan kamu tulis. Yang mana, untuk setiap rekordset yang menggunakan implicit connection, new connection dibuat pada data source. Sebagaian kasus, penambahan connections menggunakan valuable resources. Ini lebih effisient untuk membuat single Connection object dan membuka yang dibutuhkan rekordset dari koneksi itu. Kamu dapat membuat banyak recordsets dari satu koneksi tanpa menambahkan connection resources. CATATAN

Menggunakan implicit connections menyebabkan scalability problems ketika programming enterprise-level applications, seperti dengan Microsoft SQL Server, mengingat explicit Connection objects ketika mengakses data source.

Sistem Database Navigating Records 4 - 4

IV.1.3 Locking the RecordsetADO menghasilkan cursors yang read-only. Provides for the best performance and lowest system resource requirements. In the event your application intends to add records, delete records, or edit existing records, you will need to specify a different locking option. In a multi-user environment, locking ensures that no two users can change the same record at the same time. Menggunakan property LockType untuk menyeting pilihan untuk rekordset. Berikut ini tabel yang memberi keterangan nilai dari property LockType. Locking Value adLockReadOnly adLockPessimistic Description Data bersifat read-only. Ini merupakan nilai defaultnya. Provider memastikan sukses melakukan edit pada rekords, biasanya rekords di-lock secara tiba-tiba ketika sedang di-edit. Provider menggunakan optimistic locking, yang mana locks records hanya ketika kamu memanggil metode Update rekordset.

adLockOptimistic

adLockBatchOptimistic Records di-lock dalam mode batch update, ini dipaksa ke immediate update mode. Option ini dibutuhkan untuk client-side cursors, termasuk disconnected recordsets. Berikut ini contoh membuta dynamic recordset menggunakan optimistic locking:rsTitles.Open "Select * from Titles", cnPubs, adOpenDynamic, adLockOptimistic

IV.2 Mengakses Record dalam RecordsetSekali recordset telah dibuat, kamu dapat mengakses field dari setiap rekord dengan jalan :

Referensi nama field Jika kamu mengetahui nama dari fied yang kamu akses, kamu dapat menggunakan syntax berikut untuk mengakses nilai tertentu dari field :

RecordsetObject!FieldName Ini adalah paling efisien dari dua cara untuk referensi field.

Menggunakan Fields collection

Sistem Database Navigating Records 4 - 5 Kamu dapat juga menggunakan Recordset object's Fields collection. Cara ini tidak efisient ketika mengakses recordset. Berikut ini syntax untuk mengaksis nilai dari field dengan menggunakan Fields collection: recordsetobject.Fields(0) atau recordsetobject.Fields("FieldName") Berkut ini contoh menampilkan fieldTitle dalam window Immediate:Debug.Print rsTitles!Title

-atauDebug.Print rsTitles.Fields(0)

NOTE

Field Title pada field pertama dalam collection.

IV.3 Binding Control ke ADO RecordsetVisual Basic menyediakan kemampuan untuk control bind seperti text box untuk ADO recordsets. Ketika control bound ke recordset, control automatis menggambarkan data record's saat itu. Berikut contoh melakukan binds text box ke rekordset rsAuthor :Set txtAuthor.DataSource = rsAuthor txtAuthor.DataField = "au_fname"

Kamu dapat juga melakukan bind control lebih komplek ke rekordset. Berikut ini code membuka koneksi ke SQL Server. Recordset, rsTitles, dibuka menggunakan cnPubs Connection object, dan property Hierarchical Flexgrid's DataSource didefinisikan seperti rekordset rsTitles.Dim cnPubs As ADODB.Connection Dim rsTitles As ADODB.Recordset Dim strConnect As String strConnect = "Provider=SQLOLEDB;User ID=sa;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" ' Instantiate a Connection object Set cnPubs = New Connection ' Open a new connection cnPubs.Open strConnect, "sa", "" ' Instantiate the Recordset object Set rsTitles = New Recordset

Sistem Database Navigating Records 4 - 6

' Open a new recordset using the ' cn connection and return the appropriate records rsTitles.Open "SELECT * From Titles", cnPubs ' Fill the Hierarchial Flexgrid control with ' data from the Titles table Set flexTitles.DataSource = rsTitles

IV.4 Membuat Multiple RecordsetMenggunakan ADO kamu dapat mendefinisikan pernyataan perintah yang berisi pernyataan multiple Select, Hasilnya seperti perintah tunggal yang mengembalikan lebih dari satu rekordset, yang mana lebih efisien. Multefficient than calling a data source multiple times. Multiple recordsets dapat dibuat menggunakan metode Execute dari Command object atau metode Open daari Recordset object. Berikut ini contoh membuat dua recordsets dari pernyataan single Open:rsInfo.Open "SELECT * From Titles;SELECT * From Authors", cnPubs

IV.4.1 Mendapatkan Rekordset Selanjutnya Setiap pernyataan dalam perintah gabungan dijalankan dalam urutan masuk, dan hanya satu rekordset dikembalikan di satu waktu. Gunakan metode NextRecordset untuk bergerak kem rekordset berikutnya ketika multiple recordsets dikembalikan. Sejak metode NextRecordset hanya pernyataan perintah selanjutnya yang dijalankan, jika kamu dengan jelas menutup Recordset object sebelum langkah melalui seluruh pernyataan perintah, ADO tidak pernah menjalankan perintah yang tersisa. Syntaxnya sebagai berikut :Set rsInfo = rsInfo.NextRecordset

Berikut ini contoh menggunakan metode NextRecordset method untuk melihat data dalam rekordset yang menggunakan peryataan perintah gabungan dari tiga peryataan SELECT yang terpisah :Private Sub cmdCompoundRecordsets_Click() Dim Dim Dim Dim rsCompound As Recordset Count As Integer strConnect As String strSQL As String

strConnect = "Provider=SQLOLEDB;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=pubs;" & _ "User Id=sa;Password=;" strSQL = "SELECT * FROM authors; " & _

Sistem Database Navigating Records 4 - 7"SELECT * FROM stores; " & _ "SELECT * FROM jobs" Set rsCompound = New Recordset rsCompound.CursorLocation = adUseClient rsCompound.Open strSQL, strConnect, _ adOpenUnspecified, _ adLockUnspecified Do Until rsCompound Is Nothing Debug.Print "Recordset #" & Count Do While Not rsCompound.EOF Debug.Print , rsCompound.Fields(0), _ rsCompound.Fields(1) rsCompound.MoveNext Loop Set rsCompound = rsCompound.NextRecordset Count = Count + 1 Loop End Sub

Sistem Database Memodifikasi Record 5 - 1

BAB

5Navigating Records Tujuan :Pada Bab Ini diharapkan mahasiswa mampu : Menggunakan ADO recordset navigation methods Menjelaskan bermacam-macam ADO recordset navigation properti

Sistem Database Memodifikasi Record 5 - 2

V.1 ADO Navigation PropertiesBerikut ini daftaar properties dari Recordset object yang digunakan untuk nafigasi recordset: Property AbsolutePage Description Letak atau mengembalikan halaman sebenarnya.

AbsolutePosition Letak atau mengembalikan posisi sebenarnya dari nilai rekord (ini dapat dipakai oleh rekord menambah atau menghapus). BOF Bookmark Menandakan jika pointer rekord telah digerakkan sebelum rekord pertama. Mengembalikan unique identifier untuk nilai rekord. Setting property ini untuk menentukan record's bookmark perpindahan record pointer ke rekord. Menandakan jika pointer rekord digerakkan setelah rekord terahkir.

EOF

Berikut ini contoh menggunakan property EOF:If rsAuthor.EOF Then _ MsgBox "The end of the recordset has been reached." End If

V.2 ADO Navigation MethodsBerikut ini daftar metode daari Recordset object yang digunakan untuk navigasi melalui recordset. Method Move MoveFirst MoveLast MoveNext MovePrevious Description Bergerak ditentukan nomor dari rekordset, maju atau mundur. Bergerak ke rekord pertama. Bergerak ke rekord terakhir. Bergerak ke rekord selanjutnya. Bergerak ke rekord sebelumnya.

V.3 Latihan : Navigating an ADO RecordsetDalam latihan ini kamu akam membuat applikasi dengan membuat recordset object berdasar pada tabel dalam database SQL Server Pubs. Aplikasi ini akan mempunyai tombol nafigasi seperti gambar dibawah ini.

Sistem Database Memodifikasi Record 5 - 3

Gamabar 5.1 Database navigation controls on the form To connect to the SQL Server 1. 2. 3. 4. 5. 6. Buka Visual Basic Standard EXE baru. Pada Menu Project, klik References. Check Microsoft ActiveX Data Objects 2.0 Library dan klik OK. Set property Nama project ke PracL4. Set property dari Form1 ke frmAuthors Tambahka dua control Textbox ke form. Set properties name ke txtFirst dan txtLast. 7. Tambahkan empat controlsCommandButton dan control Label ke form. Berikut ini setting prperties : Control Command1 Command2 Command3 Command4 Label1 Property Name Caption Name Caption Name Caption Name Caption Name Caption CmdFirst |< CmdPrevious > CmdLast >| LblRecordCount Value

8. Simpan project files ke folder \Practice\Ch06. To create a connection and a recordset

Sistem Database Memodifikasi Record 5 - 4 1. Tambahkan variabel ke frmAuthor's seperti berikut ini :' Use the events of the Recordset object Private WithEvents rsAuthors As ADODB.Recordset Private strConnect As String Private cn As ADODB.Connection

2. Tambahkan kode beerikut ini pada prosedur event Form_Load.Private Sub Form_Load() ' Use your local SQL Server name for the Data Source strConnect = "Provider=SQLOLEDB;User ID=sa;" & _ "Data Source=VB6ENTSVR;" amp; _ "Initial Catalog=Pubs" ' Instantiate a Connection object Set cn = New ADODB.Connection ' Open a new connection cn.Open strConnect, "sa", "" ' Instantiate the Recordset object Set rsAuthors = New ADODB.Recordset ' Set the CursorType, LockType and CursorLocation rsAuthors.CursorType = adOpenDynamic rsAuthors.LockType = adLockOptimistic rsAuthors.CursorLocation = adUseClient ' Open a new recordset using the ' cn connection and return the appropriate records rsAuthors.Open "Select * from Authors", cn ' Bind the Textbox controls Set txtFirst.DataSource = rsAuthors txtFirst.DataField = "au_fname" Set txtLast.DataSource = rsAuthors txtLast.DataField = "au_lname" End Sub

Kode ini membuaat koneksi ke Pubs database pada SQL Server. Kemedian membuat client-side, dynamic Recordset object dari tabel Authors. Control TxtFirst dan txtLast controls bound ke kolom au_fname dan au_lname. To add navigation features to the form 1. Menggunakan MoveFirst, MovePrevious, MoveNext dan MoveLast methods dalam command button pada event Click untuk memberi user kemampuan nafigasi rekord. Berikut ini contoh kode pada prosedure event klik :Private Sub cmdFirst_Click() rsAuthors.MoveFirst End Sub Private Sub cmdLast_Click()

Sistem Database Memodifikasi Record 5 - 5rsAuthors.MoveLast End Sub Private Sub cmdNext_Click() rsAuthors.MoveNext End Sub Private Sub cmdPrevious_Click() rsAuthors.MovePrevious End Sub

2. Simpan aplikasi kamu. 3. Jalankan aplikasi kamu dan coba Run the application and try navigating through the Authors records.

To use ADO object events 1. Dari frmAuthors module window, select rsAuthors dari Object drop-down list (lihat gambaar 6.2).

Sistem Database Memodifikasi Record 5 - 6 Gamabar 5.2 The Object list 2. Dari Procedure drop-down list, select prosedure MoveComplete. Tambahkan kode berikutnini untuk event MoveComplete:Private Sub rsAuthors_MoveComplete(ByVal adReason As _ ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) ' Avoid reading beyond the end of file (EOF) or the ' beginning of file (BOF) If rsAuthors.EOF Then rsAuthors.MoveLast ElseIf rsAuthors.BOF Then rsAuthors.MoveFirst End If ' Set the label's caption to show current record ' and total record count lblRecordCount.Caption = "Record " & _ rsAuthors.AbsolutePosition _ & " of " & rsAuthors.RecordCount End Sub

_

3. Simpan dan jalank aplikasi kamu. Gambaar 6.3 illustrasi from secara lengkap sewaktu aplikasi dijalankan.

Gambar 5.3 The completed form

Sistem Database Memodifikasi Record 6 - 1

BAB

6Memodifikasi Record Tujuan :Pada Bab Ini diharapkan mahasiswa dapat: Memodifikasi multiple records menggunakan perintah SQL. Memodifikasi single record menggunakan Recordset Object.

Sistem Database Memodifikasi Record 6 - 2

VI.1 Memodifikasi dengan Perintah SQLJika aplikasi kamu membutuhkan untuk update sejumlah rekord, kamu dapat menjalankan perintah SQL menggunakan Connection atau Command object's Execute method. Gunkan Connection object ketika pernyataan hanya akan dipanggil sekali. Gunakan Command object jika perintah akan dijalankan oleh aplikasi kamu lebih dari sekali jika kamu membutuhkan untuk memanggil stored procedure. Command object dapat dibuat di temporary stored procedure untuk lebih efisien ketika perintha digunakan lebih dari satu kali Berikut ini menggunakan pernyataan untuk memodifikasi multiple records dalam single database:Private Sub cmdConnect_Click() Dim cnPubs As Connection Dim strConnect As String Set cnPubs = New Connection ' Define the OLE DB connection string strConnect = "Provider=SQLOLEDB;" & _ "Data Source=VB6ENTSVR;" & _ "Initial Catalog=Pubs" ' Open the database connection cnPubs.Open strConnect, "sa", "" ' Execute the SQL statement cnPubs.Execute "UPDATE Titles Set Price = Price * 1.1" cnPubs.Close Set cnPubs = Nothing End Sub

VI.2 Memodifikasi Record dalam RecordsetJika aplikasi kamu telah membuka rekordset, kamu dapat memodifikasi data menggunakan recordset's methods. Memodifikasi rekord dengan Recordset object terbatas untuk satu penambahan, penghapusan, atau update pada satu waktu.

VI.2.1 Menambah RekordDalam perintah untuk menambah rekord baru gunakan AddNew method. Segera setelah rekord baru tersebut terisi gunakan Update method untuk menyimpan ke rekordset dan data source. Berikut ini contoh menggunakan AddNew method untuk menambah rekord Author:rsAuthors.AddNew rsAuthors!au_fname = "Nancy" rsAuthors!au_lname = "Davolio" rsAuthors.Update

Sistem Database Memodifikasi Record 6 - 3

VI.2.2 Menghapus RecordUntuk menghapus rekord dari recordset, pertama kamu harus nafigasi ke rekord yang tepat. Gunakan Delete method untuk permanen menghapus record dari recordset dan data source. Berikut ini contoh menghapus suatu rekord:rsAuthors.Delete

VI.2.3 Modifikasi RecordUntuk merubah suatu rekord dalam recordset, aplikasi kamu dapat memodifikasi nilai daari setiap field. Kemudian menggunakan Update method, kamu dapat menyimpan perubahan untuk recordset dan data source. Berikut ini contoh merubah dan meupdate suatu record:rsAuthors!au_fname = "Nancy" rsAuthors!au_lname = "Davolio" rsAuthors.Update

VI.2.4 Membatalkan Perubahan atau Penambahan RekordJika kamu membutuhkan pembatalan perubahan suatu record, atau hasil dari AddNew method, kamu dapat menggunakan CancelUpdate method. Kamu hanya dapat menggunakan CancelUpdate sebelum mejalankan Update method. Jika kamu gunakan CancelUpdate dengan AddNew, cursor mengembalikan ke rekord sebelumnya. Berikut ini contoh membatalkan AddNew menggunakan CancelUpdate:rsAuthors.AddNew rsAuthors!au_fname = "Nancy" rsAuthors!au_lname = "Davolio" rsAuthors.CancelUpdate

Sistem Database Memodifikasi Record 6 - 4

Sistem Informasi Manajemen Tambahan 1