1. ภาพรวม
ในฐานะที่เป็นเครื่องมือการพัฒนาอย่างรวดเร็วภายใต้ Windows Delphi ไม่เพียงแต่สามารถพัฒนาแอพพลิเคชั่น Windows ทั่วไปเท่านั้น แต่ยังมีฟังก์ชั่นการพัฒนาแอพพลิเคชั่นฐานข้อมูลที่ทรงพลังอีกด้วย Delphi เองให้การสนับสนุนไดรเวอร์ฐานข้อมูลหลายตัว เช่น BDE, ODBC, ADO และ InterBase ซึ่งสามารถตอบสนองความต้องการของแอปพลิเคชันต่างๆ สำหรับการพัฒนาโปรแกรมฐานข้อมูล
อย่างไรก็ตาม เมื่อเผยแพร่โปรแกรมฐานข้อมูลที่พัฒนาด้วย Delphi นอกเหนือจากการติดตั้งแอปพลิเคชันแล้ว คุณยังต้องเผยแพร่ไดรเวอร์ฐานข้อมูลในเวลาเดียวกันอีกด้วย ดูเหมือนว่าจะหนักไปหน่อยสำหรับแอปพลิเคชันแบบสแตนด์อโลนบางตัวที่เกี่ยวข้องกับการจัดเก็บข้อมูลในตารางธรรมดาเดียวหรือหลายตารางเท่านั้น นอกจากนี้ แอปพลิเคชันบางตัวจำเป็นต้องจัดเก็บข้อมูลจำนวนมาก แต่หากผลลัพธ์จำเป็นต้องสั้นและกระชับ วิธีการพัฒนาฐานข้อมูลแบบเดิมๆ โดยใช้ Delphi ก็ไม่สามารถตอบสนองความต้องการได้
ดังนั้นมีวิธีใดบ้างที่จะแก้ไขข้อขัดแย้งข้างต้นและพัฒนาแอปพลิเคชันฐานข้อมูลแบบสแตนด์อโลน "แบบบาง" ที่สามารถแยกออกจากไดรเวอร์ฐานข้อมูลขนาดใหญ่ได้ Delphi5 มีการควบคุม TClientDataSet ในแผงควบคุม Midas ซึ่งสามารถแก้ไขปัญหานี้ได้ดี
2. ประเด็นสำคัญสำหรับการใช้ TClientDataSet
ตัวควบคุม TClientDataSet สืบทอดมาจาก TDataSet และนามสกุลไฟล์รูปแบบการจัดเก็บข้อมูลคือ .cds ซึ่งเป็นการควบคุมตามการจัดเก็บข้อมูลและการดำเนินการประเภทไฟล์ การควบคุมนี้สรุปอินเทอร์เฟซและฟังก์ชันสำหรับการดำเนินงานและการประมวลผลข้อมูล และไม่ต้องอาศัยไดรเวอร์ฐานข้อมูลที่กล่าวมาข้างต้น โดยพื้นฐานแล้วสามารถตอบสนองความต้องการของแอปพลิเคชันฐานข้อมูล "thin" แบบสแตนด์อโลน
1. ข้อมูลเบื้องต้นเกี่ยวกับคุณสมบัติพื้นฐานและวิธีการของ TClientDataSet
1) FieldDefs: คุณสมบัติรายการคำจำกัดความของฟิลด์
นักพัฒนาสามารถแก้ไขฟิลด์ได้โดยคลิกปุ่มแก้ไขคุณสมบัติในตัวแก้ไขคุณสมบัติ หรือโดยการคลิกขวาที่ตัวควบคุมและเลือกเมนู "ตัวแก้ไขฟิลด์" ในเมนูป๊อปอัป หลังจากตั้งค่าคุณสมบัตินี้แล้ว จะเทียบเท่ากับการกำหนดโครงสร้างของตาราง หากคุณต้องการโหลดโครงสร้างและข้อมูลของตารางข้อมูลที่มีอยู่ คุณสามารถคลิกขวาและเลือกเมนู "กำหนดข้อมูลในเครื่อง" ในป๊อปอัป เมนูขึ้น ในกล่องโต้ตอบ ให้เลือกชื่อของตัวควบคุมชุดข้อมูลที่เชื่อมต่อกับฐานข้อมูลในรูปแบบปัจจุบัน (ต้องวางตัวควบคุมชุดข้อมูลที่จะใช้ในรูปแบบปัจจุบันและเปิดใช้งาน)
หมายเหตุเกี่ยวกับการใช้งาน:
สำหรับตารางชื่อฟิลด์ที่กำหนดเอง หลังจากแก้ไขคุณสมบัติแล้ว ตัวควบคุมยังคงไม่สามารถเปิดได้ คุณต้องคลิกขวาที่ตัวควบคุมและเลือกเมนู "สร้างชุดข้อมูล" ในเมนูป๊อปอัปเพื่อให้ตัวควบคุมสามารถสร้างชุดข้อมูลตามรายการฟิลด์ที่แก้ไขข้างต้นก่อนจึงจะสามารถเปิดใช้งาน เปิด และใช้งานได้ มิฉะนั้น ข้อผิดพลาดที่คล้ายกับ "ClientDataSet1: ไม่มีข้อมูล PRavider หรือแพ็กเก็ตข้อมูล" จะเกิดขึ้น (รวมถึงระหว่างรันไทม์ รันไทม์สามารถเรียกใช้เมธอด CreateDataSet ของตัวควบคุมเพื่อกำหนดเขตข้อมูลและตารางแบบไดนามิก)
2). FileNameProperty
คำอธิบาย: ชื่อของไฟล์จัดเก็บข้อมูล
เนื่องจากการควบคุมนี้เป็นการควบคุมการดำเนินการข้อมูลตามไฟล์ คุณต้องระบุชื่อของไฟล์ข้อมูลที่กำลังดำเนินการ (ชื่อนามสกุลเริ่มต้น .cds) เพื่อเปิดและเปิดใช้งานการควบคุมสำหรับการแก้ไขข้อมูล
ตัวอย่างที่ 1: ใช้คุณสมบัตินี้เพื่อเปิดไฟล์ .cds ที่ระบุ
var
เส้นทาง: สตริง;
เริ่ม
เส้นทาง := ExtractFilePath(application.ExeName); // รับเส้นทางไฟล์ปฏิบัติการ
CDataSet1.FileName := เส้นทาง + 'test.cds';
CDataSet1.Open;
จบ;
3). วิธีการ CreateDataSet
คำอธิบาย: วิธีการนี้ใช้ตารางชื่อฟิลด์ใน FieldDefs เป็นโครงสร้างเพื่อสร้างชุดข้อมูล ซึ่งมักใช้เพื่อกำหนดตารางแบบไดนามิก
ตัวอย่างที่ 2: สร้างชุดข้อมูลแบบไดนามิกที่มีสองฟิลด์: ชื่อและอายุ
//สร้างตารางชื่อฟิลด์
CDataSet.FieldDefs.ล้าง;
ด้วย CDataSet.FieldDefs.AddFieldDef ทำ
เริ่ม
ชื่อ := 'ชื่อ';
ขนาด := 10;
ประเภทข้อมูล := ftString;
จบ;
ด้วย CDataSet.FieldDefs.AddFieldDef ทำ
เริ่ม
ชื่อ := 'อายุ';
ประเภทข้อมูล := ftInteger;
จบ;
//สร้างชุดข้อมูลแบบไดนามิก
CDataSet.CreateDataSet;
//เปิดใช้งานและเปิดชุดข้อมูล
CDataSet.Open;
4) . วิธีการเปิด
คำอธิบาย: เปิดและเปิดใช้งานการควบคุมชุดข้อมูลสำหรับการแก้ไขข้อมูล
ก. หากมีการระบุแอตทริบิวต์ FileName ไว้ จะสามารถเปิดและเปิดใช้งานการควบคุมได้โดยตรงโดยใช้วิธีการ Open โปรดดูตัวอย่างที่ 1
ข หากไม่ได้ระบุแอตทริบิวต์ FileName คุณสามารถใช้วิธีการในตัวอย่างที่ 2 เพื่อสร้างและเปิดชุดข้อมูลแบบไดนามิกแล้วจัดการข้อมูล
5). LoadFromFile และ SaveToFile
คำอธิบาย: โหลดโครงสร้างตารางและข้อมูลจากไฟล์และจัดเก็บข้อมูลลงในไฟล์ วิธีนี้คล้ายกับฟังก์ชัน Open New File และ Save As ใน Word
ตัวอย่างที่ 3: เก็บข้อมูลของชุดข้อมูลลงในไฟล์ที่ระบุ
CDataSet.SaveToFile('c:/windows/desktop/test.cds');
6).อันดับแรก (ไปยังจุดเริ่มต้น), ก่อนหน้า (ไปข้างหน้า), ถัดไป (ย้อนกลับ), สุดท้าย (ไปยังจุดสิ้นสุด), แก้ไข (แก้ไข), CanCel (ยกเลิกการแก้ไข), โพสต์ (บันทึก), แทรก (แทรกบันทึก), ผนวก (เพิ่มบันทึก), ลบ (ลบ), รีเฟรช (รีเฟรชข้อมูล) และวิธีการทั่วไปอื่นๆ ของชุดข้อมูล
หมายเหตุ: เมื่อระบุแอตทริบิวต์ FileName วิธีการ Post จะสามารถจัดเก็บข้อมูลในไฟล์ที่ระบุได้ คล้ายกับวิธี SaveToFile หากไม่ได้ระบุชื่อไฟล์หน่วยเก็บข้อมูล วิธีการ Post จะเก็บข้อมูลใน RAM เท่านั้น วิธีการอื่นๆ จะเหมือนกับการใช้การควบคุมชุดข้อมูลทั่วไป แต่ละไว้
7).Filter, Filtered: คุณสมบัติการกรอง
คำอธิบาย: ใช้เพื่อกรองบันทึกที่มีเงื่อนไขที่ระบุ การใช้งานจะเหมือนกับการควบคุมชุดข้อมูลทั่วไป ซึ่งละไว้
ตัวอย่างที่ 4: กรองบันทึกที่มีเพศชายในชุดข้อมูลที่เปิดใช้งานและเปิด
CDataSet ปิด;
CDataSet.Filter := 'เพศ='''' + 'ชาย' + '''';
CDataSet.Filtered := จริง;
CDataSet.Open;
2. หมายเหตุสำหรับการเผยแพร่แอปพลิเคชันโดยใช้ตัวควบคุม TClientDataSet:
ตามที่กล่าวไว้ก่อนหน้านี้ โปรแกรมที่ใช้ตัวควบคุม TClientDataSet ไม่จำเป็นต้องใช้ไดรเวอร์ฐานข้อมูลใดๆ เมื่อเผยแพร่ ซึ่งจะช่วยประหยัดขนาดของไฟล์การติดตั้งได้อย่างมาก อย่างไรก็ตาม เมื่อเผยแพร่โปรแกรม อย่าลืมเผยแพร่ midas.dll (257KB) ในไดเร็กทอรีระบบ Windows พร้อมกับแอปพลิเคชัน (จำเป็นสำหรับการดำเนินการ) ไม่เช่นนั้นโปรแกรมจะยังคงทำงานไม่ปกติ
3. บทสรุป
ด้วยการใช้ตัวควบคุม TClientDataSet ใน Delphi แอปพลิเคชันสามารถแยกออกจากไดรเวอร์ฐานข้อมูลได้อย่างสมบูรณ์ และยังสามารถรับรู้ถึงคุณลักษณะที่เรียบง่ายและใช้งานง่ายของการควบคุมชุดข้อมูลแบบเดิมได้ โดยให้วิธีการทางเทคนิคและวิธีการเขียนแบบ "thin" แอปพลิเคชันฐานข้อมูล
โปรแกรมข้างต้นได้รับการทดสอบภายใต้ Pwindows98 และ Delphi5