กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
454 4
URL.หัวข้อ /
URL
ACC2000: How to Combine Multiple Child Records into One Record
การออกแบบฐานข้อมูลที่ผมเคยเจอ มักจะมีปัญหากับการสร้างตารางแบบ One-To-Many เช่น
ตารางข้อมูลงานวิจัย ควรจะแยกชื่อผู้วิจัยไว้อีกตารางหนึ่งต่างหาก ไม่ควรจะเก็บรายชื่อนักวิจัยไว้ใน 1 ฟีลด์ของตารางงานวิจัย โดยใส่ทุกชื่อลงไป เช่น
ผู้วิจัย
นายสุภาพ ไชยยา, ด.ช. พฤษภา ไชยยา และ ด.ญ. สุพัชรี ไชยยา
ความจะเก็บข้อมูลผู้วิจัยแยกตารางไว้ต่างหาก ซึ่งอาจประกอบไปด้วยฟีลด์ต่อไปนี้
ID, FName, LName, Address, PhoneNo, Email, ...
และเนื่องจากในหนึ่งงานวิจัย สามารถมีผู้วิจัยตั้งแต่ 1 คน ขึ้นไป และผู้วิจัย 1 คนยังสามารถทำงานวิจัยได้หลายชิ้น
จึงควรที่จะสร้างตารางสำหรับใส่ข้อมูลผู้วิจัยไว้อีกตารางหนึ่ง โดยให้มีความสัมพันธ์กับตารางผู้วิจัย แบบ One-To-Many และมีความสัมพันธ์กับตารางงานวิจัยแบบ One-To-Many ด้วย
ซึ่งตารางใหม่นี้ควรจะมีฟีลด์ดังต่อไปนี้
AutoID, ResearcherID (FK), ResearchID (FK ซึ่งจะใช้เป็น Child Link กับฟอร์มการวิจัย)
แล้วนำตารางใหม่นี้ไปสร้างเป็น SubForm เพื่อให้สามารถที่จะคีย์ข้อมูลผู้วิจัยทำได้ง่าย โดยใช้ Combo Box เข้าช่วย List รายชื่อผู้วิจัย (แต่จะเก็บเป็น ResearchID แทน) ที่มีอยู่ใจฐานข้อมูลแล้ว
ถ้าชื่อนั้นยังไม่มี ก็สามารถคีย์เพิ่มลงไปใหม่ได้ โดยใช้ NotInList เข้าช่วย
คราวนี้หลายคนก็จะถามว่า แล้วจะนำรายชื่อผู้วิจัยทั้งหมดมาแสดงเรียงกันอย่าง
นายสุภาพ ไชยยา, ด.ช. พฤษภา ไชยยา และ ด.ญ. สุพัชรี ไชยยา
ได้อย่างไร
หลายคนเคยลองใช้ระบบการจัดเก็บแบบที่ผมแนะนำข้างต้น แต่พอมาเจอปัญหาตรงการพิมพ์รายโดยให้แสดงผลอย่างที่ผมว่าไม่ได้ ก็จะหันกลับไปใช้ระบบเดิม ถึงแม้จะตระหนักถึงความสำคัญของการทำ Relational Database ก็ตาม
วิธีแก้ง่ายๆ ก็ต้องใช้โค้ดเข้าช่วยครับ
ลองไปดู Microsoft เขาแนะนำไว้ดีกว่า จะดีกว่าที่ผมอธิบายเป็นแน่แท้ ที่
http://support.microsoft.com/default.aspx?scid=kb;en-us;322813 ครับ *** Edited by Supap Chaiya *** 5/28/2003 10:18:07 AM
ตารางข้อมูลงานวิจัย ควรจะแยกชื่อผู้วิจัยไว้อีกตารางหนึ่งต่างหาก ไม่ควรจะเก็บรายชื่อนักวิจัยไว้ใน 1 ฟีลด์ของตารางงานวิจัย โดยใส่ทุกชื่อลงไป เช่น
ผู้วิจัย
นายสุภาพ ไชยยา, ด.ช. พฤษภา ไชยยา และ ด.ญ. สุพัชรี ไชยยา
ความจะเก็บข้อมูลผู้วิจัยแยกตารางไว้ต่างหาก ซึ่งอาจประกอบไปด้วยฟีลด์ต่อไปนี้
ID, FName, LName, Address, PhoneNo, Email, ...
และเนื่องจากในหนึ่งงานวิจัย สามารถมีผู้วิจัยตั้งแต่ 1 คน ขึ้นไป และผู้วิจัย 1 คนยังสามารถทำงานวิจัยได้หลายชิ้น
จึงควรที่จะสร้างตารางสำหรับใส่ข้อมูลผู้วิจัยไว้อีกตารางหนึ่ง โดยให้มีความสัมพันธ์กับตารางผู้วิจัย แบบ One-To-Many และมีความสัมพันธ์กับตารางงานวิจัยแบบ One-To-Many ด้วย
ซึ่งตารางใหม่นี้ควรจะมีฟีลด์ดังต่อไปนี้
AutoID, ResearcherID (FK), ResearchID (FK ซึ่งจะใช้เป็น Child Link กับฟอร์มการวิจัย)
แล้วนำตารางใหม่นี้ไปสร้างเป็น SubForm เพื่อให้สามารถที่จะคีย์ข้อมูลผู้วิจัยทำได้ง่าย โดยใช้ Combo Box เข้าช่วย List รายชื่อผู้วิจัย (แต่จะเก็บเป็น ResearchID แทน) ที่มีอยู่ใจฐานข้อมูลแล้ว
ถ้าชื่อนั้นยังไม่มี ก็สามารถคีย์เพิ่มลงไปใหม่ได้ โดยใช้ NotInList เข้าช่วย
คราวนี้หลายคนก็จะถามว่า แล้วจะนำรายชื่อผู้วิจัยทั้งหมดมาแสดงเรียงกันอย่าง
นายสุภาพ ไชยยา, ด.ช. พฤษภา ไชยยา และ ด.ญ. สุพัชรี ไชยยา
ได้อย่างไร
หลายคนเคยลองใช้ระบบการจัดเก็บแบบที่ผมแนะนำข้างต้น แต่พอมาเจอปัญหาตรงการพิมพ์รายโดยให้แสดงผลอย่างที่ผมว่าไม่ได้ ก็จะหันกลับไปใช้ระบบเดิม ถึงแม้จะตระหนักถึงความสำคัญของการทำ Relational Database ก็ตาม
วิธีแก้ง่ายๆ ก็ต้องใช้โค้ดเข้าช่วยครับ
ลองไปดู Microsoft เขาแนะนำไว้ดีกว่า จะดีกว่าที่ผมอธิบายเป็นแน่แท้ ที่
http://support.microsoft.com/default.aspx?scid=kb;en-us;322813 ครับ *** Edited by Supap Chaiya *** 5/28/2003 10:18:07 AM
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R01841
หรือถ้าไม่ต้องการสร้างเป็นฟังก์ชัน ก็ลองดูอีกวิธีหนึ่ง โดยการเขียนโค้ดใน Report เป้าหมายโดยตรง
ให้ดูที่ http://support.microsoft.com/default.aspx?scid=kb;en-us;141624 ครับ
2 @R06277
อ.สุภาพ และ อ.BADMAN ครับ
ผมทดลองทำ File ตาม Link ของ Microsoft
http://support.microsoft.com/default.aspx?scid=kb;en-us;322813
ที่อาจารย์แนะนำไว้ และเมื่อผม Run Query
พบ Bug กับ Code ตรงบรรทัดที่
qd.Parameters("ParamIn").Value = varPKVvalue
รบกวน อาจารย์ แนะนำด้วยครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
ผมทดลองทำ File ตาม Link ของ Microsoft
http://support.microsoft.com/default.aspx?scid=kb;en-us;322813
ที่อาจารย์แนะนำไว้ และเมื่อผม Run Query
พบ Bug กับ Code ตรงบรรทัดที่
qd.Parameters("ParamIn").Value = varPKVvalue
รบกวน อาจารย์ แนะนำด้วยครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
3 @R06278
ต้องเอาตาราง Products เข้ามาด้วยครับ
4 @R06283
ขอบพระคุณ อ.สุภาพ มากๆ ครับ
ผม Import เข้ามาไม่ครบนี่เอง (User Error !!!)
ขอให้ อาจารย์ หายป่วยเร็วๆ นะครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
ผม Import เข้ามาไม่ครบนี่เอง (User Error !!!)
ขอให้ อาจารย์ หายป่วยเร็วๆ นะครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
Time: 0.1467s