admin
Referensi Visual Foxpro
05/16/2009
Untuk mengkonversikan tabel DBF ( tabel visual foxpro ) ke Tabel MySql dapat dilakukan dengan source code di bawah ini :
NamaTabelDbf=ALLTRIM(thisform.text1.Value)
USE (NamaTabelDbf) ALIAS AliasTabel SHARED
NamaTabelMysql=RIGHT(NamaTabelDbf,LEN(NamaTabelDbf)-RAT(“”,NamaTabeldbf))
NamaTabelMysql=LEFT(NamaTabelMysql,AT(“.”,NamaTabelMySql)-1)
JumFieldSumber=AFIELDS(FieldSumber,”AliasTabel”)
DIMENSION TypeSumber(JumFieldSumber)
MySqlCreate=”CREATE TABLE “+NamaTabelMysql+”(”
**********Konversi Tipe Data DBF ke MySQL*********************
FOR i=1 TO JumFieldSumber
LebarField=ALLTRIM(STR(fsize(FIELD(i))))
FieldSumber(i)=LOWER(FIELD(i))
DO CASE
CASE TYPE(FIELD(i))=”N” && Numeric
TypeSumber(i)=”INT(“+LebarField+”)”
CASE TYPE(FIELD(i))=”C” && Character
TypeSumber(i)=”VARCHAR(“+LebarField+”)”
CASE TYPE(FIELD(i))=”D” && Date
TypeSumber(i)=”DATE”
CASE TYPE(FIELD(i))=”L” && Logical
TypeSumber(i)=”CHAR (1)”
OTHERWISE
MESSAGEBOX(“Maaf…tipe data tidak kompatibel hanya tipe N,C,D,L”)
RETURN
ENDCASE
MySqlCreate=MysqlCreate+FieldSumber(i)+” “+TypeSumber(i)+” NOT NULL,”
ENDFOR
MySqlCreate=LEFT(MySqlCreate,LEN(MySqlCreate)-1)+”)”
StatusExec=SQLEXEC(KoneksiMySql,(MySqlCreate))
IF StatusExec <0
MESSAGEBOX(“Eksekusi Script Create Table ada kesalahan”)
RETURN
ENDIF
JumRekAlias=RECCOUNT(“AliasTabel”) && Hitung Jumlah Rekord DBF Sumber
DO WHILE ! EOF(“AliasTabel”)
MySQLInsert=”INSERT INTO “+NamaTabelMysql+”(”
**************************Membuat Perintah “INSERT INTO nama_tabel(Field1..FieldN)”
FOR j=1 TO JumFieldSumber
MySQLInsert=MySQLInsert+FieldSumber(j)+”,”
ENDFOR
MySqlInsert=LEFT(MySqlInsert,LEN(MySqlInsert)-1)+”) VALUES(”
FOR j=1 TO JumFieldSumber
IsiFieldDbf=&FieldSumber(j)
DO CASE
CASE VARTYPE(IsiFieldDbf)=”N”
IsiFieldDbf=ALLTRIM(STR(IsiFieldDbf))
CASE VARTYPE(IsiFieldDbf)=”C”
IsiFieldDbf=IsiFieldDbf
CASE VARTYPE(IsiFieldDbf)=”D”
IsiFieldDbf=TRANSFORM(DTOS(IsiFieldDbf),”;@r 9999-99-99″)
CASE VARTYPE(IsiFieldDbf)=”L”
IsiFieldDBF=IIF(IsiFieldDbf=.F.,”F”,”T”)
OTHERWISE
MESSAGEBOX(“Maaf…tipe data tidak kompatibel hanya tipe N,C,D,L”)
CLOSE DATABASES
RETURN
ENDCASE
MySQLInsert=MySQLInsert+'”‘+IsiFieldDbf+'”‘+”,”
ENDFOR
MySqlInsert=LEFT(MySqlInsert,LEN(MySqlInsert)-1)+”)”
thisform.edit1.Value=mysqlinsert
StatusExec=SQLEXEC(KoneksiMysql,(MySqlInsert)) && Eksekusi Perintah MySQL
IF StatusExec <0
MESSAGEBOX(“Eksekusi Script Insert ada kesalahan”)
CLOSE DATABASES
RETURN
ENDIF
SKIP IN (“AliasTabel”)
****************Progress Bar ********************************************
thisform.xpprogressbar1.curval=ROUND(recno(“AliasTabel”)/JumRekAlias,2)*100
ThisForm.lblpersen.caption=ALLTRIM(STR(ROUND(recno;
(“AliasTabel”)/JumRekAlias,2)*100))+”%”
ENDDO
CLOSE DATABASES
http://www.erlangga.net/forum/viewtopic.php?t=8&sid=5c5f23721a08fddd584520ddc31f1be2