04 สิงหาคม 2558

การสร้าง VFP COM Object

พอดีเพื่อนๆ ที่ได้เขียนโปรแกรม VFP มีการนำเสนอ โปรเจกต์ พิมพ์รายงานของ VFP ผ่านทาง ASP และ ASP.net เลยทำให้อยากทำบ้าง ดังนั้นก็เป็นที่มาของวิธีการสร้าง VFP COM Object ขึ้นมาเพื่อจะได้ทำให้ VFP โลดแล่นอยู่บนเว็บบ้าง

การสร้าง VFP COM Object
1. เปิดโปรแกรม VFP (ตอนเปิดให้คลิกเมาส์ปุ่มขวา แล้วเลือก Run as Administrator) จากนั้นพิมพ์คำสั่งที่ Command Window
      MODIFY COMMAND myclass.prg

2. ทำการป้อนคำสั่งดังนี้
** คำสั่งได้มาจากเว็บ -> http://www.tek-tips.com/faqs.cfm?fid=3381

DEFINE CLASS myclass AS session OLEPUBLIC

PROCEDURE MyDoCmd(cCmd as String) as Variant ;
helpstring "Execute a VFP cmd"
&cCmd && just execute parm as if it were a fox command

FUNCTION MyEval(cExpr as String) ;
helpstring "Evaluate a VFP expression"
RETURN &cExpr && evaluate parm as if it were a fox expr

FUNCTION Error(nError, cMethod, nLine)
COMreturnerror(cMethod+' err#='+str(nError,5)+;
' line='+str(nline,6)+' '+message(),_VFP.ServerName)
&& this line is never executed

ENDDEFINE


ทำการบันทึก โดยกดปุ่ม Ctrl + W

3. ทำการ build dll เพื่อสร้าง .dll โดยพิมพ์คำสั่งที่ Command Window

BUILD PROJECT myserver FROM myclass

BUILD DLL myserver from myserver recomp

หากไม่เกิดข้อผิดพลาดใดๆ เป็นอันเสร็จ ก็จะได้ไฟล์ชื่อ myserver.dll เรียบร้อย
ทำการทดสอบว่า ไฟล์ dll และคำสั่งที่สร้างขึ้น ใช้ได้หรือไม่ โดยพิมพ์คำสั่งที่ Command Window

ox = CREATEOBJECT("myserver.myclass")

?ox.myeval("DATE()")


หากขึ้นวันที่บนหน้าจอแสดงว่า สำเร็จเรียบร้อย
ก็สามารถนำเอา myserver.dll ไปใช้ได้

สำหรับการเรียกใช้ใน asp.net ก็ให้ไปที่เมนู PROJECT เลือกรายการ Add Reference
จะเข้าสู่หน้าต่าง Reference Manage ให้คลิกเลือกที่ COM -> Type Libraries แล้วหาไฟล์ myserver.dll ที่เราสร้างขึ้น แล้วคลิกเลือก

ส่วนการเขียนคำสั่ง ใน ASP.Net เช่น ที่ Form -> Load

Dim oVFP As New myserver.myclass
Dim nRecno As Integer
Response.Write(oVFP.MyEval("time()"))

oVFP.MyDoCmd("USE c:\customer")

While oVFP.MyEval("!EOF()")
    nRecno = nRecno + 1
    Response.Write(nRecno)
    Response.Write(oVFP.MyEval("code"))
    Response.Write(oVFP.MyEval("name"))

    oVFP.MyDoCmd("SKIP")

End While

oVFP.MyDoCmd("USE IN customer")


สำหรับคำสั่งต่างๆ ที่เหลือก็ทดสอบดู หรือนำไปประยุกต์ตามต้องการ

หากต้องการนำไฟล์ myserver.dll ไปใช้งานกับเครื่องที่ไม่ได้ติดตั้งโปรแกรม Visual FoxPro ต้องทำการติดตั้้ง Runtime ของ Visual FoxPro ไปแทน


สวัสดี   /:-{)

ไม่มีความคิดเห็น:

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.