Delphi เทคนิคการ Relation dataset ให้ Auto Query

Piyanat Nimkhuntod
3 min readApr 29, 2022

--

เวลาดึงข้อมูลจากฐานมาลงไว้ใน dataset ของเรา นั้น ผมมักจะเลือกใช้เป็น UniQuery เพื่อ query เอาเฉพาะที่ใช้มาวาง หรือใช้ UniTable ไปเลยกรณีเป็น Lookup table วันนี้ผมเอา Tips เล็กๆน้อยๆมาฝากกันครับ เทคนิคที่ว่าก็คือ การใช้ประโยชน์จาก Relation นั่นเอง

ตัวอย่างในวันนี้จะเป็นการที่เรา Query ข้อมูลด้วย Parameter ใน dataset A แล้ว แล้ว Dataset ฺB ที่ Relation กันอยู่จะจะเอา key ที่เชื่อมกันเป็นเงื่อนไขในการ Query ข้อมูล เช่น

Dataset A เก็บตารางที่เป็น จังหวัด

Dataset ฺB เก็บตารางอำเภอ

Dataset A เมื่อเรา เลือกรหัสจังหวัด 67 เพชรบูรณ์

Dataset B ก็จะทำการ Query ข้อมูลใหม่โดยแสดงผลเฉพาะ อำเภอที่มีรหัสจังหวัด = 67 ทันที โดยไม่ต้องเขียน Code เลยซักบรรทัดเดียว

หากต้องการข้อมูล จังหวัด อำเภอ ตำบล มาใช้สามารถเข้าไป download มาใช้ได้ที่

กำหนด SQL ใน Uniquery1 ให้ select * from thai_province (จังหวัด) หรือ ใช้ Unitable1 เพื่อเลือก Table ที่เป็นจังหวัด ในตาราง thai_provinces

กำหนด SQL ใน Uniquery2 ให้ select * from thai_amphures(อำเภอ) หรือ ใช้ Unitable2 เพื่อเลือก Table ที่เป็นจังหวัด ในตาราง thai_amphures

เลือกที่ Uniquery2 หรือ UniTable2 แล้วดูที่ Properties ตรง MasterSource ให้เลือกเป็น DataSource1 หรือ DataSource ที่ติดต่อกับ DataSet ที่เป็นตารางจังหวัด

จากนั้นเลือก Master Fields จะขึ้น pop up ให้เลือก foreign key ของตาราง thai_amphures ซึ่งก็คือ province_id กับ Primary key ของ ตาราง thai_province ซึ่งก็คือ id แล้วกดปุ่ม Add

จากนั้น ก็แสดงผลของ Dataset ที่เราได้ผ่าน dbgird โดย ตารางบนก็ใช้ datasource1 ส่วนตารางล่าง ก็ให้เลือกเป็น Datasource2

จากนั้นให้เข้าไปที่ dataset ของเรา แล้วกดปุ่ม active ไว้จะได้ไม่ต้องเขียนคำสั่งเพื่อดึงมาแสดงผล ถ้าเราใช้ Uniquery ก็ทำทั้งสองอัน ถ้าเราใช้ UniTable ก็ทำทั้งสองอัน จากนั้นกด Run

ก็จะพบว่าหากเราคลิกที่ด้านบน ด้านล่างก็จะเปลี่ยนตามในทันทีโดยไม่ต้องเขียน code เพื่อไป Refresh มันแต่อย่างใด

หมายเหตุ ไม่เหมาะกับตารางที่มีจำนวน Row เยอะๆ

--

--

No responses yet