[Trik]Multiuser dengan database Native(*.dbc/*.dbf)

Cerita nih dikit, sebelum saya kenal yag namanya buffer dan transaction, saya akalin aja dengan pake teknik SPT layak pake Mysql juga(Mysql udah punya transaction sekalian innodb) Jadi gini database(*.dbc,*.dbf) diletakkan aja di server kemudian dieksikusi pake SPT bentuk jadi cursor, yang mana SPT itu saya letakkan di procedure Activate, kenapa saya milih Activate karena koding akan di eksikusi setelah form tampil, secara user ga mungkinkan tutup form hanya demi refresh data😀 (init,load sebelum form muncul koding udah di eksikusi)

lihat gambar

Kemudian saya save data yang di form 3 lihat gambar

kemudian saya save data yang di form 4 lihat gambar

Gimana kode barangnya ga bentrokkan? terus juga di dalam tabel ada cuserid untuk identitas user sebagai penginput dan datetime sebagai waktu modify🙂
contoh kodingnya

letakkan di form.activate


thisform.grid1.RecordSource=''
lcconn="Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=E:\Bloqme\tipstrik\multiusermysql\data1.dbc;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
nch=SQLSTRINGCONNECT(lcconn)
lnr=SQLPREPARE(nch,"select * from barang;","cur_barang")
lnr=0
DO WHILE lnr=0
lnr=SQLEXEC(nch)
IF lnr<0
AERROR(laerror)
MESSAGEBOX(laerror[1,2],0,' ')
EXIT
ENDIF
ENDDO
=SQLDISCONNECT(nch)

SELECT cur_barang
thisform.lcbarang='B1'+DTOC(DATE())
SET FILTER TO SUBSTR(ALLTRIM(cbarang),1,12)=thisform.lcbarang
GO bott
IF EOF()
lccbarang=thisform.lcbarang+'-001'
ELSE
lccbarang=thisform.lcbarang+'-'+PADL(ALLTRIM(STR(VAL(RIGHT(ALLTRIM(cbarang),3))+1)),3,'0')
ENDIF
thisform.text1.Value=lccbarang

thisform.grid1.RecordSourceType= 1
thisform.grid1.RecordSource="cur_barang"

koding simpan


lcconn="Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=E:\Bloqme\tipstrik\multiusermysql\data1.dbc;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
nch=SQLSTRINGCONNECT(lcconn)
lcbarang=ALLTRIM(thisform.text1.Value)
lcnmbarang=ALLTRIM(thisform.text2.Value)
lcuserid='01'

TEXT TO lcsql NOSHOW TEXTMERGE PRETEXT 7
INSERT INTO barang(cbarang,cnmbarang,cuserid,dmodify)
values(?lcbarang,?lcnmbarang,?lcuserid,DATETIME())
ENDTEXT
=SQLEXEC(nch,lcsql)
=SQLDISCONNECT(nch)

saya tidak rekomendasikan anda pake cara ini, tanya kenapa??? hanya untuk pembelajaran saja, setelah itu juga saya belajar buffer dan transaction, cara ini saya ga pernah pake untuk aplikasi real, hanya untuk pengenalan SPT saja🙂

semoga sukses yaa semoga bermanfaat

2 Balasan ke [Trik]Multiuser dengan database Native(*.dbc/*.dbf)

  1. Subiyantoro Suparing mengatakan:

    2 Form diatas khan dijalankan di 1 kompi kalo 2 kompi pasti akan bentrok tuh kode barang. Sebab refresh kode barang ditaruh di activate. Misal komputer A dan komputer B buka form bersamaan no kode barang khan sama. Dan ketika mau simpan kode barang belum berubah sebab event Activate tidak dijalankan (untuk refresh kodebarang) ketika form sudah aktif

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: