Page 1 of 1
อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Wed Nov 18, 2015 1:41 pm
by Serverchita
อยากรู้วิธีการ Sum แบบหลายเงื่อนไข ใช้ข้อมูลจาก Table แล้ว Sum ข้อมูลมาโชว์บน Forms ในช่อง Textbox
เช่น ใน Table มีข้อมูลการขายหลายวันที่ มีพนักงานขายหลายคน เลยต้องการเลือก Sum วันที่ปัจจุบัน และพนักงานแต่ละคนขายได้ยอดเท่าไหร่ ต่อวัน
(คำถามอาจจะเข้าใจยาก คือ อยากใช้ Sumifs แบบ Excel บน Access)
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Wed Nov 18, 2015 3:50 pm
by bank9597
หากเงื่อนไขชื่อพนักงานเป็น Text คีย์
=DSum("[Field_Amount]","TableName","[Field_User]= '" & [txtUser] & "' and [Field_Date]=" & '[txtDate]')
หากเงื่อนไขชื่อพนักงานเป็น Number คีย์
=DSum("[Field_Amount]","TableName","[Field_User]= " & [txtUser] & " and [Field_Date]=" & '[txtDate]')
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Wed Nov 18, 2015 5:16 pm
by Serverchita
ลองทำแล้วครับ ทั้ง 2 แบบ ยังไมได้ครับ แต่ก็เป็นแนวทางได้ครับ ขอบคุณครับ แต่วันผมใช้แบบ Date()
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Wed Nov 18, 2015 5:30 pm
by bank9597
ต้องได้สิครับ ลองดูไฟล์ตัวอย่างน่ะครับ
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Wed Nov 18, 2015 6:35 pm
by Serverchita
ได้แล้วครับ แต่ผมต้องกรอกวันที่ ที่ต้องการหาเอง ที่ไม่ได้เพราะผมใช้วันแบบ Textbox [Today() หรือ Date()]
จะแก้ตรงไหนดีครับเพราะผมอยากได้แบบไม่ต้องมานั่งเปลี่ยนวันเอง อยากได้แบบ Auto วันที่ครับ
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Wed Nov 18, 2015 11:02 pm
by bank9597
ลองดูครับ
=DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=date()")
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Thu Nov 19, 2015 2:09 pm
by Serverchita
bank9597 wrote: ลองดูครับ
=DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=date()")
ทำได้แล้วครับ ขอบคุณมาก ๆ เลยครับ
ขอถามเพิ่มอีกนิดนะครับ ถ้าจะเอาเงื่อนไขที่ 3 เพิ่มเข้าไป ต่อจากสูตรด้านบน กรณีต้องการ [กรอกเวลาเริ่ม] และ [กรอกเวลาจบ] ได้ไหมครับ
เช่น เวลาเริ่ม 08:00:00 และ เวลาจบ 17:00:00
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Thu Nov 19, 2015 4:55 pm
by bank9597
ลองปรับจากสูตรนี้ครับ
=DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=date() and [TransTime]>=[txtFrom] and [TransTime]<=[txtTo]")
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Fri Nov 20, 2015 10:59 am
by Serverchita
bank9597 wrote: ลองปรับจากสูตรนี้ครับ
=DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=date() and [TransTime]>=[txtFrom] and [TransTime]<=[txtTo]")
สูตรแบบที่ต้องการเลยครับ ขอปรับสูตรตรง =Date() เป็นแบบกรอกวันที่เองดีกว่าครับ ติดที่สุดท้ายแล้วครับ
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Fri Nov 20, 2015 11:31 am
by bank9597
=DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=[txtDate] and [TransTime]>=[txtFrom] and [TransTime]<=[txtTo]")
ผมไม่แนะนำให้ใช้สูตรครับ ทางที่ดี เขียนโค๊ดคำนวนจะดีกว่า เพราะเมื่อข้อมูลมีจำนวนมาก จะทำให้คำนวนช้าและส่งผลให้การเปิดฟอร์มช้าไปด้วยครับ
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Fri Nov 20, 2015 12:14 pm
by Serverchita
bank9597 wrote:
=DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=[txtDate] and [TransTime]>=[txtFrom] and [TransTime]<=[txtTo]")
ผมไม่แนะนำให้ใช้สูตรครับ ทางที่ดี เขียนโค๊ดคำนวนจะดีกว่า เพราะเมื่อข้อมูลมีจำนวนมาก จะทำให้คำนวนช้าและส่งผลให้การเปิดฟอร์มช้าไปด้วยครับ
ไฟล์ที่แนบมาผมลองแล้ว Access Error เลยครับ
ผมลองเปลี่ยนใหม่ =DSum("[Amount]","tblDate","[UserName]= " & [txtUser] & " and [TransDate]=" & '[Date]' & " and [TransTime]>=[txtFrom] and [TransTime]<=[txtTo]")
แล้วมีโค๊ดที่ประมาณว่า ถ้า Dsum = ค่าว่าง ให้ผลออกมาคือ เลข 0 เพราะผมใช้ Dsum+Dsum+Dsum
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Fri Nov 20, 2015 12:28 pm
by bank9597
ลองปรับฟอร์แมตของ Control ครับ
ที่ txtDate ฟอร์แมตเป็น ShortDate
ที่ txtFrom ฟอร์แมตเป็น LongTime
ที่ txtTo ฟอร์แมตเป็น LongTime
ผลที่ได้
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Fri Nov 20, 2015 2:58 pm
by Serverchita
bank9597 wrote: ลองปรับฟอร์แมตของ Control ครับ
ที่ txtDate ฟอร์แมตเป็น ShortDate
ที่ txtFrom ฟอร์แมตเป็น LongTime
ที่ txtTo ฟอร์แมตเป็น LongTime
ผลที่ได้
ได้แล้วครับ
ตอนนี้ 1 textbox ผมจะให้มี 3 Dsum คือ Dsum1+Dsum2+Dsum3
ถ้ามี 1 ใน 3 Dsum นี้ มีค่าว่าง จะทำให้ Textbox ไม่โชว์ค่าเลย
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Fri Nov 20, 2015 3:41 pm
by bank9597
อย่าเพิ่มภาระการคำนวนให้กับโปรแกรมเลยครับ
ปรับสูตรเป็น
=IIf(IsNull([txtUser]),"",IIf(IsNull([txtDate]),"",IIf(IsNull([txtFrom]),"",IIf(IsNull([txtTo]),"",DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=[txtDate] and [TransTime]>=[txtFrom] and [TransTime]<=[txtTo]")))))
**อ้างอิงไฟล์ที่ผมแนบไว้ล่าสุดครับ
Re: อยากรู้วิธีการ Sum แบบหลายเงื่อนไขบน Access ครับ
Posted: Fri Nov 20, 2015 5:32 pm
by Serverchita
bank9597 wrote: อย่าเพิ่มภาระการคำนวนให้กับโปรแกรมเลยครับ
ปรับสูตรเป็น
=IIf(IsNull([txtUser]),"",IIf(IsNull([txtDate]),"",IIf(IsNull([txtFrom]),"",IIf(IsNull([txtTo]),"",DSum("[Amount]","tblData","[UserName]= '" & [txtUser] & "' and [TransDate]=[txtDate] and [TransTime]>=[txtFrom] and [TransTime]<=[txtTo]")))))
**อ้างอิงไฟล์ที่ผมแนบไว้ล่าสุดครับ
ผมแก้ไขปัญหานี้ได้แล้วครับ ขอบคุณครับที่ให้คำแนะนำ