Thaiadmin

การตั้ง Format ของ Textbox ให้เป็น Currency

0 สมาชิก และ 2 บุคคลทั่วไป กำลังดูหัวข้อนี้

nongjuneza

การตั้ง Format ของ Textbox ให้เป็น Currency
« เมื่อ: 8 สิงหาคม 2010, 18:42:22 »
คือผมใช้ textbox รับค่าตัวเลข แต่ไม่มีการเชื่อมต่อฐานข้อมูลใด ๆ ทั้งสิ้น แต่พอเวลาคีย์ข้อมูล ที่เป็นตัวเลข จำนวนเกินหลักร้อยมันจะเป็น 123456 โดยไม่มี ตัว , คั่น 3 หลัก ผมเลยใช้ format โดยเขียนแบบนี้

Text1 = Format(Text1, "#,###") แต่พอคีย์เข้าไปเป็นหลักพัน ก็ OK ครับ แต่พอคีย์ไปเป็นหลักหมื่น จะกลายเป็นแค่หลักพัน พอหลักหมื่น ตัวสุดท้ายจะ ขึ้นมาอยู่ข้างหน้า เช่น ผมต้องการพิมม์ตัวเลข 12345 มันควรขึ้น
12,345 แต่มันเป็น 51,234

ผมคิดว่าผมตั้งค่า Format น้อยไปมั้ง เลยเปลี่ยน Format เป็น "#,###,###" มันก็เป็นเหมือนเดิมครับ คือพิมพ์ 12345 มันก็ขึ้น51,234

รบกวนด้วยครับ

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #1 เมื่อ: 9 สิงหาคม 2010, 08:39:31 »
จริงๆ แล้วตามหลักจะเป็นแบบนี้อะครับ
Text1.Text = Format(Text1.Text,"#,000.00")  ประมาณนี้ เพราะถ้าใส่ "###" ทั้งหมดเลยมันจะหาค่าไม่ได้ค่าที่ออกมาจะผิดครับ
เมื่อถึง ณ จุดอิ่มตัว จงย้อนกลับไป ณ จุดเริ่มต้น
ไม่ได้ว่าให้เริ่มต้นใหม่ แค่ให้คิดใหม่ในจุดเริ่มต้นเดิม

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #2 เมื่อ: 9 สิงหาคม 2010, 11:32:55 »
จริงๆ แล้วตามหลักจะเป็นแบบนี้อะครับ
Text1.Text = Format(Text1.Text,"#,000.00")  ประมาณนี้ เพราะถ้าใส่ "###" ทั้งหมดเลยมันจะหาค่าไม่ได้ค่าที่ออกมาจะผิดครับ

ผมลองเปลี่ยน Format จาก  #,### เป็น #,000 แล้วคีย์ 12345 มันออกมาเป็นแบบนี้ครับ 3,452,001

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #3 เมื่อ: 9 สิงหาคม 2010, 15:44:22 »
ลืมอีกอันครับ ตองแปลงให้เป็นตัวเลขก่อนเพราะค่าที่รับมามันเป็น String

Text1.Text = Format(cint(Text1.Text),"#,000.00")    >>> vb.net


Text1.Text = Format(val(Text1.Text),"#,000.00")    >>> vb6.0

เมื่อถึง ณ จุดอิ่มตัว จงย้อนกลับไป ณ จุดเริ่มต้น
ไม่ได้ว่าให้เริ่มต้นใหม่ แค่ให้คิดใหม่ในจุดเริ่มต้นเดิม

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #4 เมื่อ: 9 สิงหาคม 2010, 16:36:49 »
ลืมอีกอันครับ ตองแปลงให้เป็นตัวเลขก่อนเพราะค่าที่รับมามันเป็น String

Text1.Text = Format(cint(Text1.Text),"#,000.00")    >>> vb.net


Text1.Text = Format(val(Text1.Text),"#,000.00")    >>> vb6.0



Text1.Text = Format(val(Text1.Text),"#,000.00")    >>> vb6.0

พอผมเขียนคำสั่งนี้ ผลได้ที่ได้ จาก 12345 กลายเป็น พิพม์  1 มันโชว์ 001.00 พอพิมพ์2 มันโชว์ 002.00 จนถึง 005.00 ปวดตึบครับ ไม่รู้เพราะอะไร

ออฟไลน์ SamaKitty VB

  • Global Develop Leader
  • *****
  • 2,949
  • 177
  • เพศ: ชาย
  • ไม่ใช่คนเก่ง ไม่ใช่คนดี ไม่ใช่คนพิเศษ ไม่ใช่..!!
    • Thaiadmin.org Power by : VBNeverdie.com
Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #5 เมื่อ: 9 สิงหาคม 2010, 16:43:45 »
Text1.Text = Format(val(Text1.Text),"#,000.00")    >>> vb6.0

พอผมเขียนคำสั่งนี้ ผลได้ที่ได้ จาก 12345 กลายเป็น พิพม์  1 มันโชว์ 001.00 พอพิมพ์2 มันโชว์ 002.00 จนถึง 005.00 ปวดตึบครับ ไม่รู้เพราะอะไร

