บทที่ 5: เบื้องหลังข้อมูลชุดข้อมูล...
สถานะของส่วนแรกของข้อมูล
เมื่อพัฒนาแอปพลิเคชันฐานข้อมูลด้วย Delphi และ ADO งานส่วนใหญ่จะใช้เวลาศึกษาเอกสารช่วยเหลือสำหรับส่วนประกอบชุดข้อมูล - ในการสร้างโปรแกรมที่ใช้ ADO นั้น Delphi ได้จัดเตรียมส่วนประกอบชุดข้อมูลหลายอย่าง: TAdoTable, TAdoQuery และส่วนประกอบอื่นๆ ใช้เพื่อรับ นำเสนอ และแก้ไขข้อมูลจากตารางฐานข้อมูลหรือแบบสอบถาม
ในบทที่ 5 ของบทช่วยสอนนี้ เราจะได้ดูวิธีนำเสนอ เรียกดู และอ่านข้อมูลในทางปฏิบัติโดยแนะนำคุณสมบัติ เหตุการณ์ และวิธีการบางอย่างของส่วนประกอบชุดข้อมูลส่วนใหญ่ที่น่าสนใจ
เลือก ตั้งค่า เชื่อมต่อ และรับ
เมื่อคุณมาถึงบทที่ 5 แล้ว คุณควรจะคุ้นเคยกับขั้นตอนที่จำเป็นในการสร้างแบบฟอร์มฐานข้อมูล ในบทที่ 4 เราได้สร้างแบบฟอร์มการเรียกดูข้อมูลอย่างง่ายด้วยตนเอง บทนี้จะใช้เพื่ออภิปรายต่อไป
จนถึงขณะนี้ เราใช้ส่วนประกอบชุดข้อมูล (ADO) เพียงรายการเดียวเท่านั้น: TAdoTable สิ่งสำคัญคือต้องเข้าใจว่า TADOQuery และ TADODataSet (เป็นส่วนประกอบของชุดข้อมูล) ใช้การตั้งค่าเดียวกันสำหรับวิธีการและเหตุการณ์เดียวกัน
เปิดงา ปิดงา (เปิดงา ปิดงา)
หนึ่งในคุณสมบัติที่สำคัญมากของการพัฒนาฐานข้อมูล Delphi คือ Delphi ช่วยให้เราสามารถประมวลผลข้อมูลระหว่างการออกแบบโปรแกรมได้ คุณอาจจำได้ - ในบทที่แล้ว เราใช้คุณสมบัติ Active เพื่อเปิดการเชื่อมต่อที่ใช้งานกับข้อมูลในขณะออกแบบ
เข้าใจได้ไม่ยากว่าก่อนที่จะเริ่มประมวลผลข้อมูลในตารางนั้นโปรแกรมจะต้องเปิดชุดข้อมูลก่อน Delphi มีสองวิธีในการบรรลุฟังก์ชันนี้ อย่างแรกคือดังที่เราได้เห็นแล้วว่าคุณสมบัติ Active สามารถตั้งค่าเป็น True ได้ที่การออกแบบหรือรันไทม์ อย่างที่สองคือเราสามารถเรียกใช้เมธอด Open ขณะรันไทม์ได้ ตัวอย่างเช่น เพิ่มรหัสต่อไปนี้ลงในตัวจัดการเหตุการณ์ OnCreate ของแบบฟอร์มเพื่อรับข้อมูลของคอมโพเนนต์ ADOTable
ADOtable1.เปิด;
หมายเหตุ: ชุดข้อมูล ADO แต่ละชุดสามารถเข้าถึงข้อมูลฐานข้อมูลผ่านคุณสมบัติ ConnectionString ของตัวเองหรือส่วนประกอบ ADOConnection (และ ConnectionString ของมัน) หากส่วนประกอบ ADOTable1 เชื่อมต่อกับส่วนประกอบ ADOConnection1 (แนะนำวิธีนี้) การเปิด ADOTable จะเปิดใช้งานส่วนประกอบ ADOConnection ที่เกี่ยวข้อง ADOConnection มีสองเหตุการณ์ที่จะดำเนินการ: OnWillConnect และ OnConnectComplete
วิธีการ Open ตั้งค่าคุณสมบัติ Active เป็น True และเปิดใช้งานการเชื่อมต่อ เมื่อเราเชื่อมต่อเสร็จแล้ว เราสามารถตั้งค่าคุณสมบัติ Active เป็น False หรือเรียกใช้เมธอด Close เพื่อยกเลิกการเชื่อมต่อ โดยปกติแล้วเราจะเรียกวิธีการปิดในตัวจัดการเหตุการณ์ OnClose ของแบบฟอร์ม:
ADOTable1.ปิด;
ก่อนดำเนินการต่อ สิ่งสำคัญคือต้องรู้ว่าการทำงานกับวิธีการและคุณสมบัติของชุดข้อมูลนั้นขึ้นอยู่กับความรู้เกี่ยวกับสถานะปัจจุบันของข้อมูล พูดง่ายๆ ก็คือ คุณสมบัติสถานะของชุดข้อมูลจะกำหนดว่าการดำเนินการใดสามารถเกิดขึ้นหรือไม่สามารถเกิดขึ้นกับชุดข้อมูลได้ตลอดเวลา
เป็นอย่างไรบ้าง
หากชุดข้อมูลถูกปิด สถานะของข้อมูลจะแสดงการเชื่อมต่อที่ไม่ได้ใช้งาน เมื่อการเชื่อมต่อถูกปิด จะไม่สามารถดำเนินการ พฤติกรรม หรือวิธีการใด ๆ กับข้อมูลได้ เมื่อเราเปิดการเชื่อมต่อกับชุดข้อมูลเป็นครั้งแรก ชุดข้อมูลจะอยู่ในสถานะเรียกดูเริ่มต้น คุณควรทราบสถานะของข้อมูล "ของคุณ" เสมอ ตัวอย่างเช่น เมื่อเราเชื่อมต่อชุดข้อมูลกับ DBGrid ผู้ใช้สามารถดูชุดข้อมูลพื้นฐาน (หรือชุดระเบียน) ได้ แต่หากพวกเขาต้องการเปลี่ยนแปลงข้อมูลบางอย่าง พวกเขาจะต้องตั้งค่าสถานะเป็นแก้ไข
เมื่อโปรแกรมประมวลผลข้อมูล สิ่งสำคัญคือต้องเข้าใจว่าสถานะของชุดข้อมูลมีการเปลี่ยนแปลงอยู่ตลอดเวลา ตัวอย่างเช่น เมื่อเรียกดูข้อมูลใน DBGrid (สถานะการเรียกดู) ผู้ใช้จะเริ่มแก้ไขบันทึก และสถานะจะเปลี่ยนเป็นแก้ไขโดยอัตโนมัติ แน่นอนว่า เมื่อคุณสมบัติแก้ไขอัตโนมัติของตัวควบคุมการแสดงข้อมูล (DBGrid, DBEdit) ถูกตั้งค่าเป็น True นี่คือลักษณะการทำงานเริ่มต้น
แต่เราจะรับสถานะได้อย่างไร? ADOTable (หรือส่วนประกอบชุดข้อมูลอื่นๆ) ไม่มีทริกเกอร์ให้จัดการการเปลี่ยนแปลงสถานะ
มาดูกันดีกว่า: สำหรับแต่ละองค์ประกอบของชุดข้อมูล โดยทั่วไปเราจะใช้ส่วนประกอบ DataSource เพื่อแสดงการเชื่อมต่อกับตัวควบคุมการแสดงภาพข้อมูลตั้งแต่หนึ่งรายการขึ้นไป แค่นั้นแหละ.
ส่วนประกอบแหล่งข้อมูลแต่ละรายการมีเหตุการณ์ OnStateChange ซึ่งจะถูกทริกเกอร์เมื่อใดก็ตามที่สถานะของชุดข้อมูลพื้นฐานเปลี่ยนแปลง วางรหัสต่อไปนี้ในตัวจัดการเหตุการณ์ OnStateChange เพื่อแสดงสถานะปัจจุบันของส่วนประกอบชุดข้อมูล ADOTable1 โดยใช้ชื่อเรื่องของแบบฟอร์ม:
กระบวนการ TForm1.DataSource1StateChange (ผู้ส่ง: TObject);
var ds: สตริง ;
เริ่ม
กรณี ADOTable1.สถานะ ของ
dsInactive: ds:='ปิด';
dsBrowse: ds:='การเรียกดู';
dsEdit: ds:='กำลังแก้ไข';
dsInsert: ds:='การแทรกบันทึกใหม่';
อื่น
ds:='รัฐอื่นๆ'
จบ ;
คำบรรยายภาพ:='สถานะ ADOTable1: ' + ds;
จบ ;