33
ห้อง MS Access / : ย่อโปรแกรม Access เมื่อเปิด Form popup
« เมื่อ: 16 ก.ย. 64 , 09:44:13 »
64 bit ครับผม
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ชนิด]![ชนิด];