ลอง 

Text1.Text = Format(CCur(Text1.Text),"#,###.##")    >>> vb6.0
Hi... Welcome to Thaiadmin.org
Power by VBNeverDie.Com

SMF Mod & Template Modify, Hosting, Chat Room, Joomla Web, Flash Header, Images Decorate

ขออภัย ถ้าไม่ตอบ PM ครับ : กรุณา ถามตอบในบอร์ด

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #6 เมื่อ: 11 สิงหาคม 2010, 15:29:23 »
ลอง 

Text1.Text = Format(CCur(Text1.Text),"#,###.##")    >>> vb6.0

ผลออกมาจาการคีย์ 12345 เป็น 52,341สงสัยจะยาวครับงานนี้  :-\
เมื่อ: 09 สิงหาคม 2010, 17:19:56
มีใครพอจะทราบวิธีแก้ไขบ้างครับ

ออฟไลน์ mrjenova

  • ***
  • 113
  • 1
    • www.xn--12c2bo7a3ec2o.com
Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #7 เมื่อ: 11 สิงหาคม 2010, 15:52:27 »
ลองแบบนี้หรือยังครับ

TextBox1.Text = Format(CDec(TextBox1.Text), "##,##0.00")

ทดสอบแล้วได้ชัว
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #8 เมื่อ: 11 สิงหาคม 2010, 20:40:23 »
ลองแบบนี้หรือยังครับ

TextBox1.Text = Format(CDec(TextBox1.Text), "##,##0.00")

ทดสอบแล้วได้ชัว

ถ้าคุณลองแล้วได้ชัว ผมว่าเครื่องผม format อะไรบ้างอย่างคงจะเพี้ยน

เพราะทำแล้ว พอพิมพ์ 12345 กลายเป็น 52,341.00  :'( เกิดอะไรขึ้นเนี้ย

ออฟไลน์ mrjenova

  • ***
  • 113
  • 1
    • www.xn--12c2bo7a3ec2o.com
Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #9 เมื่อ: 11 สิงหาคม 2010, 20:52:28 »
ถ้าคุณลองแล้วได้ชัว ผมว่าเครื่องผม format อะไรบ้างอย่างคงจะเพี้ยน

เพราะทำแล้ว พอพิมพ์ 12345 กลายเป็น 52,341.00  :'( เกิดอะไรขึ้นเนี้ย

ลองลง VB ใหม่สิครับ อาจจะเพี้ยนตรงนี้ก็ได้ น่ะครับ  หรือไม่ก็ลอง new project ใหม่เลยครับ  ถ้าไม่ได้อีก ก็คงเป็นที่เครื่องคุณแล้วแหละ
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #10 เมื่อ: 17 สิงหาคม 2010, 08:45:42 »
ขนาดทำทุกรูปแบบขนาดนี้แล้วยังมีปัญหาอีก

ลองดูสิว่าตอนที่สั่งโปรแกรมทำงานเนี่ยคุณทำ Event ตอนไหน

ตรวสอบความเป็นไปได้ระหว่างค่าเดิมกับการ แสดงค่าหลายรูปแบบ

ตัวอย่างเช่น

Private Sub Command1_Click()
 Dim iTest As Double
 
 iTest = Text1.Text
 
 Text2.Text = Format(iTest, "#,##0.00")
 
 MsgBox (iTest)
 
 
End Sub

ผลลัพท์ที่ได้ตามภาพเลยครับ


ถ้ายังติดปัญหาอีกเป็นที่เครื่องคุณแล้วละครับที่อาจจะมีปัญหา
เมื่อถึง ณ จุดอิ่มตัว จงย้อนกลับไป ณ จุดเริ่มต้น
ไม่ได้ว่าให้เริ่มต้นใหม่ แค่ให้คิดใหม่ในจุดเริ่มต้นเดิม

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #11 เมื่อ: 18 สิงหาคม 2010, 08:39:48 »
ขนาดทำทุกรูปแบบขนาดนี้แล้วยังมีปัญหาอีก

ลองดูสิว่าตอนที่สั่งโปรแกรมทำงานเนี่ยคุณทำ Event ตอนไหน

ตรวสอบความเป็นไปได้ระหว่างค่าเดิมกับการ แสดงค่าหลายรูปแบบ

ตัวอย่างเช่น

Private Sub Command1_Click()
 Dim iTest As Double
 
 iTest = Text1.Text
 
 Text2.Text = Format(iTest, "#,##0.00")
 
 MsgBox (iTest)
 
 
End Sub

ผลลัพท์ที่ได้ตามภาพเลยครับ


ถ้ายังติดปัญหาอีกเป็นที่เครื่องคุณแล้วละครับที่อาจจะมีปัญหา

ถ้าทำแบบที่คุณบอกนี้ได้เลยครับถูกต้อง แต่ผมต้องการแบบนี้ครับ

Private Sub Text1_Change()
    Text1.Text = Format(Text1.TabIndex, "#,##0.00")
