หลายหลายวิธีแสดงข้อมูลด้วย Grid

หลักการนำข้อมูลจากฐานข้อมูลต่างๆแสดงในกริด (Grid) โดยทั่วไปคือ เลือกช่วงข้อมูลจากฐานข้อมูลด้วยคำสั่ง SELECT SQL เก็บไว้ในเคอร์เซอร์ (Cursor) ชั่วคราวก่อน หลังจากนั้นก็นำเคอร์เซอร์ดังกล่าวไปใส่ในกริด โดยระบุชื่อเคอร์เซอร์ดังกล่าวใน RecordSource Property ของกริดเท่านั้นเอง แต่เนื่องจากวิชวลฟอกซ์โปรมีความสามารถในการติดต่อกับฐานข้อมูลได้หลากหลาย ดังนั้นหลายท่านจึงมักสับสนว่า ควรใช้งานเมื่อไร อย่างไร สรุปให้ง่ายๆก็คือ ให้ท่านเลือกใช้ตามความชอบและความถนัดของท่าน

ตัวอย่าง แสดงรายชื่อพนักงานจากฐานข้อมูลตัวอย่าง Tastrade ใน Grid

1 Native

ใช้กับไฟล์ฐานข้อมูลของฟอกส์โปรโดยตรง ให้ดูประโยคคำสั่ง SELECT... INTO CURSOR

2 SQL-Passthru (SPT ผ่าน ODBC)

ใช้กับฐานข้อมูลอะไรก็ได้ผ่าน ODBC ให้ดูประโยคคำสั่ง =SQLEXEC( "SELECT....", "Cursor" )

ประโยคการเชื่อมต่อกับฐานข้อมูลต่างๆ

* DSN 
cStrConn = "DSN=..." 

* VFP-DBF        
cPath = HOME(2) + "Tastrade\Data\"
cStrConn = "Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=" + cPath

* VFP-DBC
cPath = HOME(2) + "Tastrade\Data\tastrade.dbc"
cStrConn = "Driver={Microsoft Visual Foxpro Driver}";SourceType=DBC";SourceDB=" + cPath

* MSAccess
cPath = "C:\Program Files\Microsoft Office\Office11\Samples\Northwind.mdb"
 cStrConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + cPath

* MSSQL
cStrConn = "Driver={SQL Server};Server=localhost;Uid=sa;Pwd=;Database=northwind;"        

* MySQL
cStrConn = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Uid=root;Pwd=;Database=sample;"

* PostgreSQL
cStrConn = "Driver={PostgreSQL};Server=localhost;Uid=postgres;Pwd=;Database=sample;"

3. CursorAdapter (CA)

ใช้กับฐานข้อมูลอะไรก็ได้ไม่จำกัด ให้ดู PEM ของออบเจ็กต์ CursorAdapter ใน Help

ca = CreateObject("CursorAdaper")  or NewObject("CursorAdapter")
ca.DataResorceType : Native, ODBC ,ADO,  XML
ca.Alias = "c_data"
ca.CursorFill()

3.1 CA-Native

ใช้กับฐานข้อมูลของฟอกส์โปรเท่านั้น

3.2 CA-ODBC

ใช้กับฐานข้อมูลอะไรก็ได้ที่มี ODBC Driver ดูวิธี Connection เรื่อง SPT ข้างต้น

3.3 CA-ADO

ใช้กับฐานข้อมูลอะไรก็ได้ที่มี OLEDB Provider (ถ้าไม่ระบุ Provider จะหมายถึง Provider=MSDASQL หรือผ่าน ODBC Driver)

ประโยคการเชื่อมต่อกับฐานข้อมูลต่างๆ

OLEDB Provider for ODBC =======================================================

* Default = "Provider=MSDASQL;Driver={ODBC};"

* VFP-DBF        
cPath = HOME(2) + "Tastrade\Data\"
cStrConn = "Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=" + cPath

* VFP-DBC
cPath = HOME(2) + "Tastrade\Data\tastrade.dbc"
cStrConn = "Driver={Microsoft Visual Foxpro Driver};SourceType=DBC;SourceDB=" + cPath

* MSAccess
cPath = "C:\Program Files\Microsoft Office\Office11\Samples\Northwind.mdb"
cStrConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + cPath

* MSSQL
cStrConn = "Driver={SQL Server};Server=localhost;Uid=sa;Pwd=;Database=northwind;"        

* MySQL
cStrConn = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Uid=root;Pwd=;Database=sample;"

* PostgreSQL
cStrConn = "Driver={PostgreSQL};Server=localhost;Uid=postgres;Pwd=;Database=sample;"

OLEDB Provider ================================================================

* VFP
cPath = HOME(2) + "Tastrade\Data\tastrade.dbc"
cStrConn = "Provider=vfpoledb;Data Source=" + cPath

* MSAccess
cPath = "C:\Program Files\Microsoft Office\Office11\Samples\Northwind.mdb"
cStrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cPath

* MSSQL (SQL-Server)
cStrConn = "Provider=SQLOLEDB;Data Source=localhost;User ID=sa;Initial Catalog=nortwind;"

===============================================================================

- หรือ -

3.4 CA-XML

ใช้กับข้อมูลอะไรก็ได้ที่จัดเก็บอยู่ในรูปแบบ XML

ตัวอย่าง คิวรี่ข้อมูล dbf เก็บเป็นไฟล์ xml

cPath = HOME(2) + "Tastrade\Data\tastrade.dbc"
OPEN DATABASE (cPath)

SELECT country,COUNT(*) AS cnt ;
 FROM customer ;
 GROUP BY country ;
 INTO CURSOR c_data

cFile = "c_data.xml"

CURSORTOXML(0, cFile, 1, 512, 0, "1")

หรือ

xa = CREATEOBJECT("XMLAdapter")
xa.AddTableSchema("c_data")
xa.ToXML(cFile, , .T.) 

ตัวอย่าง อ่านข้อมูลจากไฟล์ xml ใส่กริดโดยใช้ CursorAdapter

หมายเหตุ - อ่านไฟล์ xml เข้าเคอร์เซอร์โดยตรง ดูคำสั่ง XMLTOCURSOR() และ XMLAdapter.ToCursor()


เทคนิคการเขียนคำสั่งกับออบเจ็กต์ (เฉพาะ VFP 8 และ 9 เท่านั้น)

  1. เลือกเมนู Tools | Intellisense Manager กำหนดให้ใช้งาน Intellisense พิมพ์จุดแสดง PEM ของออบเจ็กต์
  2. ประกาศตัวแปร PUBLIC, PRIVATE, LOCAL ของตัวแปรออบเจ็กต์ที่ต้องการ

PUBLIC cn AS ADODB.Connection
PUBLIC rs AS ADODB.Recordset
PUBLIC ca AS CursorAdapter
PUBLIC xa AS XMLAdapter

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

FAQ: Visual Foxpro Runtime Error

คำสั่ง Transaction ใน Visual Foxpro