ผู้เขียน : เกา ซูเหมย
วิธีง่ายๆ ในการกำหนดค่ากลไกข้อมูล (BDE, SQL Link)
เมื่อมีการกระจายโปรแกรมฐานข้อมูล จะต้องดำเนินการกลไกข้อมูล (BDE, SQL Link) และหลังจากติดตั้งโปรแกรมบนไคลเอนต์แล้ว จะต้องกำหนดค่ากลไกข้อมูล เช่น ชื่อผู้ใช้ (ชื่อผู้ใช้) รหัสผ่าน (รหัสผ่าน) ฯลฯ หากจำเป็นต้องมีการกำหนดค่าด้วยตนเอง ปริมาณงานจะค่อนข้างใหญ่ ในขณะนี้ เราสามารถใช้ InstallShield For Delphi เพื่อใช้งานการกำหนดค่าได้อย่างง่ายดาย เมื่อใช้ InstallShield For Delphi เพื่อสร้างโปรแกรมการติดตั้ง จะมีไฟล์ข้อความ *.iwz ในไดเร็กทอรีที่สร้างโปรแกรมการติดตั้ง คุณจะต้องเพิ่มไฟล์ดังกล่าวลงในส่วน [IDAPI Alias] ด้วยตนเองเท่านั้น ตัวอย่างเช่น:
[นามแฝง IDAPI]
ชื่อผู้ใช้=SYSDBA
รหัสผ่าน=มาสเตอร์คีย์
หลังจากติดตั้งโปรแกรมแล้ว data engine จะถูกกำหนดค่าโดยอัตโนมัติ
วิธีทำแถบปุ่มอย่างรวดเร็ว
ปุ่มกราฟิกแต่ละปุ่มบนแถบปุ่มด่วนแสดงถึงฟังก์ชันที่ใช้กันทั่วไป ขณะเดียวกัน ขนาดของปุ่มกราฟิกเหล่านี้ก็มีขนาดใหญ่กว่าไอคอนทั่วไป สามารถวางกราฟิกที่ใหญ่ขึ้นและสดใสยิ่งขึ้นได้ และยังสามารถแนบข้อความแจ้งสั้นๆ ได้อีกด้วย มีประโยชน์มากสำหรับ เป็นประโยชน์สำหรับผู้ใช้ในการทำหน้าที่ต่างๆ ที่ใช้บ่อยที่สุด ด้วยเหตุผลข้างต้น แอปพลิเคชัน Windows จำนวนมากขึ้นจึงนำแถบปุ่มด่วนมาใช้เพื่อปรับปรุงอินเทอร์เฟซของแอปพลิเคชัน เมื่อเขียนโปรแกรมใน Delphi ผู้เขียนจะใช้สองวิธีที่แตกต่างกันเพื่อใช้แถบปุ่มด่วน บทความนี้รวมตัวอย่างการสร้างแถบปุ่มด่วนด้วยสองกลุ่มจากหกปุ่ม และแสดงรายการขั้นตอนการออกแบบเฉพาะของทั้งสองวิธี
1. วิธีการสร้างแบบผสมผสาน
(1) วางวัตถุ Panel1 บนแบบฟอร์มเป็นพาหะของปุ่มกราฟิก
(2) ตั้งค่าแอตทริบิวต์คำอธิบายภาพของ Panel1 ให้ว่าง จัดแอตทริบิวต์ AlTop และปรับความสูงให้มีขนาดที่เหมาะสม
(3) วางปุ่ม SpeedButton หกปุ่มบน Panel1 (ปุ่ม SpeedButton ถูกเลือกเนื่องจากมีลักษณะลอยตัว)
(4) วางวัตถุ Bevel สองตัวบน Panel1 และปรับตำแหน่งและขนาดเพื่อแยกกลุ่มปุ่ม
(5) ปรับขนาดและตำแหน่งของ SpeedButton1 ใน Panel1
(6) เลือก SpeedButton1 และตั้งค่าคุณสมบัติ Flat เป็น True
(7) คลิกปุ่มจุดไข่ปลาเล็กๆ ที่ตรงกับแอตทริบิวต์ Glyph ของ SpeedButton1 เปิดหน้าต่าง PictureEditor และเลือกไอคอนที่แสดงถึง "query" ตั้งค่าคุณสมบัติ ShowHint เป็น True และคุณสมบัติ Hint เป็น "Query"
(8) ทำตามขั้นตอน (5) ถึง (7) เพื่อตั้งค่าคุณสมบัติของปุ่ม SpeedButton ที่เหลือ
ด้วยวิธีนี้ แถบปุ่มด่วนจึงเสร็จสมบูรณ์ เมื่อทำงาน ปุ่มด่วนจะแสดงในลักษณะลอยตัว เมื่อเลื่อนเมาส์ไปเหนือปุ่มเหล่านั้น โครงร่างของปุ่มจะปรากฏขึ้นและข้อความแจ้งเตือนเล็กๆ จะปรากฏขึ้น
2. ยืมวิธีการสร้าง ToolBar
(1) วางวัตถุ ToolBar1 บนแบบฟอร์ม
(2) ตั้งค่าคุณสมบัติ EdgeBorders.ebLeft, ebTop, ebRight และ ebButtom ของ ToolBar1 เป็น True; ปรับขนาดของ ToolBar1 ให้เป็นขนาดที่เหมาะสม
(3) เลือก ToolBar1 คลิกขวาที่เมนูด่วน คลิก NewButton และ NewSeparator ตามลำดับเพื่อเพิ่มปุ่ม ToolButton หกปุ่มและบรรทัดตัวคั่นสองบรรทัด
(4) เลือกปุ่ม ToolButton ใด ๆ และปรับขนาดให้มีขนาดที่เหมาะสม ToolButtons ทั้งหมดจะถูกปรับในเวลาเดียวกัน
(5) ตั้งค่าคุณสมบัติ BorderWidth ของ ToolBar1 เป็น 3 เพื่อปรับตำแหน่งของ ToolButton
(6) วางวัตถุ ImageList1 บนแบบฟอร์มและตั้งค่าคุณสมบัติความสูงและความกว้างเพื่อรองรับรูปภาพขนาดใหญ่ขึ้น
(7) ดับเบิลคลิก ImageList1 และโหลดรูปภาพหกภาพตามลำดับโดยใช้ปุ่ม "เพิ่ม" ซึ่งสอดคล้องกับปุ่ม ToolButton ทั้งหกปุ่มใน ToolBar1
(8) ตั้งค่าคุณสมบัติ Images of ToolBar1 เป็น ImageList1
(9) ตั้งค่าแอตทริบิวต์ ShowHint ของ ToolButtons ทั้งหกปุ่มเป็น True และตั้งค่าแอตทริบิวต์คำแนะนำขนาดเล็กตามลำดับ
(10) คุณยังสามารถตั้งค่า HotImages ของ ToolBar1 เพื่อระบุชุดรูปภาพเมื่อเมาส์ชี้ไปที่ปุ่ม
แถบปุ่มด่วนที่ใช้งานโดยใช้ ToolBar มีลักษณะคล้ายกับแถบที่สร้างโดยวิธีแรก
ทั้งสองวิธีข้างต้นสามารถใช้แถบปุ่มด่วนได้ แต่แต่ละวิธีก็มีข้อดีของตัวเอง: กระบวนการออกแบบแรกนั้นค่อนข้างง่าย วิธีที่สองมีฟังก์ชันเพิ่มเติม เช่น การใช้ HotImages เพื่อระบุชุดรูปภาพเมื่อเมาส์ชี้ไปที่ปุ่ม . ผู้อ่านอาจต้องการเลือกหนึ่งรายการและปรับปรุงฟังก์ชันต่อไป
วิธีสร้างตารางชั่วคราว
การป้อนข้อมูลเป็นส่วนที่หลีกเลี่ยงไม่ได้ในการพัฒนาโปรแกรมฐานข้อมูล ในโครงสร้างไคลเอนต์/เซิร์ฟเวอร์ ไคลเอนต์อาจต้องป้อนข้อมูลชุดหนึ่งแล้วส่งไปยังฐานข้อมูลแบ็กเอนด์ของเซิร์ฟเวอร์ ซึ่งจำเป็นต้องมีการสร้างตารางข้อมูลชั่วคราวในเครื่อง (ไคลเอนต์) เพื่อจัดเก็บข้อมูลที่ป้อนโดยผู้ใช้หลังจากนั้น ส่งมันจะถูกล้างตารางข้อมูลในเครื่อง ประโยชน์ของวิธีนี้คือ: ปรับปรุงประสิทธิภาพอินพุตและลดภาระเครือข่าย
เนื่องจากโดยทั่วไปปริมาณข้อมูลที่ผู้ใช้ป้อนในแต่ละครั้งมีขนาดเล็ก (ไม่เกินสองสามร้อยบันทึก) จึงสามารถสร้างตารางชั่วคราวในหน่วยความจำได้ ซึ่งส่งผลให้การประมวลผลเร็วขึ้น มีสองวิธีในการสร้างตารางชั่วคราว:
1. ใช้การควบคุมแบบสอบถามเพื่อสร้างตารางชั่วคราว
ขั้นตอนที่ 1: วางตัวควบคุมแบบสอบถาม (TQuery) บนแบบฟอร์มและตั้งค่าตารางข้อมูลที่เชื่อมต่อ
ขั้นตอนที่ 2: เพิ่มคำสั่งต่อไปนี้:
TQuery.CachedUpdates=จริง;
TQuery.RequestLive=จริง
ขั้นตอนที่ 3: เพิ่มคำสั่งย่อย Where หลังคำสั่ง SQL ดั้งเดิม จำเป็นที่ผลลัพธ์การสืบค้น SQL จะว่างเปล่าหลังจากเพิ่มคำสั่งย่อยนี้
ตัวอย่างเช่น:
SELECT Biolife"Species No", Category, Common_Name, Biolife"Species Name", Biolife"Length (cm)", length_In, หมายเหตุ, กราฟิก
จาก "biolife.db" ไบโอไลฟ์
โดยที่ Biolife.Category=′A′ และ Biolife.Category=′B′
ด้วยวิธีนี้ ตารางชั่วคราวจะถูกสร้างขึ้น
2. ใช้โค้ดเพื่อสร้างตารางชั่วคราว
รหัสฟังก์ชันจะเป็นดังนี้:
ฟังก์ชัน CreateTableInMemory (const AFieldDefs:TFieldDefs):
ชุดข้อมูล TData;
var TempTable:TClientDataSet;
เริ่ม
TempTable:=ไม่มี;
ผลลัพธ์:=ไม่มี;
ถ้า AFieldDefs〈〉ไม่มีเลย
เริ่ม
พยายาม
TempTable:=TClientDataSet.Create(แอปพลิเคชัน);
TempTable.FieldDefs.Assign (AFieldDefs);
TempTable.CreateDataSet;
ผลลัพธ์:=(TempTable เป็น TDataSet);
ยกเว้น
ถ้า TempTable ไม่มีเลย TempTable.Free;
ผลลัพธ์:=ไม่มี;
ยก;
จบ
จบ
จบ;
เรียกมันในโปรแกรมดังนี้:
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
var ADataSet:TDataSet;
เริ่ม
ADataSet:=TDataSet.Create(ตนเอง);
ด้วย ADataSet.FieldDefs ทำ
เริ่ม
เพิ่ม('ชื่อ',ftString,30,เท็จ);
เพิ่ม('ค่า',ftInteger,0,False);
จบ;
ด้วย DataSource1 ทำ
เริ่ม
ชุดข้อมูล:=CreateTableInMemory(ADataSet.FieldDefs);
ชุดข้อมูลเปิด;
จบ;
ADataSet ฟรี;
จบ;
ด้วยวิธีนี้ ตารางชั่วคราวจะถูกสร้างขึ้น
วิธีที่ 1 ใช้งานง่าย แต่เนื่องจากใช้การควบคุมการสืบค้น จึงจำเป็นต้องสอบถามฐานข้อมูลแบ็กเอนด์ของเซิร์ฟเวอร์เมื่อทำการล้างข้อมูล ดังนั้นความเร็วจึงช้าลงเล็กน้อย และไม่เหมาะกับสถานการณ์ที่แต่ละฟิลด์ในตารางชั่วคราวถูก ประกอบด้วยเขตข้อมูลจากตารางข้อมูลหลายตาราง วิธีที่ 2 มีแอปพลิเคชันที่หลากหลายและรวดเร็ว แต่ต้องมีการเขียนโค้ด
การใช้ฟังก์ชันต่างๆ ในฐานข้อมูล InterBase
เมื่อโปรแกรมเมอร์ใช้ InterBase เป็นฐานข้อมูลส่วนหลัง พวกเขามักจะพบว่าไม่สะดวกในการใช้งานเนื่องจากมีฟังก์ชันน้อยเกินไป (เพียงสี่ฟังก์ชัน) ทำให้ไม่สามารถเขียนขั้นตอนการจัดเก็บที่ซับซ้อนได้อย่างง่ายดาย InterBase เองไม่สามารถเขียนฟังก์ชันได้ แต่สามารถใช้ฟังก์ชันภายนอกได้ (ฟังก์ชันการเรียกใช้ใน DLL) ตัวอย่างต่อไปนี้แสดงวิธีการประกาศฟังก์ชัน SUBSTR ใน InterBase
ประกาศฟังก์ชันภายนอก SUBSTR
CSTRING(80), SMALLINT, SMALLINT
การส่งคืน CSTRING(80)
ENTRY_POINT "IB_UDF_substr" MODULE_NAME "ib_udf"
หนึ่งในนั้นคือ MODULE_NAME คือชื่อของ DLL และ ENTRY_POINT คือชื่อฟังก์ชัน
สามารถใช้หลังจากการประกาศ เช่น:
เลือก SUBSTR (ประเทศ)
จากประเทศ
ตัวอย่างนี้ใช้ฐานข้อมูล IBLocal ที่มาพร้อมกับการติดตั้ง Delphi ผู้ใช้ยังสามารถเขียนฟังก์ชันของตนเองเพื่อขยาย InterBase