กระทู้เก่าบอร์ด อ.Yeadram
2,439 3
URL.หัวข้อ /
URL
นำsubformมาคำนวณอย่างไร
มี subform ที่สามารถเลือกสินค้า แล้วมีราคา เราสามารถนำข้อมูลในsubform มาคำนวณนอกsubformได้ไหมคะ แต่อยู่ในฟอร์มเดียวกันนะคะ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R12672
เจ้าของคำถามหายไป?
ในกรณีทั่วๆไป sub form ไม่จำเป็นต้องใช้ และสามารถทำตามที่คุณ yeadram แจ้งไว้โดยวาง control ที่ footer ก็ได้คำตอบเลย
ส่วนกรณีที่ต้องใช้ sub form จริงๆ ส่วนมากผมชอบใช้วิธี dsum() โดยระบุ เงื่อนไขให้ตรงกับ sub form
ในกรณีทั่วๆไป sub form ไม่จำเป็นต้องใช้ และสามารถทำตามที่คุณ yeadram แจ้งไว้โดยวาง control ที่ footer ก็ได้คำตอบเลย
ส่วนกรณีที่ต้องใช้ sub form จริงๆ ส่วนมากผมชอบใช้วิธี dsum() โดยระบุ เงื่อนไขให้ตรงกับ sub form
3 @R12692
เจ้าของกระทู้มาแล้วค่ะ (กะทิสด!!!)
ก่อนอื่นต้องขอบคุณอาจารย์ yeadram และอาจารย์PichaiTC มากๆเลยนะคะ
คือว่า ในSubform จะมี รายการ(No) ชื่อสินค้า(product) จำนวน(amount) ราคาต่อหน่อย(pricePerUnit) และราคารวม(total)
แล้วในช่องของราคารวม ดิฉันใช้ =[amount]*[pricePerUnit] แล้วดิฉันก็สร้าง Text box เพื่อแสดงผลรวมของทั้งใบเสร็จ(มีรายการสินค้ามากกว่า1รายการ) แล้วดิฉันไม่ทราบว่าจะกำหนด เงือนไข DSum ในText boxดังกล่าวอย่างไรคะ
ขอบคุณล่วงหน้าค่ะ
ก่อนอื่นต้องขอบคุณอาจารย์ yeadram และอาจารย์PichaiTC มากๆเลยนะคะ
คือว่า ในSubform จะมี รายการ(No) ชื่อสินค้า(product) จำนวน(amount) ราคาต่อหน่อย(pricePerUnit) และราคารวม(total)
แล้วในช่องของราคารวม ดิฉันใช้ =[amount]*[pricePerUnit] แล้วดิฉันก็สร้าง Text box เพื่อแสดงผลรวมของทั้งใบเสร็จ(มีรายการสินค้ามากกว่า1รายการ) แล้วดิฉันไม่ทราบว่าจะกำหนด เงือนไข DSum ในText boxดังกล่าวอย่างไรคะ
ขอบคุณล่วงหน้าค่ะ
Time: 0.2874s
ให้มีส่วนท้ายของฟอร์มด้วย
เพิ่มคอนโทรล textbox ไว้ตัวหนึ่ง สมมติตั้งชื่อไว้ว่า txTotal_s
เขียนนิพจน์ ใส่ไว้ใน textbox ตัวนั้น เช่น =sum([จำนวน]*[ราคา])
ในฟอร์มหลัก หากต้องการนำค่าผลการคำนวนนั้นมาใช้ อาจจะสร้าง textbox ไว้อีกตัวหนึ่ง สมมติว่าชื่อ txTotal_m
ถ้าต้องการค่าผลรวมมาแสดงใน textbox นี้ ทำได้สองวิธีคือการเขียนนิพจน์ หรือการเขียนด้วยโค้ดซึ่งฝังไว้ในเหตุการณ์ที่ต้องการ
การเขียนนิพจน์ ให้เขียน
=[ชื่อคอนโทรลsubform]![form]![txTotal_s]
อาจมี error ค่อยๆ แก้กันไป เนื่องจากอ้างชื่อผิด และ/หรือระบบไม่สามารถแยกแยะชื่อได้ (ส่วนใหญ่ วิซาร์ดมักจะพาเราสร้างคอนโทรลด้วยชื่ออัตโนมัติซึ่งบางที่ก็ซ้ำ เช่น ชื่อฟอร์มย่อย กับชื่อคอนโทรลของฟอร์มย่อย ดันเป็นคำเดียวกัน ระบบแยกแยะไม่ออก เกิด error)
ถ้าจะเขียนเป็นโค้ด อันนี้ปัญหาที่อาจเกิด มีโอกาสน้อย แต่ก็ใช่ว่าจะไม่มี เพราะเหตุผลเดียวกันครับ
ให้อ้าง
me.txTotal_m = me.[ชื่อคอนโทรลฟอร์มย่อย].form.control("txTotal_s")
หรืออาจต้อง
me.txTotal_m = me.[ชื่อคอนโทรลฟอร์มย่อย].form.FooterSection.control("txTotal_s")
ขอย้ำว่าให้ใช้ชื่อคอนโทรลฟอร์มย่อยนะครับ ไม่ใช่ชื่อฟอร์มย่อย (ถ้าใช้วิซาร์ดช่วยสร้างฟอร์มย่อย ระบบมักจะให้เป็นคำเดียวกัน แล้วเกิดปัญหาการอ้างอิงทีหลัง หากต้องมีการเขียนโค้ดหรือนิพจน์อ้างอิง จุดนี้ Access น่าจะปรับปรุงตั้งนานแล้ว ไม่เห็นแก้ไขสักที)