********  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)
23 Maret 2009
Langganan:
Posting Komentar (Atom)
2 komentar:
Assalamu'alaikum Wr Wb
ikut belajar boleh ya mas
walaikumsalam Wr.Wb
monggo-monggo...
Posting Komentar