*เป็น function ไว้ส่งข้อมูล-updateข้อมูล ตารางใน MySQL ปกติผมจะ select ตารางเปล่าๆ จาก ฐาน MySQL แล้ว นำไปรับค่าตัวแปร หลังจากนั้นก็ใช้ ฟังก์ชันนี้ส่งเข้า หรือ Update ในฐานของ MySQL จะช่วยให้การเขียน code สั้นขึ้น โดยเฉพาะตัวแปรที่มีเยอะๆจะสะดวกมากครับ เผื่อจะเป็นประโยชน์กับคนอื่นๆ บ้าง
FUNCTION INSERTTOTABLEMYSQL
LPARAMETERS cAlias,cTable,chk
*cAlias=ชื่อ cursor
*cTable=ชื่อตารางใน MySQL
*chk=ค่า connecttion
PRIVATE i,a,cSql,c1,c2,cf
SELECT (cAlias)
nlen=AFIELD(a)
c1=""
c2=""
FOR i=1 TO nlen
cf=LOWER(A(i,1))
c1=c1+cf+","
c2=c2+"?"+cf+","
ENDFOR
c1=SUBSTR(c1,1,LEN(c1)-1)
c2=" ( "+SUBSTR(c2,1,LEN(c2)-1)+" )"
cSql="INSERT INTO "+cTable+" ( "+c1+" ) VALUES "+LTRIM(c2)
IF SQLEXEC(chk,cSql)=-1
WAIT WINDOW "Not...Insert to table "+cTable NOWAIT &&TIMEOUT 1
RETURN .F.
ENDIF
RETURN .T.
อันนี้ใช้สำหรับ UPDATE
FUNCTION UPDATETABLEMYSQL
LPARAMETERS cAlias,cTable,chk,cCriteria
*cAlias=ชื่อ cursor
*cTable=ชื่อตารางใน MySQL
*chk=ค่า connecttion
*cCriteria=เงื่อนไขในการ Update
PRIVATE i,a,cSql,c1,c2,cf
SELECT (cAlias)
nlen=AFIELD(a)
c1=""
c2=""
FOR i=1 TO nlen
cf=LOWER(A(i,1))
c1=c1+cf+"=?"+cf+","
ENDFOR
c1=SUBSTR(c1,1,LEN(c1)-1)
IF !EMPTY(cCriteria)
cSql="UPDATE "+cTable+" SET "+c1+" WHERE "+cCriteria
ELSE
cSql="UPDATE "+cTable+" SET "+c1
ENDIF
IF SQLEXEC(chk,cSql)=-1
WAIT WINDOW "Not...Update table "+cTable NOWAIT
RETURN .F.
ENDIF
RETURN .T.