37
ห้อง MS Access / เชื่อมความสัมพันธ์ 2 ตารางใน Qry แล้วติ๊ก Checkbox ไม่ได้
« เมื่อ: 15 ก.ย. 64 , 11:45:03 »Checkbox ไม่สามารถติ๊กได้ครับ ไม่ทราบว่าเกิดจากสาเหตุอะไรหรอครับ
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
1st_Vaccined = DLookUp("1st_Vaccined","TblVaccine","Code = '" &โค๊ด: [Select]& "'")
ต้องมี = แล้วตามด้วยDLookup ครับ
1st_Vaccined: DLookUp("1st_Vaccined","TblVaccine","Code = '" & [ลองตรวจสอบชื่อTextboxจุดนี้ว่าชื่อถูกต้องหรือเปล่า] & "'")
1st_Vaccined: DLookUp("1st_Vaccined","TblVaccine","Code = '" & [Code] & "'")
ว่าจะไม่ยุ่งกับกระทู้นี้ เพราะเห็นคุณ PNR ตอบอยู่ผมได้รีโมทไปทำแบบนั้นให้เขาแล้วครับอาจารย์
แต่อดไม่ได้จริง เพราะรู้สึกว่ากำลังจะทำให้ได้ฐานข้อมูลที่สร้างปัญหาได้ในอนาคต
คำถามคือสาเหตุที่ต้องการฐานข้อมูลแบบในข้อความแรกคืออะไร
ทั้งนี้เพราะในระบบฐานข้อมูลนั้นควรจะเก็บข้อมูล Non Key แบบเชิงเดี่ยว
เพราะถ้ามีข้อมูลชุดเดียวกันอยู่ใน 2 ตาราง มันจะทำให้เกิดความสับสนเมื่อใช้งานไปนานๆ ได้
สำหรับการแก้ปัญหาของคุณนั้น ทำได้ง่ายมากคือ
1. ลบฟิลด์ "ชนิด" ในตารางหลักออกไป
2. ถ้าต้องการรู้ว่าคนไหนมีชนิดอะไร ให้สร้างคิวรี ที่เชื่อมข้อมูลรหัสของทั้ง 2 ตาราง แล้วดึงฟิลด์ รหัส,ชื่อ,ชนิด มาแสดงผล ก็จะได้อย่างที่คุณต้องการแล้วครับ
ทั้งนี้ยกเว้นคุณมีจุดประสงค์อื่น เช่นต้องการบันทึกการเปลี่ยนแปลงชนิด แบบนี้ก็ต้องสร้างตารางบันทึกการเปลี่ยนแปลงชนิด ซึ่งก็ต้องมีฟิลด์วัน-เวลา เพื่อเก็บข้อมูลด้วย
โดยใช้คิวรี่ในการเชื่อมข้อมูลมาแสดงครับ
1.ตอนแรกไม่ค่อยเข้าใจโจทย์เมื่อได้เห็นการออกแบบก็ทำให้แล้วเป็น ถ้าแสดงข้อมูลธรรมดาโค๊ด: [Select]SELECT [TBLข้อมูลหลัก].[รหัส], [TBLข้อมูลหลัก].[ชื่อ], [TBLชนิด].[ชนิด]
FROM TBLชนิด INNER JOIN TBLข้อมูลหลัก ON [TBLชนิด].[รหัส] = [TBLข้อมูลหลัก].[รหัส];
UPDATE TblType INNER JOIN TblMain ON TblType.[CodeV] = TblMain.[Code] SET TblMain.Type1 = [TblType]![TypeV1], TblMain.Type2 = [TblType]![TypeV2];
SELECT TblMain.Code, TblMain.Name, DLookUp("TypeV1","tbltype","CodeV = '" & [Code] & "'") AS Type1, DLookUp("TypeV2","tbltype","CodeV = '" & [Code] & "'") AS Type2
FROM TblMain;
งั้นของผมควรใช้วิธีแรกใช่ไหมครับ
แล้วแต่การใช้งานครับ ลองสร้าง คิวรี่ใหม่แล้วเอา SQL นี้ไปวางแล้วรันดูครับโค๊ด: [Select]SELECT DLookUp("ชนิด","TBLชนิด","รหัส = '" & [รหัส] & "'") AS ชนิด, [TBLข้อมูลหลัก].*
FROM TBLข้อมูลหลัก;
UPDATE TBLชนิด INNER JOIN TBLข้อมูลหลัก ON [TBLชนิด].[รหัส] = [TBLข้อมูลหลัก].[รหัส] SET [TBLข้อมูลหลัก].[ชนิด] = [TBLชนิด]![ชนิด];
จากตัวอย่างนั้น มี 2 ตาราง
การที่จะแสดงข้อมูลได้นั้นสามารถทำได้ 2 แบบ คือ
1. ใช้คิวรี่ในการแสดงผล (แบบนี้ใช้การ Dlookup ก็ได้ครับ) ถ้าอยากได้แบบใช้คิวรี่แสดงผล เดี่ยวทำให้ดู
2.คือให้อัพเดทข้อมูล ชนิด ในตารางข้อมูลหลัก
โค๊ด sql ที่ให้ไปนั้นจะต้องสร้าง query ใหม่ขึ้นมาใช้งาน จะใช้สำหรับอัพเดทข้อมูลให้ตารางข้อมูลหลักก่อนการแสดงผลครับ