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
