ปัญหาการกำหนดรูปแปบบข้อมูล Standrad
กระทู้เก่าบอร์ด อ.Yeadram

 2,051   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

1 @R17241
กำหนดเป็น Standard มันก็เป็น 0.00
ที่ Query ให้กำหนดเป็น General แทนครับ
2 @R17242
แต่ปัญหาคือ ที่เทเบิ้ลผมกำหนด format เป็น #,###.00Red ซิครับ เลยไม่สามารถเลือกเป็น Standard ได้
พอดีว่าใส่ [ ] ระหว่าง red ในบอร์ดไม่ได้เดียวมันกลายเป็นสีแดง
3 @R17243
งั้นก็ไปเอาที่ Table ออกสิครับ
4 @R17244
ผมกำหนดเทเบิ้ลเป็น Standard ส่วน query เป็น general แล้วครับ
ปรากฏว่าตัวเลขที่มีทศนิยมมันมีมากกว่า 2 ตำแหน่ง
คือผมต้องการให้ถ้ามีทศนิยมให้แสดง2ตำแหน่ง ส่วนถ้าไม่มีให้แสดงเป็นเลขจำนวนเต็ม เช่น
0
1
1.62
1.60
2
ประมาณนี้ครับ
5 @R17245
ที่ Format ของฟิลด์นั้นใน Query ให้กำหนดเป็น

#,###.##

มันจะแสดงเป็น
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([ชื่อฟิลด์]))

ประมาณนี้ครับ ลองดูครับ
8 @R17248
ก่อนอื่นผมต้องขอโทษคุณ 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 ตามที่ต้องการครับ
13 @R17258
ฟิลด์ในที่นี้หมายถึงฟิลด์ในเทเบิ้ลหรือครับ เดิมผมใช้สูตร Total: [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"))

แต่หลังจากเปลี่ยนโค้ดแล้วมันดึงค่าจากตารางไม่ได้ คือหัวข้อมันก็ว่ามีแต่ตารางคอลัมน์
16 @R17262
ส่งไฟล์มาให้ผมดูได้ไหมครับ

แยกมาเฉพาะ ตารางที่มีข้อมูลอยู่นิดหน่อย กับ Query ที่มีปัญหาครับ

เพราะถ้าคำนวณยาวขนาดนี้ ผมคงต้องแยกการคำนวณออกมาต่างหากน่ะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2923s