ต้องการส่งค่าจาก Mainform ไปที่ หลาย ๆ เรคคอร์ดใน
กระทู้เก่าบอร์ด อ.Yeadram

 2,070   7
URL.หัวข้อ / URL
ต้องการส่งค่าจาก Mainform ไปที่ หลาย ๆ เรคคอร์ดใน

เรียนผู้รู้ค่ะ

คือต้องการส่งค่า true ไปที่ checkbox ของ subform ทุกบรรทัดค่ะ เช่นตอนนี้นะคะ มี subform ชื่อ orderbill2 โดย checkbox ชื่อ Kit ค่ะ โดยต้องการให้คลิกที่ปุ่มคำสั่งที่Mainform เพียงครั้งเดียว ก็ให้checkbox ของ subform ทุกบรรทัดที่มีใน subform ตอนนั้นขึ้นเป็น true หรือ ค่า yes น่ะค่ะ หลักการคล้าย ๆ กับการที่เราเลือก เมลล์ในเมลล์บ๊อกซ์ของเรา เลือกแบบ all ก็จะเท่ากับเลือกทุกเมลล์ที่แสดงผลอยู่ในหน้านั้นตอนนั้น รบกวนหน่อยเถอะนะคะลองหลายรูปแบบแล้วค่ะ ยังไม่ได้เลย TT

7 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R13000
ในกรณีของ Bound Form ข้อมูลที่เราเห็นบนหน้าจอนั้นแสดงมาจาก RecordSet ซึ่งเชื่อมโยงเข้าหาข้อมูลในฐานข้อมูล เขียนเป็นโมเดลง่ายๆตามลำดับชั้นก็ได้รูปแบบนี้

Checkbox object on form
--------------------------------------------------------
Recordset object, RecordsetClone object
--------------------------------------------------------
Records in database

ดังนั้นมีวิธีเล่นอยู่ 3 อย่าง แต่ละแบบก็เล่นตามลำดับชั้นนั้นๆ นั่นคือ

- ลำดับบนสุด ก็แก้ไขที่ Checkbox โดยตรง แต่มันไม่สะดวกในกรณีที่ต้องทำกับหลายๆเรคอร์ด   

- ลำดับกลางก็กระทำกับ Recordset object หรือ RecordsetClone object วิธีนี้สะดวก เพราะไม่ต้องกำหนดเงื่อนไขในการหาเรคอร์ดที่ต้องการจากฐานข้อมูลอีกที เรคอร์ดไหนที่แสดงบนหน้าจอ subform มันก็มีเรคอร์ดเหล่านั้นปรากฏใน Recordset object หรือ RecordsetClone object นั่นเอง และเรามักกระทำกับ RecordsetClone object มากกว่า Recordset object (ทำไมเป็นอย่างนี้ ก็ไปกด F1 อ่านจาก Help file เอาเอง)

- ลำดับล่างสุด ก็คือไปกระทำกับเรคอร์ดในฐานข้อมูลโดยตรง แล้วให้ลำดับบนสุดไป Refresh ข้อมูลจากฐานข้อมูลมาใหม่ แต่วิธีนี้ก็ต้องกำหนดเงื่อนไข (โดยปกติก็คือกำหนด WHERE clause ให้กับ SQL statement) เพื่อหาเรคอร์ดให้ได้ตรงกับที่แสดงอยู่แล้วบน subform

ดังนั้น ตกลงแล้วเราจะทำวิธีที่ 2 กัน เราก็ใส่โค้ดนี้ลงในปุ่มคำสั่งของ mainform

dim RS as DAO.Recordset

set RS = Me.orderbill2.form.recordsetclone
With RS
Do Until .EOF
    .Edit
    !Kit = True
    .Update

    .MoveNext
Loop
.Close: Set RS = Nothing
End With

Me.orderbill2.form.Refresh

แค่นี้ครับ
2 @R13001
แก้ไขเพิ่มเติมจาก

set RS = Me.orderbill2.form.recordsetclone
With RS
Do Until .EOF

เป็น

set RS = Me.orderbill2.form.recordsetclone
With RS
if .RecordCount > 0 then .MoveFirst
Do Until .EOF
3 @R13004
ทำได้แล้วค่ะ ขอบพระคุณค่ะอาจารย์
4 @R21017
ผมเอาที่อาจารย์แนะนำไปใช้แต่ ติดครับ
อาจารย์ครับผมติดตรง !CK=True ครับ
มัน Error 3265 ครับ ช่วยรบกวนดูให้หน่อยครับ

Dim RS As DAO.Recordset


Set RS = Me.FM_PD4OGAA.Form.RecordsetClone
With RS
If .RecordCount > 0 Then .MoveFirst
Do Until .EOF
    .Edit
    !CK = True
    .Update

    .MoveNext
Loop
.Close: Set RS = Nothing
End With

Me.FM_PD4OGAA.Form.Refresh


ขอบคุณครับ
5 @R21019
CK ไม่ใช่ชื่อฟิลด์ที่อยู่ใน recordset RS ครับ ต้องใช้ชื่อฟิลด์นะครับ ไม่ใช่ชื่อคอนโทรลที่อยู่บนฟอร์ม
6 @R21020
ขอบคุณครับ

แล้วผมต้องการใช้ คอนโทรลที่อยู่บนฟอร์ม แล้วส่งค่าไปที่่ตารางเลย
หรือส่งไปที่ Subform ผมจะเขียนยังไงครับ

ขอบคุณครับ
7 @R21021
อ่อ เข้าใจล่ะครับ ตะกี่ยังงงอยู่ " ขอโทษครับ"
สามารถเอาไปดัดแปลงใช้งานได้แล้วครับ

ขอบคุณอาจารย์ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3852s