ProjectForStudy

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 40|ตอบกลับ: 6

[ถาม/ตอบ] Error converting data type varchar to float

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    เศร้า
    2019-10-4 03:00
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    1

    กระทู้

    5

    โพสต์

    18

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    18
    Ticket
    0
    จิตพิสัย
    18
    1. Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click
    2.         sql = "insert into sale_table(sale_full_id,nvidia_id,nvidia_amount,nvidia_total,date_sale)values"
    3.         Dim i As Integer = frm_nvidia_sale.listview_sale.Items.Count - 1
    4.         For j As Integer = 0 To i
    5.             Dim nvidia_id As String = frm_nvidia_sale.listview_sale.Items(j).SubItems(1).Text
    6.             Dim nvidia_amount As Integer = frm_nvidia_sale.listview_sale.Items(j).SubItems(4).Text
    7.             Dim nvidia_total As Integer = frm_nvidia_sale.listview_sale.Items(j).SubItems(6).Text
    8.             Dim date_sale As String = Date.Now.Year & "/" & Date.Now.Month & "/" & Date.Now.Day

    9.             If j = i Then
    10.                 sql &= String.Format("('{0}','{1}','{2}','(3)','{4}')", frm_nvidia_sale.lbl_sale_id.Text, nvidia_id, nvidia_amount, nvidia_total, date_sale)
    11.             Else
    12.                 sql &= String.Format("('{0}','{1}','{2}','(3)','{4}') ,", frm_nvidia_sale.lbl_sale_id.Text, nvidia_id, nvidia_amount, nvidia_total, date_sale)
    13.             End If

    14.         Next

    15.         cmd = New SqlClient.SqlCommand(sql, cn)
    16.         If cmd.ExecuteNonQuery = 0 Then
    17.             MsgBox("Save Failled")
    18.         Else
    19.             sql = "insert into sale_detail(sale_full_id, sale_total, discount, discount_condition, sale_net) values(@sale_full_id, @sale_total, @discount, @discount_condition, @sale_net)"
    20.             cmd = New SqlClient.SqlCommand(sql, cn)
    21.             cmd.Parameters.Clear()
    22.             cmd.Parameters.AddWithValue("sale_full_id", frm_nvidia_sale.lbl_sale_id.Text)

    23.             cmd.Parameters.AddWithValue("sale_total", txt_total.Text)
    24.             cmd.Parameters.AddWithValue("discount", "0")
    25.             cmd.Parameters.AddWithValue("discount_condition", "0")
    26.             cmd.Parameters.AddWithValue("sale_net", txt_total.Text)

    27.             If cmd.ExecuteNonQuery = 0 Then
    28.                 MsgBox("Save Failled")
    29.             Else
    30.                 MsgBox("Save Success")
    31.             End If
    32.         End If


    33.     End Sub
    34. End Class
    คัดลอกไปที่คลิปบอร์ด


    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    แฮปปี้
    9 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 384 วัน

    [LV.9]ConquerorII

    30

    กระทู้

    773

    โพสต์

    4579

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    4579
    Ticket
    2851
    จิตพิสัย
    1728

    Merciful MemberInstructor

    puklit โพสต์ 2019-10-4 08:33:42 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2019-10-4 08:36

    หลักการของมันคือ ฐานข้อมูล Datatype กำหนดชนิดไหนเอาไว้ก็รับค่ากลับไปเป็นชนิดนั้น เพื่อให้มันตรงกัน มันถึงจะไม่เกิด Error

    จากโค้ดท่าน (เขียวคือถูก แดงคือผิด)

    Dim nvidia_id As String = frm_nvidia_sale.listview_sale.Items(j).SubItems(1).Text
    Dim nvidia_amount As Integer = frm_nvidia_sale.listview_sale.Items(j).SubItems(4).Text
    เขียนใหม่ได้ ดังนี้ Dim nvidia_amount As Integer = Convert.ToInt32(frm_nvidia_sale.listview_sale.Items(j).SubItems(4).Text)

    Dim nvidia_total As Integer = frm_nvidia_sale.listview_sale.Items(j).SubItems(6).Text
    เขียนใหม่ได้ ดังนี้ Dim nvidia_total As Integer = Convert.ToInt32(frm_nvidia_sale.listview_sale.Items(j).SubItems(6).Text)
    Dim date_sale As String = Date.Now.Year & "/" & Date.Now.Month & "/" & Date.Now.Day
    ส่วน Datetime เขียนแบบนี้ก็ได้ หรือจะเขียนเป็นแบบอื่นก็ได้ ถ้าอยากได้เพิ่มเติมลองหากระทู้ในนี้ดูครับ ผมตอบไปหลายกระทู้อยู่

    จาก Error Error converting data type varchar to float ผมไม่รู้ว่าท่านกำหนดฟิล์ดไดในฐานข้อมูลของท่านเป็นแบบทศนิยมเห็นท่านกำหนดเป็น Integer หมดท่านลองเช็คดูใหม่นะว่าเป็นฟิลด์ไหนแล้ว Convert datatype ให้มันตรงกับฐานข้อมูลก็ใช้ได้แล้ว

    สุดท้ายผมจะแนบ Function ในการใช้สำหรับ Convert data type ไว้ให้ดังนี้
    1. ใช้ได้เฉพาะ VB.Net
    https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/functions/type-conversion-functions

    2. ใช้ได้ทั้ง VB.Net & C#
    https://docs.microsoft.com/en-us/dotnet/api/system.convert?view=netframework-4.8




  • อารมณ์วันนี้
    เศร้า
    2019-10-4 03:00
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    1

    กระทู้

    5

    โพสต์

    18

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    18
    Ticket
    0
    จิตพิสัย
    18
     เจ้าของ| dellboy1160 โพสต์ 2019-10-4 11:30:01 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย dellboy1160 เมื่อ 2019-10-4 11:32

    C:\Users\dellb\OneDrive\Desktop

    ผมลองทำตามแล้ว
    แล้วผมลองเปลี่ยน Convert data เป็น CInt, CSng และ อื่นๆ
    ผมยังหาทางออกไม่เจอเลยครับ

    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    แฮปปี้
    9 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 384 วัน

    [LV.9]ConquerorII

    30

    กระทู้

    773

    โพสต์

    4579

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    4579
    Ticket
    2851
    จิตพิสัย
    1728

    Merciful MemberInstructor

    puklit โพสต์ 2019-10-4 12:35:01 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2019-10-4 12:42
    dellboy1160 ตอบกลับเมื่อ 2019-10-4 11:30
    ผมลองทำตามแล้ว
    แล้วผมลองเปลี่ยน Convert data เป็น CInt, CSng แ ...

    อย่างที่ผมได้ตอบไปครับ มันต้องแปลง Data type ให้ตรงกับฐานข้อมูลก่อน
    ท่าน Insert ตาราง Sale_table แล้วทำไมเอารูปตาราง Sale_details มาให้ผมดูหละครับ
    ขอดูตาราง Sale_table หน่อยครับ จะดู Data type ที่ท่านกำหนดไว้ในฐานข้อมูล

    เช่น nvidia_amount และ nvidia_total หากท่านกำหนดเป็น float
    ท่านก็จะให้โค้ดนี้ไม่ได้ (เพราะท่านประกาศตัวแปรเป็น integer แต่รับค่าเป็น text)

    Dim nvidia_amount As Integer = frm_nvidia_sale.listview_sale.Items(j).SubItems(4).Text
    Dim nvidia_total As Integer = frm_nvidia_sale.listview_sale.Items(j).SubItems(6).Text

    ดังนั้นหาก nvidia_amount และ nvidia_total หากท่านกำหนดเป็น float
    จะเขียนได้ดังนี้

    Dim nvidia_amount = Convert.ToDouble(frm_nvidia_sale.listview_sale.Items(j).SubItems(4).Text)
    Dim nvidia_total = Convert.ToDouble(frm_nvidia_sale.listview_sale.Items(j).SubItems(6).Text)

    หรือ

    Dim nvidia_amount As Double = Convert.ToDouble(frm_nvidia_sale.listview_sale.Items(j).SubItems(4).Text)
    Dim nvidia_total As Double = Convert.ToDouble(frm_nvidia_sale.listview_sale.Items(j).SubItems(6).Text)
    และให้ท่านไปปูพื้นฐาน Data type ของ Sql server และ VB.net ใหม่ดังนี้นะครับ จะได้มีพื้นฐานที่แน่นขึ้น

    VB.Net => https://www.tutorialspoint.com/vb.net/vb.net_data_types.htm
    Sql server => https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-2017

  • อารมณ์วันนี้
    เศร้า
    2019-10-4 03:00
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    1

    กระทู้

    5

    โพสต์

    18

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    18
    Ticket
    0
    จิตพิสัย
    18
     เจ้าของ| dellboy1160 โพสต์ 2019-10-4 12:47:32 | ดูโพสต์ทั้งหมด
    ขอโทษด้วยครับ
    นี่ SQL sale_table ครับ

    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    แฮปปี้
    9 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 384 วัน

    [LV.9]ConquerorII

    30

    กระทู้

    773

    โพสต์

    4579

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    4579
    Ticket
    2851
    จิตพิสัย
    1728

    Merciful MemberInstructor

    puklit โพสต์ 2019-10-4 12:48:31 | ดูโพสต์ทั้งหมด
    dellboy1160 ตอบกลับเมื่อ 2019-10-4 11:30
    ผมลองทำตามแล้ว
    แล้วผมลองเปลี่ยน Convert data เป็น CInt, CSng แ ...

    ลิ้งค์นี้เป็นกระทู้ที่ผมเคยตอบไปเกี่ยวกับวิธีอ่าน ค่า Error และวิธีการแก้ไขhttp://www.projectforstudy.com/forum.php?mod=viewthread&tid=2176&extra=page%3D1%26filter%3Dtypeid%26typeid%3D21

    ให้ท่านไปอ่านแล้วทำความเข้าใจ มันจะเป็นประโยชน์กับตัวท่านเอง
  • อารมณ์วันนี้
    เศร้า
    2019-10-4 03:00
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    1

    กระทู้

    5

    โพสต์

    18

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    18
    Ticket
    0
    จิตพิสัย
    18
     เจ้าของ| dellboy1160 โพสต์ 2019-10-4 15:48:13 | ดูโพสต์ทั้งหมด
    ขอบพระคุณ มากครับผม
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

    รายละเอียดเครดิต

    ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|ProjectForStudy  

    GMT+7, 2019-10-16 17:19 , Processed in 0.059415 second(s), 26 queries .

    Powered by Discuz! X3.2 R20150609, Rev.38

    © 2001-2013 Comsenz Inc.

    ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้