J

Penjelasan mengenai disconnected recordset bisa anda lihat di:

http://support.microsoft.com/kb/q184397/

 

Jadi berbeda dengan pengertian anda mengenai recordset terputus. Intinya
untuk disconnected recordset adalah: Bentuk koneksi, bawa semua ke klien,
putus koneksi, lakukan pengolahan data di klien, sambung lagi koneksi, lalu
baru melakukan batch update.

 

Dim Conn As ADODB.Connection

Dim Rs As ADODB.Recordset

 

' Create instance of connection object and then open the

' connection.

Set Conn = New ADODB.Connection

Conn.Open "DSN=SQLServer", "sa", ""

 

' Create instance of recordset object and open the

' recordset object against a table.

Set Rs = New ADODB.Recordset

 

' Setting the cursor location to client side is important

' to get a disconnected recordset.

Rs.CursorLocation = adUseClient

Rs.Open "Select * from Table1", _

         Conn, _

         ADODB.adOpenForwardOnly, _

         ADODB.adLockBatchOptimistic

 

' Disconnect the recordset.

Set Rs.ActiveConnection = Nothing

 

' Get the value of one of the fields from the recordset

' after disconnection.

Dim v

v = Rs.Fields(0).Value

MsgBox v

 

Conn.Close

 

' Get the value of one of the fields from the recordset

' after closing the connection to ensure that you have a

' disconnected recordset.

v = Rs.Fields(0).Value

MsgBox (v)

 

' Now edit the value and save it.

Rs.Fields("au_lname").Value = "NewValue"

 

' Now reopen the connection and attach it to the recordset.  Update

Set Conn = New ADODB.Connection

Conn.Open "DSN=DBSql", "sa", ""

Rs.ActiveConnection = Conn

Rs.UpdateBatch

 

Rs.Close

Conn.Close

Set Rs = Nothing

Set Conn = Nothing

 

 

Aksan Kurdin

 

From: [email protected] [mailto:[EMAIL PROTECTED]
On Behalf Of Rizky Prihanto
Sent: Tuesday, July 24, 2007 8:49 AM
To: [email protected]
Subject: Re: [Programmer-VB] Re: Tips n Triks membuat Koneksi dataBase di
level Modul

 

klo menurut saya, koneksi terputus bukan gitu implementasinya. variabel
ADODB.Connection sejatinya di open pada saat aplikasi dimulai aja itu udah
efektif. Malah kalo open-close connection di level form spt yg
destroyer_maniac katrakan di postnya, hal itu justru akan *menambah* counter
connection ID. Kalo di MySQL, ada batasan tentang max_connection.
(sebenarnya gpp sih, MySQL bs nge-reset otomatis). Tapi kalo terdapat banyak
connection yg terminated unexpectedly sampai batas2 tertentu, ketika ada
permintaan koneksi baru MySQL akan memberikan warning disuruh lakukan
command mysql_flush_host... 

 

Kalo maksutnya RECORDSET TERPUTUS, itu emang bener! itu emang efektif. tp
yang diputus adalah recordsetnya, BUKAN connection-nya... caranya, simpel :
habis seluruh record di-fetch ke grid/variabel, setelah rs.close, dispose
lah dengan set rs = nothing. *atau* kalo pendekatan lain,
rs.activeconnection = false -> ini supaya recordset ngga melakukan refresh
periodik dgn connection db. 

 

efeknya, kalo pake recordset terputus, beban client n server menjadi ringan
*dua-duanya*. Di sisi server, dia ngga nganggap ada lagi permintaan query yg
masih harus di-maintain (apalagi kalo cursorlocation = adUseServer). di sisi
client, konsumsi memory yang dipakae ama variabel recordset tersebut akan
jadi nol lagi. Asumsinya, kan udah dipindahin ke grid/variabel... jd ngapain
lg nilai hasil query nya masih ada jg di recordset. kan buang2 tenaga tuh...
- emang sih kalo row yg di fetch 1-100 sih ngga terlalu ngefek. tp kalo di
atas seribu, diatas sejuta... waahhh... nggak deh... 

 

oia, aku pernah membahas tentang trik2 penggunaan ADODB.connection n
ADODB.recordset yang *bijaksana* (menurutku seehh, hehehe) di artikelku di
blogs ku. Silakan baca di sini nih :
http://www.software-arsitek.web.id/2007/06/optimasi-adodb-scripting.html
Monggo ditanggapin kalo ada komentar ato koreksi. 


-- 
regards,

Rizky Prihanto
~~~~~~~~~~~~~~~~~~~
Office : PT Lintang Kawuryan Malang (http://www.linkar.co.id) 
Personal : http://www.software-arsitek.web.id   

 

Kirim email ke