กระทู้เก่าบอร์ด อ.Yeadram
3,604 3
URL.หัวข้อ /
URL
การลิ้งค์ข้อมูลจากฟอร์ม 2 ฟอร์ม
มีฟอร์มอยู่ 2 ฟอร์มค่ะ ฟอร์ม 1 เป็นข้อมูลผู้ป่วย ฟอร์ม2 เป็นใบสั่งยา
มีตัวเชื่อมคือ Patient ID ค่ะ
รบกวนถามว่า เวลาคลิกฟอร์ม 2 แล้วอยากให้ Patient ID ปรากฎขึ้นมาให้ตรงตามข้อมูลผู้ป่วยในฟอร์มที่ 1 เลย โดยไม่ต้องพิมข้อมูลเข้าไป ต้องทำอย่างไรคะ
ps. ลองใส่นิพจน์ตรง แหล่งตัวควบคุมของ Patient ID ในฟอร์ม 2 เป็น
" Forms![แบบบันทึกข้อมูลผู้ป่วย]![Patient ID] " แล้ว Patient ก็ปรากฎขึ้นมาค่ะ แต่ว่าจะขึ้นมาเป็น Patient ID เดียวกันในทุกใบสั่งยาเลยค่ะ เลยไม่รู้จะทำยังไง
รบกวนด้วยนะคะ ขอบคุณมากค่ะ
Orawan
Pharmacist student
มีตัวเชื่อมคือ Patient ID ค่ะ
รบกวนถามว่า เวลาคลิกฟอร์ม 2 แล้วอยากให้ Patient ID ปรากฎขึ้นมาให้ตรงตามข้อมูลผู้ป่วยในฟอร์มที่ 1 เลย โดยไม่ต้องพิมข้อมูลเข้าไป ต้องทำอย่างไรคะ
ps. ลองใส่นิพจน์ตรง แหล่งตัวควบคุมของ Patient ID ในฟอร์ม 2 เป็น
" Forms![แบบบันทึกข้อมูลผู้ป่วย]![Patient ID] " แล้ว Patient ก็ปรากฎขึ้นมาค่ะ แต่ว่าจะขึ้นมาเป็น Patient ID เดียวกันในทุกใบสั่งยาเลยค่ะ เลยไม่รู้จะทำยังไง
รบกวนด้วยนะคะ ขอบคุณมากค่ะ
Orawan
Pharmacist student
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R04729
ขอบคุณyeadram มากนะคะที่ช่วยตอบคำถาม
คืออยากให้ textbox ในฟอร์ม 2 (ใบสั่งยา) ปรากฏเป็น Patient ID ตามที่กรอกข้อมูลในฟอร์ม1 เลย(ข้อมูลผู้ป่วย) โดยไม่ต้องเสียเวลพิมใหม่หนะค่ะ
ลองใส่นิพจน์ตามที่คุณ yeadram แนะนะเป็น
DLookUp("Patient ID","ตารางข้อมูลผู้ป่วย","ตารางข้อมูลผู้ป่วย.[Patient ID] = '" & [Patient ID] & "'")
แต่ขึ้นมาเป็น errow หนะค่ะ
มีคำถามจะรบกวนถามอีกข้อหนึ่งค่ะ คือ
คือมี "ตารางโรคต่างๆ" อยู่ มีรหัสโรค และชื่อโรค
เวลาออกแบบฟอร์ม อยากให้เวลาที่เราเลือก "รหัสโรค" ใน textbox หนึ่งแล้ว อยากให้ปรากฏ "ชื่อโรค" ขึ้นมาตรงกับรหัสโรคใน textbox อีกอันหนึ่งเลยหนะค่ะ
พอจะมีวิธีทำได้มั้ยคะ
ขอบคุณมากนะคะ
คืออยากให้ textbox ในฟอร์ม 2 (ใบสั่งยา) ปรากฏเป็น Patient ID ตามที่กรอกข้อมูลในฟอร์ม1 เลย(ข้อมูลผู้ป่วย) โดยไม่ต้องเสียเวลพิมใหม่หนะค่ะ
ลองใส่นิพจน์ตามที่คุณ yeadram แนะนะเป็น
DLookUp("Patient ID","ตารางข้อมูลผู้ป่วย","ตารางข้อมูลผู้ป่วย.[Patient ID] = '" & [Patient ID] & "'")
แต่ขึ้นมาเป็น errow หนะค่ะ
มีคำถามจะรบกวนถามอีกข้อหนึ่งค่ะ คือ
คือมี "ตารางโรคต่างๆ" อยู่ มีรหัสโรค และชื่อโรค
เวลาออกแบบฟอร์ม อยากให้เวลาที่เราเลือก "รหัสโรค" ใน textbox หนึ่งแล้ว อยากให้ปรากฏ "ชื่อโรค" ขึ้นมาตรงกับรหัสโรคใน textbox อีกอันหนึ่งเลยหนะค่ะ
พอจะมีวิธีทำได้มั้ยคะ
ขอบคุณมากนะคะ
3 @R04740
ปัญหาที่1 "อยากให้ข้อมูลในฟอร์ม2 ปรากฎเป็นข้อมูลเดียวกันกับข้อมูลในฟอร์ม1"
- ผมแนะนำให้ใช้ Dlookup คุณบอกว่ามันเกิด Error จบข่าว แนะนำต่อไม่ได้ เพราะไม่รู้ว่ามัน Error อะไร หรือถ้าให้เดา คงเป็นเพราะผมอ้างอิงผิดมั้งครั้ง ลองดูใหม่ก็แล้วกัน แล้วทีนี้ถ้าติด Error อะไร ควรบอกมาด้วยนะครับ เพราะ Error นั่นจะทำให้เราทราบสาเหตุ และหาทางแก้ได้ตรงจุดกว่า
DLookUp("Patient ID","ตารางข้อมูลผู้ป่วย","ตารางข้อมูลผู้ป่วย.[Patient ID] = '" & Forms![แบบบันทึกข้อมูลผู้ป่วย]![Patient ID] & "'")
- ที่ผมแนะนำให้ใช้ Dloopup มันเหมาะสำหรับงานง่ายๆ เช่นสมมติว่า ฟอร์ม2 มีคอนโทรลแค่ตัวเดียว แต่ถ้าฟอร์ม2 ของคุณมันมีหลายคอนโทรล แล้วแต่ละคอนโทรลล้วนใช้ข้อมูลเดียวกันกับฟอร์ม1 เราไม่ควรใช้ Dlookup แล้วละครับ มันทำงานหลายรอบเกินไป เราอาจเปลี่ยนวิธี ไปใช้วิธีเปลี่ยน Datasource ของฟอร์มจะเหมาะกว่า
ปัญหาที่ 2
"อยากให้เวลาที่เราเลือก "รหัสโรค" ใน textbox หนึ่ง"
- textbox เลือกไม่ได้ครับ ถ้าคอนโทรลที่สามารถเลือกได้ น่าจะเป็น combo box หรือ listbox มากกว่าครับ ขอให้เพิ่มเติมด้วยครับ ว่าตกลงมันคือคอนโทรลอะไรกันแน่
"อยากให้ปรากฏ "ชื่อโรค" ขึ้นมาตรงกับรหัสโรคใน textbox อีกอันหนึ่ง"
ก็ใช้ dlookup เอาอย่างที่เคยให้ไปนั่นและครับ อาจจะเขียนใส่ใน control source ในรูปแบบนิพจน์เอาเลยก็ได้ หรือ..
อาจจะฝั่งโค้ดไว้ในคอนโทรลตัวแรกนู่นก็ได้ครับ พอเกิดเหตุการณ์ "เลือก" เสร็จแล้วก็ให้ใช้ dlookup เอาข้อมูลมาเติมใน คอนโทรลตัวที่สอง เช่น
- ผมแนะนำให้ใช้ Dlookup คุณบอกว่ามันเกิด Error จบข่าว แนะนำต่อไม่ได้ เพราะไม่รู้ว่ามัน Error อะไร หรือถ้าให้เดา คงเป็นเพราะผมอ้างอิงผิดมั้งครั้ง ลองดูใหม่ก็แล้วกัน แล้วทีนี้ถ้าติด Error อะไร ควรบอกมาด้วยนะครับ เพราะ Error นั่นจะทำให้เราทราบสาเหตุ และหาทางแก้ได้ตรงจุดกว่า
DLookUp("Patient ID","ตารางข้อมูลผู้ป่วย","ตารางข้อมูลผู้ป่วย.[Patient ID] = '" & Forms![แบบบันทึกข้อมูลผู้ป่วย]![Patient ID] & "'")
- ที่ผมแนะนำให้ใช้ Dloopup มันเหมาะสำหรับงานง่ายๆ เช่นสมมติว่า ฟอร์ม2 มีคอนโทรลแค่ตัวเดียว แต่ถ้าฟอร์ม2 ของคุณมันมีหลายคอนโทรล แล้วแต่ละคอนโทรลล้วนใช้ข้อมูลเดียวกันกับฟอร์ม1 เราไม่ควรใช้ Dlookup แล้วละครับ มันทำงานหลายรอบเกินไป เราอาจเปลี่ยนวิธี ไปใช้วิธีเปลี่ยน Datasource ของฟอร์มจะเหมาะกว่า
ปัญหาที่ 2
"อยากให้เวลาที่เราเลือก "รหัสโรค" ใน textbox หนึ่ง"
- textbox เลือกไม่ได้ครับ ถ้าคอนโทรลที่สามารถเลือกได้ น่าจะเป็น combo box หรือ listbox มากกว่าครับ ขอให้เพิ่มเติมด้วยครับ ว่าตกลงมันคือคอนโทรลอะไรกันแน่
"อยากให้ปรากฏ "ชื่อโรค" ขึ้นมาตรงกับรหัสโรคใน textbox อีกอันหนึ่ง"
ก็ใช้ dlookup เอาอย่างที่เคยให้ไปนั่นและครับ อาจจะเขียนใส่ใน control source ในรูปแบบนิพจน์เอาเลยก็ได้ หรือ..
อาจจะฝั่งโค้ดไว้ในคอนโทรลตัวแรกนู่นก็ได้ครับ พอเกิดเหตุการณ์ "เลือก" เสร็จแล้วก็ให้ใช้ dlookup เอาข้อมูลมาเติมใน คอนโทรลตัวที่สอง เช่น
Private sub ctl1_afterupdate()
ctl2 = dlookup("[ชื่อโรค]", "[ตารางโรคต่างๆ]","[ตารางโรคต่างๆ].[รหัสโรค] = '" & ctl1 & "'")
End Sub
Time: 0.3259s
ถ้าฟอร์ม1 เปิดอยู่ การอ้างอิงอาจสำเร็จทุกครั้ง
ถ้าฟอร์ม1 ไม่ได้เปิดอยู่ นิพจน์นั้นจะเกิด Error
ดังนั้นแนะนำดังนี้ครับ
นิพจน์ต้องเขียนโดยใช้ฟังก์ชั่น Dlookup จากแหล่งข้อมูลโดยตรงเลยครับ โดยดูจากตารางหรือคิวรี่ที่เป็นแหล่งข้อมูลของฟอร์ม 1 (เดาว่า น่าจะชื่อตาราง "ข้อมูลผู้ป่วย")
สมมติคุณต้องการให้ Textbox ในฟอร์ม 2 ปรากฎเป็นข้อมูลลูกค้า
คุณก็จะเขียนนิพจน์ใน Textbox นั้นว่า
=Dlookup("ชื่อลูกค้า","ตารางข้อมูลผู้ป่าย", "ตารางข้อมูลผู้ป่าย.[Patien ID] = '" & [Patien ID] & "'")