"IdiOot" wrote:

> Cara 1
> 
> Dim rs as New ADODB.Recordset
> Dim dbClass as New clsDatabase
> Dim SumDetail as Double
> 
> dbClass.ConnStr = Bla... Bla... Bla...
> 
> ' Ambil Data Master dari Item
> sql_query = "SELECT * FROM tbl MasterItem"
> set rs = dbClass.GetRS("SELECT * FROM tblMasterItem")
> 
> For i = 0 To rs.Recordcount - 1
>     ' Ambil Summary dari detail
>     SumDetail = dbClass.GetSum("qty","tblDetailItem","id_master_item 
> =
> " & rs!id_master_item)
>     dbClass.Execute "UPDATE tblMasterItem SET Stock = " & SumDetail 
> &
> " WHERE id_master_item = " & rs!id_master_item
>     rs.MoveNext
> Next i
> 

Kalo datanya 1.783.455 berarti proses looping lama dong. ini juga akan
membutuhkan proses yang berat di komputer client. Hati2 kalo datanya
semakin banyak, bisa-bisa komputer anda hang lho hehe.

Kelemahan yang kedua, jika aplikasi anda client-server dimana aplikasi
berada di client dan database di server, maka client akan mengirimkan
transact sql ke server sebanyak looping yang anda buat itu artinya
resource jaringan anda banyak terpakai.

Jika dalam proses update tersebut anda menggunakan transaction (begin
trans, commit trans, rollback trans) maka database anda akan ke-lock
selama proses looping data. ini artinya selama proses berjalan, user
yang lain tidak bisa make database.

Jadi saran saya mending anda gunakan cara yang kedua karena yang
proses hanya sql server-nya aja sedangkan yg di client hanya
mengirimkan 1 transact sql. ini jelas lebih ngirit resource di
komputer client dan jaringan.

Demikian semoga ada manfaatnya

regards

eko heri


Kirim email ke