กระทู้เก่าบอร์ด อ.Yeadram
2,104 16
URL.หัวข้อ /
URL
ปัญหาการกำหนดรูปแปบบข้อมูล Standrad
คือว่าเทเบิ้ลข้อมูลผมกำหนดเป็น single แต่ใน query ผมกำหนดเป็น Standrad ปัญหาคือ ถ้าตัวเลยเป็น 0 มันจะแสดงเป็น 0.00 ซึ่งในความเป็นจริงมันต้องเป็น 0 อย่างเดียว ไม่ทราบว่าผมไปกำหนดที่ไหนครับ
16 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R17242
แต่ปัญหาคือ ที่เทเบิ้ลผมกำหนด format เป็น #,###.00Red ซิครับ เลยไม่สามารถเลือกเป็น Standard ได้
พอดีว่าใส่ [ ] ระหว่าง red ในบอร์ดไม่ได้เดียวมันกลายเป็นสีแดง
พอดีว่าใส่ [ ] ระหว่าง red ในบอร์ดไม่ได้เดียวมันกลายเป็นสีแดง
3 @R17243
งั้นก็ไปเอาที่ Table ออกสิครับ
4 @R17244
ผมกำหนดเทเบิ้ลเป็น Standard ส่วน query เป็น general แล้วครับ
ปรากฏว่าตัวเลขที่มีทศนิยมมันมีมากกว่า 2 ตำแหน่ง
คือผมต้องการให้ถ้ามีทศนิยมให้แสดง2ตำแหน่ง ส่วนถ้าไม่มีให้แสดงเป็นเลขจำนวนเต็ม เช่น
0
1
1.62
1.60
2
ประมาณนี้ครับ
ปรากฏว่าตัวเลขที่มีทศนิยมมันมีมากกว่า 2 ตำแหน่ง
คือผมต้องการให้ถ้ามีทศนิยมให้แสดง2ตำแหน่ง ส่วนถ้าไม่มีให้แสดงเป็นเลขจำนวนเต็ม เช่น
0
1
1.62
1.60
2
ประมาณนี้ครับ
5 @R17245
ที่ Format ของฟิลด์นั้นใน Query ให้กำหนดเป็น
#,###.##
มันจะแสดงเป็น
0.
1.
1.62
1.60
2.
มีจุดต่อท้ายให้ทุกตัว
ถ้าอยากให้ไม่มีจุด ต้องใช้ Format ยาวกกว่านี้
#,###.##
มันจะแสดงเป็น
0.
1.
1.62
1.60
2.
มีจุดต่อท้ายให้ทุกตัว
ถ้าอยากให้ไม่มีจุด ต้องใช้ Format ยาวกกว่านี้
6 @R17246
เอถ้าเป็นจำนวนเต็มมี . ต่อท้ายด้วยหรือครับ ถ้าไม่มีจุดนี่พอจะมีวิธีไหมครับ
7 @R17247
เท่าที่รู้ผมว่าไม่มีนะครับ การใช้ Format แบบให้แสดงจุดบ้างไม่แสดงจุดบ้าง คำว่า Format ชื่อก็บอกแล้วว่า รูปแบบ แปลว่ารูปแบบเหมือนกัน คือถ้าจะให้แสดงทศนิยมก็ต้องแสดงหมด ไม่แสดงก็ต้องไม่แสดงหมด
มีคนเคยถามเรื่องนี้มาแล้วนะครับ แต่จำกระทู้ไม่ได้แล้วถ้าลองหาดูอาจเจอ
เท่าที่ผมคิดได้ก็ใช้การเขียนฟังก์ชั่นแทนครับ
Public Function TTT(DigiNum As String)
If InStr(1, DigiNum, ".") <> 0 Then
TTT = Format(DigiNum, "0.00")
Else
TTT = Format(DigiNum, "0")
End If
End Function
แล้วคุณก็เอาฟังก์ชั่นนี้ไปใช้ในคิวรี่แทน เช่น
Expr1: IIf(IsNull([ชื่อฟิลด์]),Null,TTT([ชื่อฟิลด์]))
ประมาณนี้ครับ ลองดูครับ
มีคนเคยถามเรื่องนี้มาแล้วนะครับ แต่จำกระทู้ไม่ได้แล้วถ้าลองหาดูอาจเจอ
เท่าที่ผมคิดได้ก็ใช้การเขียนฟังก์ชั่นแทนครับ
Public Function TTT(DigiNum As String)
If InStr(1, DigiNum, ".") <> 0 Then
TTT = Format(DigiNum, "0.00")
Else
TTT = Format(DigiNum, "0")
End If
End Function
แล้วคุณก็เอาฟังก์ชั่นนี้ไปใช้ในคิวรี่แทน เช่น
Expr1: IIf(IsNull([ชื่อฟิลด์]),Null,TTT([ชื่อฟิลด์]))
ประมาณนี้ครับ ลองดูครับ
8 @R17248
ก่อนอื่นผมต้องขอโทษคุณ TTT ก่อนนะครับ ที่ผมแนะนำอีกวิธีนึง
(เพิ่งไปดู Gravity มา=มันมาก เลยเพิ่งเข้ามา)
วิธีการมีดังนี้
1. สมมุติว่าฟิลด์ข้อมูลเราชื่อ Amount
2. ให้กำหนดใน Query ดังนี้ครับ
Expr1: IIf([Amount]=Int([Amount]),Format([Amount],"#,###"),Format([Amount],"#,###.00"))
กราบขออภัยคุณ TTT อีกครั้ง
(เพิ่งไปดู Gravity มา=มันมาก เลยเพิ่งเข้ามา)
วิธีการมีดังนี้
1. สมมุติว่าฟิลด์ข้อมูลเราชื่อ Amount
2. ให้กำหนดใน Query ดังนี้ครับ
Expr1: IIf([Amount]=Int([Amount]),Format([Amount],"#,###"),Format([Amount],"#,###.00"))
กราบขออภัยคุณ TTT อีกครั้ง
9 @R17249
ลืมแปะรูป
10 @R17250
แล้วข้อมูลจะแสดงแบบนี้
11 @R17251
ไม่ต้องขอโทษหรอกครับ สบายๆครับ แต่เท่าที่ดู ก็หลักการณ์เดียวกันอะครับ คือการใช้ If Clause แค่นำมาใช้โดยตรง กับเขียนเป็นฟังก์ชั่นนะครับ
12 @R17252
ไปเอา Format ที่ ตารางกับคิวรีออกให้หมดครับ
แล้วใส่สิ่งที่ผมให้เข้าไป ดูจากรูปได้เลยครับ
วิธีที่ผมกับคุณ TTT ให้มา ถ้าเป็น 0 มันจะแสดงเป็น 0 ตามที่ต้องการครับ
แล้วใส่สิ่งที่ผมให้เข้าไป ดูจากรูปได้เลยครับ
วิธีที่ผมกับคุณ TTT ให้มา ถ้าเป็น 0 มันจะแสดงเป็น 0 ตามที่ต้องการครับ
13 @R17258
ฟิลด์ในที่นี้หมายถึงฟิลด์ในเทเบิ้ลหรือครับ เดิมผมใช้สูตร Total: [WR_Receive]-[WR_Withdraw]+[WR_Return]
ฟิลด์ที่นี้หมายถึง [WR_Receive]-[WR_Withdraw]+[WR_Return] หรือป่าวครับ
ฟิลด์ที่นี้หมายถึง [WR_Receive]-[WR_Withdraw]+[WR_Return] หรือป่าวครับ
14 @R17259
ใช่ครับ
15 @R17260
โค้ดที่ผมแทนที่ Total: [WR_Receive]-[WR_Withdraw]+[WR_Return] คือ
Total: IIf([WR_Receive]-[WR_Withdraw]+[WR_Return]=Int([WR_Receive]-[WR_Withdraw]+[WR_Return])
,Format([WR_Receive]-[WR_Withdraw]+[WR_Return],"#,###"),Format([WR_Receive]-[WR_Withdraw]+[WR_Return]),"#,###.00"))
แต่หลังจากเปลี่ยนโค้ดแล้วมันดึงค่าจากตารางไม่ได้ คือหัวข้อมันก็ว่ามีแต่ตารางคอลัมน์
Total: IIf([WR_Receive]-[WR_Withdraw]+[WR_Return]=Int([WR_Receive]-[WR_Withdraw]+[WR_Return])
,Format([WR_Receive]-[WR_Withdraw]+[WR_Return],"#,###"),Format([WR_Receive]-[WR_Withdraw]+[WR_Return]),"#,###.00"))
แต่หลังจากเปลี่ยนโค้ดแล้วมันดึงค่าจากตารางไม่ได้ คือหัวข้อมันก็ว่ามีแต่ตารางคอลัมน์
16 @R17262
ส่งไฟล์มาให้ผมดูได้ไหมครับ
แยกมาเฉพาะ ตารางที่มีข้อมูลอยู่นิดหน่อย กับ Query ที่มีปัญหาครับ
เพราะถ้าคำนวณยาวขนาดนี้ ผมคงต้องแยกการคำนวณออกมาต่างหากน่ะครับ
แยกมาเฉพาะ ตารางที่มีข้อมูลอยู่นิดหน่อย กับ Query ที่มีปัญหาครับ
เพราะถ้าคำนวณยาวขนาดนี้ ผมคงต้องแยกการคำนวณออกมาต่างหากน่ะครับ
Time: 0.3285s
ที่ Query ให้กำหนดเป็น General แทนครับ