Udah tau GUID? Kalau belum, silahkan jalan-jalan ke situs wiki mengenai GUID . Selanjutnya, pernah kepikir gak untuk menggunakan GUID di aplikasi foxpro for DOS? He-he-he... sekarang, triknya; gimana caranya aplikasi DOS bisa bikin GUID? Jawabnya; susah! Harus ambil mac address, bikin random number sesuai dengan algoritma GUID.... wah.. repot deh... Waktu kemarin ini saya memulai project saya, sempet bingung juga tuh.... Tapi untung selalu ada solusi kalau mau sedikit ngulik. Awalnya, saya bikin program kecil ini dengan VFP:
Set talk offLalu, file tersebut (yang berisi 100,000 GUID) dalam format Fox2x - dengan size sekitar 3.5meg - saya copy-kan ke folder data aplikasi FPD26 saya. Nah.. sekarang saya punya 100,000 GUID yang siap pakai. Untuk aplikasi saya, ini adalah jumlah yang jauh dari cukup untuk transaksi satu hari di satu komputer. Karena GUID selalu unik, kalaupun saya men-generate 10 file GUID untuk 10 komputer, dijamin tidak akan ada GUID yang sama (asal jangan satu file GUID yang sama di-copy ke dua komputer!). Nah, pada saat aplikasi DOS memerlukan Primary key, tinggal ambil data dari guid. Paling gampang, ambil aja field pertama. Setelah ambil, langsung hapus. Jadi field itu tidak akan bisa dipakai lagi.
Declare Integer CoCreateGuid In Ole32.Dll ;
string @lcGUIDStruc
Declare Integer StringFromGUID2 In Ole32.Dll ;
STRING cGUIDStruc, ;
STRING @cGUID, ;
LONG nSize
lcFilename = putfile("File &name:", "", "DBF")
if !empty(lcFilename)
Create cursor [xGuid] (guid c(36))
For i = 1 to 100000
Insert into [xGuid] ;
Values (NewGuid())
if i%100 = 0
wait transform(i) window nowait
endif
Endfor
Select [xGuid]
Copy to (lcFilename) type FOX2X
Messagebox("Done", 64, "Generate GUID")
endif
*----------------------------------------------------------------------------
* Function : NewGuid
* Entry with : none
* Return with : A valid 36-chars GUID value
*----------------------------------------------------------------------------
Function NewGuid
local lcStruc_GUID
local lcGUID
local lnSize
lcStruc_GUID = Space(16)
lcGUID = Space(80)
lnSize = 40
If CoCreateGuid(@lcStruc_GUID) = 0 And ;
StringFromGUID2(lcStruc_GUID,@lcGUID,lnSize) <> 0
lcGUID = Substr( Strconv(Left(lcGUID,76),6), 2, 36 )
Else
lcGUID = .F.
Endif
Return lcGUID
Endfunc
Mungkin Anda bertanya sekarang, "Untuk apa menggunakan GUID di aplikasi DOS?" Nah... tujuannya, supaya kalau data hasil transaksi di aplikasi DOS itu ditarik ke SQL Server, maka kita tidak perlu lagi mengatur primary key-foreign key. Primary key dan foreign key tinggal pakai dari data asli saja. Toh tidak akan konflik. "Gimana kalau semua GUID di file dictionary-nya terpakai semua?" Yah, jangan sampai terpakai semua dong... Setiap hari isi aja dictionary dengan data GUID baru. Jadi GUID yang ada gak pernah kurang.
"Memangnya ini aplikasi apa sih? Kegunaannya untuk apa? Cara koneksi ke SQL Server-nya gimana?" He-he-he.... saya belum bisa sharing sekarang, karena selain ceritanya panjang, informasi itu juga sekarang masih 'classified' alias rahasia perusahaan... Jadi ide ini saya lemparkan karena untuk saya, ini adalah raw idea alias ide mentah. Aplikasinya? Silahkan berkreasi sendiri.... :)
6 comments:
Nice Post , Thanks
Gan.. ane mau nanya cara mengedit file *.DTA lwat Foxpro for DOS gimana?
File *.DTA ini database, isinya dah ribuan jd aksesnya lama... gimana cara menghapus sebagian isi-nya???
trims infonya
tolong kirim petunjuknya ke email ane sh_inos@yahoo.com
Butuh bgnet pencerahannya gan.. tolong ya
master ad ngerti decompile aplikasi clipper gk?
master ad ngerti decompile aplikasi clipper gk?
Post a Comment