กระทู้เก่าบอร์ด อ.Yeadram
2,526 3
URL.หัวข้อ /
URL
ขอ Code การส่งค่าไปแบบฟอร์มใหม่แบบเป็น Subform
DoCmd.OpenForm "form2", acNormal, , "([name] = '" & Me.[comboboxName] & "')"
ตอนนี้ผมใช้โค้ดแบบนี้อยู่ครับ ซึ่งตรง Me.[comboboxName] มันอยู่ในส่วนของ subform ผมอยากจะอ้างอิงไปใน combobox รายชื่อที่เป็นฟอร์มหลัก จะต้องแก้ไขโค้ดยังไงบ้างครับ
ตอนนี้ผมใช้โค้ดแบบนี้อยู่ครับ ซึ่งตรง Me.[comboboxName] มันอยู่ในส่วนของ subform ผมอยากจะอ้างอิงไปใน combobox รายชื่อที่เป็นฟอร์มหลัก จะต้องแก้ไขโค้ดยังไงบ้างครับ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05715
ทำยังไงดีครับ ผมลองจนไม่ไหวแล้ว
ใน subform ได้ตั้งค่า AllowEdits เป็น no เอาไหว้
แล้วได้สร้างปุ่มอยู่ในฟอร์มหลักเพื่อแก้ให้ AllowEdits เป็น yes แต่ติดตรงไม่รู้จะส่งค่าไปที่ Subform ยังไง ได้ลองใช้วิธีที่ 3 แล้ว แต่ก็ไม่สามารถสั่งให้ subform มันเปลี่ยนค่าได้ครับ
งงตรง control ด้วยครับ ถ้ามันไม่มีจะต้องใช้ค่าอะไรแทนเหรอครับ
ใน subform ได้ตั้งค่า AllowEdits เป็น no เอาไหว้
แล้วได้สร้างปุ่มอยู่ในฟอร์มหลักเพื่อแก้ให้ AllowEdits เป็น yes แต่ติดตรงไม่รู้จะส่งค่าไปที่ Subform ยังไง ได้ลองใช้วิธีที่ 3 แล้ว แต่ก็ไม่สามารถสั่งให้ subform มันเปลี่ยนค่าได้ครับ
Forms("Subform").AllowEdits = True
งงตรง control ด้วยครับ ถ้ามันไม่มีจะต้องใช้ค่าอะไรแทนเหรอครับ
3 @R05716
sub form เป็นคอนโทรล
ชื่อคอนโทรล ชื่อว่า child1
ทำการแสดงผลฟอร์มย่อยที่สร้างไว้แล้ว ชื่อ sfForm1
เมื่อต้องการตั้งค่าคุณสมบัติให้ฟอร์มย่อยนี้ สามารถแก้ไขข้อมูลได้สั่งอย่างนี้ครับ
me.child1.Allowedits=true ได้
หรือ
me.child1.form.allowedits=true ก็ได้
ถ้าคุณใช้ชื่อคอนโทรลเป็นคำเดียวกันกับชื่อของแหล่งข้อมูล เช่น
ชื่อคอนโทรลคือ sfForm1
ชื่อแหล่งข้อมูลของ sfForm1 ก็คือฟอร์มย่อยที่ชื่อ sfForm1
คุณใช้คำสั่งได้ว่า
me.sfForm1.form.AllowEdits=true ได้
แต่ใช้
me.sfForm1.AllowEdits=true ไม่ได้
เพราะที่เราสั่ง คือเราสั่งคอนโทรล เราไม่ได้สั่งแหล่งข้อมูลของคอนโทรล
ชื่อคอนโทรล ชื่อว่า child1
ทำการแสดงผลฟอร์มย่อยที่สร้างไว้แล้ว ชื่อ sfForm1
เมื่อต้องการตั้งค่าคุณสมบัติให้ฟอร์มย่อยนี้ สามารถแก้ไขข้อมูลได้สั่งอย่างนี้ครับ
me.child1.Allowedits=true ได้
หรือ
me.child1.form.allowedits=true ก็ได้
ถ้าคุณใช้ชื่อคอนโทรลเป็นคำเดียวกันกับชื่อของแหล่งข้อมูล เช่น
ชื่อคอนโทรลคือ sfForm1
ชื่อแหล่งข้อมูลของ sfForm1 ก็คือฟอร์มย่อยที่ชื่อ sfForm1
คุณใช้คำสั่งได้ว่า
me.sfForm1.form.AllowEdits=true ได้
แต่ใช้
me.sfForm1.AllowEdits=true ไม่ได้
เพราะที่เราสั่ง คือเราสั่งคอนโทรล เราไม่ได้สั่งแหล่งข้อมูลของคอนโทรล
Time: 0.4187s
1 me.parent.ชื่อคอนโทรล
2 me.parent.form.controls("ชื่อคอนโทรล")
3 forms("ชื่อฟอร์มเป้าหมาย").controls("ชื่อคอนโทรลที่อยู่บนฟอร์มเป้าหมาย")
ลองดูซักอย่างนะครับเผื่อจะเจอ อิอิ
แนะนำเพิ่มเติมนิดครับ วิธีที่ 3 สามารถใช้ได้กับทุกๆ ฟอร์มที่เปิดอยู่ ณ เวลานั้น
ใช้อ้างถึงฟอร์มแม่ก็ได้
ใช้อ้างถึงฟอร์มลูกก็ได้
ใช้อ้างถึงฟอร์มอื่นๆ ก็ได้
และหลังวงเล็บสุดท้ายคุณยังสามารถเพิ่มได้ทั้ง properties หรือ method ของคอนโทรลนั้นๆ ที่อยู่บนฟอร์มเป้าหมายได้ด้วย
เช่น
-ถ้าต้องการข้อมูล หรือค่าใดๆ ที่อยู่ในคอนโทรลนั้นๆ
x = forms("A").controls("B") ' ไม่ต้องใส่ .value เพราะมันเป็น default สำหรับ access อยู่แล้ว
-ถ้าต้องการตั้งค่าคุณสมบัติ (properties) ของคอนโทรลนั้นๆ
forms("A").controls("B").visible = False
-ถ้าต้องการใช้งาน method ของคอนโทรลนั้นๆ (ควรต้องรู้ด้วยว่าคอนโทรลนั้นๆ มี method อะไรให้เรียกใช้ได้บ้าง)
forms("A").controls("comboXX").requery