23 Maret 2009

Penyederhanaan penggunaan transaction (mySQL)

******** FUNCTION ini adalah pengganti perintah SQLEXEC dan tidak menggunakan metode transaction
FUNCTION lakukan
PARAMETERS perintah,KUR
IF EMPTY(KUR)
KUR='TAMPUNGAN'
ENDIF
IF SQLEXEC(_KON,perintah,KUR)<0
WAIT WINDOW "Maaf perintah GAGAL'
RETURN 0
ELSE
RETURN 1
ENDIF
ENDFUNC


******* FUNCTION untuk men-deklarasikan variable public sebagai handle
FUNCTION lakukan0
lakukan('SET autocommit=0')
lakukan('start transaction')
RETURN 1
ENDFUNC


****** FUNCTION perintah sesungguhnya
Function lakukan1
Parameters nbalik,perintah,KUR
Local Array aError_(10)
If nbalik=0
Return
Endif
KUR = Iif(PCOUNT()<3,'TAMPUNGAN', KUR)
aError_(1)=0
SQLEXEC(_KON,perintah,KUR)
Aerror(aError_) && Get Error
If aError_(1) < 0
cMsgErr = Substr(aError_(3),Rat(']',aError_(3))+1,Len(aError_(3)))
Messagebox(cMsgErr)
nbalik=0
Else
nbalik=1
Endif
Return nbalik
Endfunc


***** FUNCTION untuk menentukan apakah mau commit ato rollback
FUNCTION lakukan2
PARAMETERS nbalik
IF nbalik=1
lakukan('commit')
lakukan('set autocommit=1')
RETURN .T.
ELSE
lakukan('rollback')
lakukan('set autocommit=1')
RETURN .F.
ENDIF
ENDFUNC

cara penggunaannya :

- untuk perintah yang tidak menggunakan metode transaction
lakukan([select * from tabel where year(tanggal)=2009],'kursor')
lakukan([insert into tabel1 (a,b) values (?xa,?xb)])

- untuk perintah yang menggunakan metode transaction
sukses=lakukan0()
lakukan1(sukses,[insert into tabel1 (a,b) values (?xa,?xb)])
lakukan1(sukses,[insert into tabel2 (a,b) values (?xa,?xb)])
lakukan1(sukses,[insert into tabel3 (a,b) values (?xa,?xb)])
lakukan2(sukses)

2 komentar:

agribisnisku & family mengatakan...

Assalamu'alaikum Wr Wb
ikut belajar boleh ya mas

Grand Permata Hijau mengatakan...

walaikumsalam Wr.Wb
monggo-monggo...

Posting Komentar