BMS-HOSxP Community

HOSxP => Admin tools => ข้อความที่เริ่มโดย: doramon ที่ กรกฎาคม 26, 2009, 11:27:36 AM

หัวข้อ: VFP 9 กับ mysql
เริ่มหัวข้อโดย: doramon ที่ กรกฎาคม 26, 2009, 11:27:36 AM
*เป็น 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.