boleh sy tambahkan sedikit.
keuntungan update dengan blob adalah, client tidak perlu mapping drive ke
server, cukup dengan ip saja.
tehnik dasarnya untuk otomatis update file diclient adalah sbb :
untuk server :
1. selain database utama, dibuat 1 database lagi untuk penampung khusus file
pbd terbaru, cukup 1 table saja
2. field table nya kira2 seperti ini : "string namafile1", "blob file1",
"string namafile2", "blob file2", "integer lastversion" ( tergantung brp
banyak pbd )
3. jika ada update program, kita masukkan pbd terbaru ke table diatas. dengan
menggunakan script, rubah file pbd menjadi blob, agar bisa masuk ke database
4. naikkan nilai "lastversion" setiap ada update baru.
untuk client
1. di open event, connect ke database pbd, cek nilai "lastversion"
2. jika "lastversion" server > "lastversion" client, maka ambil + convert blob
nya, dengan menggunakan script ( otomatis replace file di pc client )
3. naikkan nilai "lastversion" di client ( agar sama dengan server )
contoh script di client sbb ( dengan db sql anywhere ) :
////////////////////////BEGIN DOWNLOAD
transaction lt_app
lt_app = create transaction
// Profile blob2file
//.......
connect using lt_app ;
lb_ok = TRUE ; lb_in = FALSE
if lt_app.sqlcode = 0 then
li_ver = profileint("main.ini","main","ver",0)
select versi into :li_app from main using lt_app ;
IF li_ver <> li_app then /// versi beda, download it, versi sama, skip to
main program
open(w_wait3) // beri window warning, karena prosesnya agak lama jika file
besar...
yield()
declare app cursor for
select namafile from prg using lt_app ;
open app ;
fetch app into :ls_nm ;
DO while lt_app.sqlcode = 0
yield()
lb_in = TRUE
setnull(ablb_blob) ; setnull(lblb_temp)
selectblob object into :ablb_blob from prg where namafile = :ls_nm using
lt_app ;
f_err("")
ll_FileLength = Len(ablb_blob)
IF ll_FileLength > 32765 THEN
IF Mod(ll_FileLength, 32765) = 0 THEN
li_Loops = ll_FileLength / 32765
ELSE
li_Loops = (ll_FileLength / 32765) + 1
END IF
ELSE
li_Loops = 1
END IF
li_FileNum = FileOpen(ls_nm, StreamMode!, Write!, LockReadWrite!, Replace!)
if li_filenum = -1 then
/// some error
lb_ok = FALSE
end if
FOR li_Index = 1 TO li_Loops
lblb_Temp = BlobMid(ablb_blob, ((32765 * li_Index) - 32765 + 1), 32765)
li_err = FileWrite(li_FileNum, lblb_Temp)
if li_err = -1 then
//// some error
lb_ok = FALSE
end if
NEXT
li_err = FileClose(li_FileNum)
if li_err = -1 then
lb_ok = FALSE
end if
fetch app into :ls_nm ;
LOOP
close app ;
if lb_ok and lb_in then
SetProfileString("MAIN.INI","main", "ver", string(li_app) )
end if
close(w_wait3)
END IF
END IF
disconnect using lt_app ;
destroy lt_app ;
//////////////////////////////END DOWNLOAD
untuk script di server, kira2 prosesnya adalah kebalikan dari script diatas
rgrds
setiawan
----- Original Message -----
From: [email protected]
To: [email protected]
Sent: Friday, June 24, 2011 11:34 AM
Subject: Re: [indopb] jalankan aplikasi pb 11 exe di jaringan agar lebih cepat
Cara update client2 lwt database(blog) gimana caranya?
Sent from my BlackBerry® smartphone from Sinyal Bagus XL, Nyambung
Teruuusss...!
------------------------------------------------------------------------------
From: Hermawan Dephe <[email protected]>
Sender: [email protected]
Date: Fri, 24 Jun 2011 11:27:49 +0700
To: <[email protected]>
ReplyTo: [email protected]
Subject: Re: [indopb] jalankan aplikasi pb 11 exe di jaringan agar lebih cepat
pecah2 PBD jadi lebih kecil aja pak.. agar bisa lebih ngirit bandwith..
tp kalo bagusnya sih nurut saya mending dicopy kemasing2 client2..untuk
updatenya bisa lewat database (blob) nantinya..
kalo pake PB 9 ke atas kayaknya dah aman jg deh dari PBKilller.. jadi gak
perlu takut dibaca scriptnya.
NASRULLAH ARUL wrote:
Master2 sy mau tanya untuk pb 11.5 jika pbd nya di jalankan lewat jaringan,
di client lemot banget yah, lama sekali untuk buka menu, ada solusi agar dapat
menjalankan lebih cepat...? dengan catatan tidak di kopikan ke local2 masing
client.. terima kasih.