End Sub

หรือว่าเป็นเพราะผมไปใส่ไว้ใน change() เลยมีอาการผิดปกติ หรือว่ามันต้องมีเทคนิค ถึงจะทำได้

เริ่มมาถูกทางแล้ว ขอบคุณมากครับ เดี๋ยวหาสาเหตุต่อไป  :)

ออฟไลน์ mrjenova

  • ***
  • 113
  • 1
    • www.xn--12c2bo7a3ec2o.com
Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #12 เมื่อ: 18 สิงหาคม 2010, 08:45:15 »
Private Sub Text1_Change()
    Text1.Text = Format(Text1.TabIndex, "#,##0.00")
End Sub

เหตุการณ์บรรทัดแรกน่ะถูกแล้ว ผมก็ทำโดยใช้เหตุการณ์ change() ค่าออกมาก็ถูกต้อง 

แต่ลองดูบรรทัดที่สอง ตรง Text1.TabIndex นี่มันแปลกๆน่ะครับ ค่าที่ออกมาผิดน่าจะเป็นตรงนี้นี่แหละ มันไปเอาค่า index ในหน่วยความจำมาแสดงผลหรือป่าว เพราะที่จริงมันต้องเป็น text1.text แบบตัวอย่างด้านล่างนี้

TextBox1.Text = Format(CDec(TextBox1.Text), "##,##0.00")
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #13 เมื่อ: 18 สิงหาคม 2010, 08:55:03 »
 ;D ;D ;D ;D

พอมาถูกทางก็ได้เลยครับ ต้องใส่ที่นี้ครับ

Private Sub Text1_LostFocus()

ขอบคุณมากครับผม งมอยู่นาน เส้นผมบังภูเขาจริง ๆ  ;D
เมื่อ: 18 สิงหาคม 2010, 08:46:29
Private Sub Text1_Change()
    Text1.Text = Format(Text1.TabIndex, "#,##0.00")
End Sub

เหตุการณ์บรรทัดแรกน่ะถูกแล้ว ผมก็ทำโดยใช้เหตุการณ์ change() ค่าออกมาก็ถูกต้อง 

แต่ลองดูบรรทัดที่สอง ตรง Text1.TabIndex นี่มันแปลกๆน่ะครับ ค่าที่ออกมาผิดน่าจะเป็นตรงนี้นี่แหละ มันไปเอาค่า index ในหน่วยความจำมาแสดงผลหรือป่าว เพราะที่จริงมันต้องเป็น text1.text แบบตัวอย่างด้านล่างนี้

TextBox1.Text = Format(CDec(TextBox1.Text), "##,##0.00")

ผมพิมพ์ผิดเองครับ แต่ใน VB ผมเป็น Text ก็ไม่ได้ครับ เป็นอย่างที่แจ้งให้ทราบครับ แต่ตอนนี้ไปใส่ใน

Private Sub Text1_LostFocus() ถึงจะได้ครับ ขอบคุณมากนะครับ  :)
เมื่อ: 18 สิงหาคม 2010, 08:50:16
ขออภัย Edit ข้อความไม่ได้ครับจะเพิ่มสักนิด

คือใครพอจะอธิบายได้ไหมครับเพราะอะไรถึงใช้

Change() ไม่ได้แต่ต้องมาใช้ LostFocus อยากจะทำความเข้าใจและหาสาเหตุครับ  :-\

atom-soft

Re: การตั้ง Format ของ Textbox ให้เป็น Currency
« ตอบกลับ #14 เมื่อ: 22 มกราคม 2018, 00:40:22 »
สาเหตุที่ใช้ Change ไม่ได้น่ะหรือครับ เป็นเพราะว่าช่องที่ท่านจะทำการแก้ไข Format คือช่องเดียวกับที่ท่านกำลังป้อนไงล่ะครับ

ถ้าลอง Textbox1 สำหรับป้อนข้อมูล ใน Event Change ของ Textbox1 ก็ใส่คำสั่งดังนี้.-

Private Sub Textbox1 _Change()
    Textbox2.Text = Format(CDec(TextBox1.Text), "##,##0.00")
End Sub

ซี่งคำสั่งจะถูกกระทำเมื่อมีการเปลี่ยนแปลงค่าใน Textbox1 แต่จะแสดงในผลลัพธ์ใน Textbox2
ทีนี้ลองนึกภาพดูว่าถ้าเป็นคำสั่งแบบนี้


Private Sub Textbox1 _Change()
    Textbox1.Text = Format(CDec(TextBox1.Text), "##,##0.00")
End Sub

ซี่งคำสั่งจะถูกกระทำเมื่อมีการเปลี่ยนแปลงค่าใน Textbox1 และ  จะแสดงในผลลัพธ์ใน Textbox1 เช่นกันลองจินตนาการเอาเองครับ ว่าเราจะป้อนตัวเลขได้ตรงตามที่เราอยากป้อนไหม

ดังนั้นนี่คือเหตุที่ทำไมใช้ได้กับเหตุการ์ LostFocus() เท่านั้น