กระทู้เก่าบอร์ด อ.Yeadram
1,259 6
URL.หัวข้อ /
URL
ช่วยลบกวนดู IIF หน่อยครับ
ผมเขียน IIF ให้หาค่าใน Query ครับ
SCO5:IIF([SCO3]="1",IIF([A_ResultsOK] = True,"1", IIF([A_ResultsOK] = False And [A_ResultsNG] = False,"4","3"), IIF([SCO3]="2",iif([A_ResultsOK]=True,"1", IIF([A_ResultsOK]=False And [A_ResultsNG]=False,"2","3")))
มีใจความว่า
ถ้า SCO3 = 1 ถ้าใช่
A_ResultsOK=True (ให้ค่าเท่ากับ1)
A_ResultsOK และA_ResultsNG =False (คือ2ค่าไม่ได้ติกถูกให้เท่ากับ4)
ถ้า SCO3 = 2 ถ้าใช่
A_ResultsOK=True (ให้ค่าเท่ากับ1)
A_ResultsOK และA_ResultsNG =False (คือ2ค่าไม่ได้ติกถูกให้เท่ากับ2)
ถ้านอกเหนือจากนั้นให้ = 3 ทั้งหมด
มัน Error ครับ
the expression you entered is missing a closing parenthesis
ช่วยดูหน่อยครับ หรือมีวิธีเขียนย่อๆกว่านี้หรือไม่ครับ
ขอบคุณครับ
SCO5:IIF([SCO3]="1",IIF([A_ResultsOK] = True,"1", IIF([A_ResultsOK] = False And [A_ResultsNG] = False,"4","3"), IIF([SCO3]="2",iif([A_ResultsOK]=True,"1", IIF([A_ResultsOK]=False And [A_ResultsNG]=False,"2","3")))
มีใจความว่า
ถ้า SCO3 = 1 ถ้าใช่
A_ResultsOK=True (ให้ค่าเท่ากับ1)
A_ResultsOK และA_ResultsNG =False (คือ2ค่าไม่ได้ติกถูกให้เท่ากับ4)
ถ้า SCO3 = 2 ถ้าใช่
A_ResultsOK=True (ให้ค่าเท่ากับ1)
A_ResultsOK และA_ResultsNG =False (คือ2ค่าไม่ได้ติกถูกให้เท่ากับ2)
ถ้านอกเหนือจากนั้นให้ = 3 ทั้งหมด
มัน Error ครับ
the expression you entered is missing a closing parenthesis
ช่วยดูหน่อยครับ หรือมีวิธีเขียนย่อๆกว่านี้หรือไม่ครับ
ขอบคุณครับ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R21014
ผมเทศกับทุกเงื่อนไขแล้วครับ ปรากฎว่า
เงื่อนไขสุดท้ายครับไม่ขึ้น
คือนอกเหนือจากนั้นให้ = 3 ทั้งหมด ผมต้องใส่ตรงช่วงไหนครับ
[A_ResultsNG]=False,"2","3"))))
[A_ResultsNG]=False,"2"),"3")))
[A_ResultsNG]=False,"2")),"3"))
[A_ResultsNG]=False,"2"))),"3")
มันก็ยังไม่ได้ครับ
เงื่อนไขสุดท้ายครับไม่ขึ้น
คือนอกเหนือจากนั้นให้ = 3 ทั้งหมด ผมต้องใส่ตรงช่วงไหนครับ
[A_ResultsNG]=False,"2","3"))))
[A_ResultsNG]=False,"2"),"3")))
[A_ResultsNG]=False,"2")),"3"))
[A_ResultsNG]=False,"2"))),"3")
มันก็ยังไม่ได้ครับ
3 @R21015
โอเค เลยครับ
SCO5:IIf([SCO3]="1",IIf([A_ResultsOK]=True,"1",IIF([A_ResultsOK]=False And [A_ResultsNG]=False,"4","3")), IIf([SCO3]="2",IIf([A_ResultsOK]=True,"1", IIf([A_ResultsOK]=False And [A_ResultsNG]=False,"2")),"3"))
ผมว่าการเขียนโปรแกรม บางครั้งก็อยากจะถามในส่วนที่ติดกับใครซักคน
แค่ถามครับ พอได้นั่งเขียนคำถาม มันก็ทำให้คิดออกได้เหมือนกัน
ขอบคุณครับ
SCO5:IIf([SCO3]="1",IIf([A_ResultsOK]=True,"1",IIF([A_ResultsOK]=False And [A_ResultsNG]=False,"4","3")), IIf([SCO3]="2",IIf([A_ResultsOK]=True,"1", IIf([A_ResultsOK]=False And [A_ResultsNG]=False,"2")),"3"))
ผมว่าการเขียนโปรแกรม บางครั้งก็อยากจะถามในส่วนที่ติดกับใครซักคน
แค่ถามครับ พอได้นั่งเขียนคำถาม มันก็ทำให้คิดออกได้เหมือนกัน
ขอบคุณครับ
4 @R21022
ขอสอบถามเพิ่มครับอาจารย์ที่เคารพ
หากเงื่อนไขที่ผมเขียนขึ้นมานี้ ผมต้องการเพิ่มในส่วนของ
เงื่อนไขตรงหากกดเลือก A_ResultsOK ,A_ResultsNG แล้ว
ให้เงื่อนไขหยุดและเป็นคำตอบสุดท้าย
แต่ตอนนี้ SCO3 มันเป็นการคำนวณเวลามาครับ คือถ้าเวลาถอยมาก็จะได้ค่า
1 ,2 ,3 ตามลำดับครับ สุดท้ายแล้วก็จะหยุดที่ 3 ครับ
แต่ Code ที่ผมเขียนมันยังคำนวนต่อครับ เช่นหาก SCO3 = 1 และผมเลือก
A_ResultsOK แล้ว ได้คำตอบคือ 1 แต่ถ้าม SCO3 เปลี่ยนเป็น2 หรือ3 มันก็จะเปลี่ยนไปเป็นอีกคำตอบครับ ผมอยากจะให้มันหยุดคำนวณหากผม
กดเลือก A_ResultsOK ,A_ResultsNG แล้วผมจะเขียนยังไงครับ
ขอบคุณครับ
หากเงื่อนไขที่ผมเขียนขึ้นมานี้ ผมต้องการเพิ่มในส่วนของ
เงื่อนไขตรงหากกดเลือก A_ResultsOK ,A_ResultsNG แล้ว
ให้เงื่อนไขหยุดและเป็นคำตอบสุดท้าย
แต่ตอนนี้ SCO3 มันเป็นการคำนวณเวลามาครับ คือถ้าเวลาถอยมาก็จะได้ค่า
1 ,2 ,3 ตามลำดับครับ สุดท้ายแล้วก็จะหยุดที่ 3 ครับ
แต่ Code ที่ผมเขียนมันยังคำนวนต่อครับ เช่นหาก SCO3 = 1 และผมเลือก
A_ResultsOK แล้ว ได้คำตอบคือ 1 แต่ถ้าม SCO3 เปลี่ยนเป็น2 หรือ3 มันก็จะเปลี่ยนไปเป็นอีกคำตอบครับ ผมอยากจะให้มันหยุดคำนวณหากผม
กดเลือก A_ResultsOK ,A_ResultsNG แล้วผมจะเขียนยังไงครับ
ขอบคุณครับ
5 @R21023
ผมคิดว่าในกรณีที่มีเงื่อนไขเยอะๆ ให้แยกออกมาทำเป็น function เลยดีกว่า โดยสร้างไว้ใน Module ที่แยกออกมาต่างหาก ออกมาก็จะเป็นลักษณะนี้
public function GetSCO5(SCO3 as string, OK as boolean, NG as boolean) as string
if ...
GetSCO5 = ...
else
GetSCO5 = ...
end if
end function
ส่วนคำสั่ง SQL ของคุณ ก็จะเป็น
select ..., GetSCO5(SCO3, [A_ResultsOK], [A_ResultsNG]), ... from .... where ...
public function GetSCO5(SCO3 as string, OK as boolean, NG as boolean) as string
if ...
GetSCO5 = ...
else
GetSCO5 = ...
end if
end function
ส่วนคำสั่ง SQL ของคุณ ก็จะเป็น
select ..., GetSCO5(SCO3, [A_ResultsOK], [A_ResultsNG]), ... from .... where ...
6 @R21035
ขอบคุณอาจารย์ครับ
ผมกำลังทดลองทำตามอาจารย์อยู่ครับ ที่ไม่เข้ามาแจ้งผลผมยังไม่ได้ครับ
รอผมเขียนอีกแปบครับ ยังไงเดี๋ยวกลัมมาแจ้งครับ
ขอบคุณอาจารย์ครับ
ผมกำลังทดลองทำตามอาจารย์อยู่ครับ ที่ไม่เข้ามาแจ้งผลผมยังไม่ได้ครับ
รอผมเขียนอีกแปบครับ ยังไงเดี๋ยวกลัมมาแจ้งครับ
ขอบคุณอาจารย์ครับ
Time: 0.3655s
SCO5:IIf([SCO3]="1",IIf([A_ResultsOK]=True,"1",IIF([A_ResultsOK]=False And [A_ResultsNG]=False,"4","3")), IIf([SCO3]="2",IIf([A_ResultsOK]=True,"1", IIf([A_ResultsOK]=False And [A_ResultsNG]=False,"2","3"))))