Kayaknya ada sdkt salah pengertian deh,

Yg dimaksud mas pur (dan jg sering dibahas oleh mas sistyo dll dsb)

 

Dim cnn As New ADODB.Connection

Set cnn = New ADODB.Connection

 

Adalah boros resources krn 2x New à tiap New akan create object

Jadinya New-nya di salah satu saja. Biasanya sih di set-nya aja yg new.

Contoh: Dim-nya di modul (Public) trs Set-nya di prosedur (Private)

 

Klo option explicit memang tdk wajib dipakai namun sangat disarankan

Krn option explicit akan mewajibkan semua variabel utk dideklarasikan terlebih dahulu

Jd klo ada variabel yg lupa dideklarasikan, akan lebih mudah terdeteksi

Klo tanpa option explicit, tanpa DIM, PUBLIC, PRIVATE, GLOBAL semua jalan aja

Tp klo rumusnya kita salah, ntar akan sulit mendeteksi krn semua tetap jalan.

Misal :

Dim A, B, C  As Long

C=A+B+D à klo tanpa option explicit, tetap jalan meski D tdk dideklarasikan sblmnya.

 

 

 

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Frengki Bunga

                                                                                   

Mas Pur Terima kasih atas penjelasannya.

 

Selama ini saya pakai code seperti dibawah ini

 

Dim cnn As New ADODB.Connection

Dim rs As New ADODB.Recordset

 

tapi setelah dikoreksi oleh Mas Pur jadinya begini:

 

Dim cnn New ADODB.Connection

Dim rs New ADODB.Recordset

 

Setelah melihat codenya Mas Pur, yang mau saya tanyakan karena saya tidak mengerti,  sebagai berikut:

 

1. Apa fungsi dari Option Explicit dan kenapa harus dipakai karena selama ini saya tidak pakai Option Explicit program saya bisa berjalan.

2. Di Form Load Mas Pur pake  oConnection.CursorLocation = adUseClient 'apa fungsi dari CursorLocation = adUseClient

3.  Apa fungsi dari .CursorType = adOpenForwardOnly

4. Kenapa Mas Pur pakai Private bukan Dim.

 

Demikian pertanyaan saya. Kiranya Mas Pur meluangkan waktu untuk menjawab pertanyaan saya.

 

 

----- Original Message -----

Sent: Tuesday, April 18, 2006 9:24 AM

Subject: Re: [Programmer-VB] Nanya Recordset dan DataGrid1

 

saya bukan guru mas, tapi biar jelas coba liat kode berikut:

Option Explicit

Private oConnection As ADODB.Connection     ' kalau kamu pake set new di form load, disini ga usah pake As New, kalau pake berarti kamu bikin object n mengalokasikan memori nya 2x, disini dan di form load, gunakan keyword Private or Public instead of Dim, biar jelas ruang lingkup variablenya.
Private oRecordset As ADODB.Recordset       ' gunakan naming convention yg jelas, biar kita tau ini object atau variable, typenya apa dll
 
Private Sub cmdTampilData_Click()
    Call TampilData
End Sub
 
Private Sub Form_Load()
    Set oConnection = New ADODB.Connection
    With oConnection
        .CursorLocation = adUseClient
        .Open "data"
    End With
End Sub
 
Public Sub TampilData()
    Dim sSql As String  ' gunakan nama variable yg bisa dimengerti oleh orang lain, biar anggota team developer lain bisa baca
 
    sSql = "select * from tblbarang"
   
    Set oRecordset = New ADODB.Recordset
    With oRecordset
        .ActiveConnection = oConnection ' disini lah kita menggunakan koneksi yg tadi dibuka di form load, Adodc komponen sudah punya koneksi nya sendiri
        .CursorType = adOpenForwardOnly
        .Source = sSql
        .Open
    End With

    Set DataGrid1.DataSource = oRecordset
    DataGrid1.Refresh
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    If oRecordset.State = adStateOpen Then oRecordset.Close ' percuma nutup object ini kalau dia dalam keadaan tertutup
    Set oRecordset = Nothing
    If oConnection.State = adStateOpen Then oConnection.Close
    Set oConnection = Nothing
End Sub

best regards
[wwn]

On 4/18/06, Frengki Bunga <[EMAIL PROTECTED]> wrote:



Mas Purwedi terima kasih atas teori dan penjelasannya.

 

Biasanya kalau seorang Guru memberikan teori kepada muridnya harus disertai prakteknya dong !

Biar muridnya bisa lebih paham teori sang Guru.

Dengan melihat code yang pernah saya buat, harusnya codenya seperti apa !

Supaya bisa menjadi pembanding antara  code saya yang salah dan code Mas Pur.

 

Seperti pernyataan Mas Pur seperti dibawah ini:

 

object connection yg dibuat di form load itu sama sekali ga berguna karena dia hanya membuka koneksi ke database dan setelah itu ga melakukan apapun, proses pengambilan data dilakukan oleh Adodc1. jd disini ada 2 koneksi yg terbuka, satu dari object connection satu lagi dari Adodc1, hasilnya malah aplikasi akan lambat karena harus melakukan verifikasi ada tidaknya db dan membuka koneksi ke database yg sama 2x.

 

Apakah yang Mas Pur maksud seperti dibawah ini?

 

 

Private Sub Form_Load()
    Set Connection = New ADODB.Connection
    Connection.open "data"

End Sub

 

Kalau tidak berguna, harusnya bagaimana !

 

 

Terima kasih.

 

 



Wahana Programmer Groups Links

<*> Untuk mengunjungi sponsor milis ini, klik link berikut:
    http://wahanaprogrammer.net

<*> Untuk menghubungi owner milis ini, kirim email ke:
    [EMAIL PROTECTED]

<*> Konsultasi pemrogramman bisa chat disini:
    Yahoo! Messenger: wahanaprogrammer




YAHOO! GROUPS LINKS




Kirim email ke