กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
234 1
URL.หัวข้อ /
URL
... รบกวนอาจารย์สุภาพช่วยเข้ามาดูFunction Switch() หน่อยครับ
คือผมได้ใช้ Function Switch() ใน control source บน textbox ใน form น่ะครับ
ได้ใส่คำสั่งดังนี้
=Switch([WOR_SALARYTYPE]="รายเดือน" And [emp_monthlytodaywork]=0,([WOR_SALARY]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])*([DEB_SOCIAL]/100),[wor_salarytype]="รายวัน",([SAL_WORKINGDAYSUM]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])*([DEB_SOCIAL]/100),[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=-1,([sal_workingdaysum]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])*([DEB_SOCIAL]/100),[WOR_SALARYTYPE]="รายวัน" And ([sal_workingdaysum]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])<=1650,66,[wor_salarytype]="รายวัน" And ([SAL_WORKINGDAYSUM]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])>=15000,600,[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=0 And ([wor_salary]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])<=1650,66,[WOR_SALARYTYPE]="รายเดือน" And [emp_monthlytodaywork]=0 And ([wor_salary]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])>=15000,600,[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=-1 And ([sal_workingdaysum]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])<=1650,66,[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=-1 And ([sal_workingdaysum]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])>=15000,600)
ซึ่งผมเข้าใจว่าถ้าใช้ IIF จะใช้ได้แค่เงื่อนไขเดียวใช่ไหมครับ และถ้ามากกว่าสองเงื่อนไข ก็ต้องใช้ Switch
ทีนี้ ตอนแรกผมได้ใช้ switch() แต่ใช้เงื่อนไขแค่สามเงื่อนไข (ก็สามเงื่อนไขแรกสุดน่ะครับ) ปรากฎว่าได้ครับ แต่พอเพิ่มเงื่อนไขเข้าไปอีก ดังที่ตามข้างบน มันกลับ มันทำตามแค่สามเงื่อนไขแรกเท่านั้นน่ะครับ (ถึง run แล้วตรงเงื่อนไขอื่น มันก็จะไปทำตามแต่ในสามเงื่อนไขแรกเท่านั้นน่ะครับ)
ไม่ทราบว่าผมเขียนตรงไหนผิดไปหรือป่าว หรือว่า switch ใช้ได้มากสุดแค่ สามเงื่อนไขครับ
รบกวนอาจารย์ช่วยแนะนำด้วยนะครับ
แล้วถ้าวิธีนี้ไม่ได้จริงๆ มีวิธีอื่นอีกไหมครับ
ขอบคุณมากครับ
ได้ใส่คำสั่งดังนี้
=Switch([WOR_SALARYTYPE]="รายเดือน" And [emp_monthlytodaywork]=0,([WOR_SALARY]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])*([DEB_SOCIAL]/100),[wor_salarytype]="รายวัน",([SAL_WORKINGDAYSUM]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])*([DEB_SOCIAL]/100),[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=-1,([sal_workingdaysum]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])*([DEB_SOCIAL]/100),[WOR_SALARYTYPE]="รายวัน" And ([sal_workingdaysum]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])<=1650,66,[wor_salarytype]="รายวัน" And ([SAL_WORKINGDAYSUM]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])>=15000,600,[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=0 And ([wor_salary]+[SAL_EXTRASUM]+[SAL_REPAYINGDAYSUM]+[SAL_RELAXINGDAYSUM])<=1650,66,[WOR_SALARYTYPE]="รายเดือน" And [emp_monthlytodaywork]=0 And ([wor_salary]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])>=15000,600,[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=-1 And ([sal_workingdaysum]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])<=1650,66,[wor_salarytype]="รายเดือน" And [emp_monthlytodaywork]=-1 And ([sal_workingdaysum]+[sal_extrasum]+[sal_repayingdaysum]+[sal_relaxingdaysum])>=15000,600)
ซึ่งผมเข้าใจว่าถ้าใช้ IIF จะใช้ได้แค่เงื่อนไขเดียวใช่ไหมครับ และถ้ามากกว่าสองเงื่อนไข ก็ต้องใช้ Switch
ทีนี้ ตอนแรกผมได้ใช้ switch() แต่ใช้เงื่อนไขแค่สามเงื่อนไข (ก็สามเงื่อนไขแรกสุดน่ะครับ) ปรากฎว่าได้ครับ แต่พอเพิ่มเงื่อนไขเข้าไปอีก ดังที่ตามข้างบน มันกลับ มันทำตามแค่สามเงื่อนไขแรกเท่านั้นน่ะครับ (ถึง run แล้วตรงเงื่อนไขอื่น มันก็จะไปทำตามแต่ในสามเงื่อนไขแรกเท่านั้นน่ะครับ)
ไม่ทราบว่าผมเขียนตรงไหนผิดไปหรือป่าว หรือว่า switch ใช้ได้มากสุดแค่ สามเงื่อนไขครับ
รบกวนอาจารย์ช่วยแนะนำด้วยนะครับ
แล้วถ้าวิธีนี้ไม่ได้จริงๆ มีวิธีอื่นอีกไหมครับ
ขอบคุณมากครับ
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
Time: 0.0771s
การใช้ Switch() หรือ IIF() จะไม่มีข้อจำกัดครับ แต่ถ้าจำไม่ผิดจะได้ไม่เกิน 1024 ตัวอักษรครับ