หลายหลายวิธีแสดงข้อมูลด้วย 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

ความคิดเห็น