กระทู้เก่าบอร์ด อ.Yeadram
        
           2,732   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.1940s
    
      
		
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