ProjectForStudy

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

[ถาม/ตอบ] ขอCode แก้ error Null รูปภาพหน่อยครับ Unable to cast object of type 'System.DBNull' to type 'System.Byte[]'

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    สู้
    2019-6-28 10:09
  • เช็คชื่อแล้ว: 20 วัน

    [LV.4]BeginnerIII

    4

    กระทู้

    41

    โพสต์

    158

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    158
    Ticket
    29
    จิตพิสัย
    129
    เมื่อไม่ใส่รูปภาพไม่สามารถ SAVE ได้ error
    ดึงข้อมูลมาดูไม่ได้ เมื่อ sql ฟิลรูปภาพ ว่าง

    Code Save
    1.      If PictureBox2.Image Is Nothing Then
    2.             sql = "insert into detail(IDroom, Fname, Lname, Cardnumber, Date, Old, Sex, Address, Tel, Deposit, Elec, Water, Npic, Pic) values(@IDroom,@Fname,@Lname,@Cardnumber,@Date,@Old,@Sex,@Address,@Tel,@Deposit,@Elec,@Water)"
    3.         Else
    4.             sql = "insert into detail(IDroom, Fname, Lname, Cardnumber, Date, Old, Sex, Address, Tel, Deposit, Elec, Water, Npic, Pic) values(@IDroom,@Fname,@Lname,@Cardnumber,@Date,@Old,@Sex,@Address,@Tel,@Deposit,@Elec,@Water,@Npic,@Pic)"
    5.         End If
    6.         cmd = New SqlClient.SqlCommand(sql, cn)
    7.         cmd.Parameters.Clear()
    8.         cmd.Parameters.AddWithValue("IDroom", IDroom.Text)
    9.         cmd.Parameters.AddWithValue("Fname", txt_add_Fname.Text)
    10.         cmd.Parameters.AddWithValue("Lname", txt_add_Lname.Text)
    11.         cmd.Parameters.AddWithValue("Cardnumber", txt_add_Cardnumber.Text)
    12.         cmd.Parameters.AddWithValue("Date", txt_add_Date.Text)
    13.         cmd.Parameters.AddWithValue("Old", txt_add_Old.Text)
    14.         cmd.Parameters.AddWithValue("Sex", txt_add_Sex.Text)
    15.         cmd.Parameters.AddWithValue("Address", txt_add_Address.Text)
    16.         cmd.Parameters.AddWithValue("Tel", txt_add_Tel.Text)
    17.         cmd.Parameters.AddWithValue("Deposit", txt_add_Deposit.Text)
    18.         cmd.Parameters.AddWithValue("Elec", txt_add_Elec.Text)
    19.         cmd.Parameters.AddWithValue("Water", txt_add_Water.Text)
    20.         cmd.Parameters.AddWithValue("Npic", txt_filename.Text)
    21.         If Not PictureBox2.Image Is Nothing Then
    22.             Dim mem As New IO.MemoryStream
    23.             PictureBox2.Image.Save(mem, Imaging.ImageFormat.Bmp)
    24.             Dim picc() As Byte
    25.             picc = mem.ToArray()
    26.             cmd.Parameters.AddWithValue("Pic", picc)

    27.         End If
    28.         If cmd.ExecuteNonQuery = 0 Then
    29.             MessageBox.Show("Fail", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error)
    30.         Else
    31.             MessageBox.Show("Succeess", "เพิ่มข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Information)

    32.         End If



    33. Code เรียกดู

    34.    Private Sub cb_show_IDroom_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cb_show_IDroom.SelectedIndexChanged

    35.         sql = String.Format("select * from detail where IDroom like '%" & cb_show_IDroom.Text & "%'")
    36.         Dim data_keep As DataTable = cmd_excutedatatable()

    37.         txt_show_Fname.Text = data_keep.Rows(0)("Fname")
    38.         txt_show_Lname.Text = data_keep.Rows(0)("Lname")
    39.         txt_show_Cardnumber.Text = data_keep.Rows(0)("Cardnumber")
    40.         txt_show_Date.Text = data_keep.Rows(0)("Date")
    41.         txt_show_Old.Text = data_keep.Rows(0)("Old")
    42.         txt_show_Sex.Text = data_keep.Rows(0)("Sex")
    43.         txt_show_Address.Text = data_keep.Rows(0)("Address")
    44.         txt_show_Tel.Text = data_keep.Rows(0)("Tel")
    45.         txt_show_Deposit.Text = data_keep.Rows(0)("Deposit")
    46.         txt_show_Elec.Text = data_keep.Rows(0)("Elec")
    47.         txt_show_Water.Text = data_keep.Rows(0)("Water")

    48.         'Picture'


    49.         Dim img() As Byte = data_keep.Rows(0)("Pic")
    50.         PictureBox1.Image = Image.FromStream(New IO.MemoryStream(CType(img, Byte())))


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



    ทำตามจากคลิปแอดมิน
    https://www.youtube.com/watch?v=uxqm6IFOyJw
  • อารมณ์วันนี้
    แฮปปี้
    2 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 302 วัน

    [LV.8]ConquerorI

    26

    กระทู้

    646

    โพสต์

    3087

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    3087
    Ticket
    1962
    จิตพิสัย
    1125

    Merciful MemberInstructor

    puklit โพสต์ 2019-6-19 08:17:43 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2019-6-19 09:15

    โค้ดสำหรับอ่านรูป
    มี 2 วิธี ดังนี้ (ท่านเลือกใช้เอาเองนะครับ) ผมเขียนแบบสด ๆ อาจจะมี Error
    วิธีที่ 1 เช็คค่า Null ก่อนแสดงรูป

    1. Dim img As Byte = data_keep.Rows(0)("Pic")

    2. If String.IsNullOrEmpty(img) Then
    3.     PictureBox1.Image = Nothing
    4. Else
    5.     PictureBox1.Image = Image.FromStream(New IO.MemoryStream(CType(img, Byte())))
    6. End if
    คัดลอกไปที่คลิปบอร์ด


    วิธีที่ 2 ใช้ Try Catch เข้ามาช่วยตรวจสอบ หากเกิด Error

    1. Dim img As Byte = data_keep.Rows(0)("Pic")

    2. Try
    3.     PictureBox1.Image = Image.FromStream(New IO.MemoryStream(CType(img, Byte())))
    4. Catch
    5.     PictureBox1.Image = Nothing      
    6. End Try
    คัดลอกไปที่คลิปบอร์ด





  • อารมณ์วันนี้
    สู้
    2019-6-28 10:09
  • เช็คชื่อแล้ว: 20 วัน

    [LV.4]BeginnerIII

    4

    กระทู้

    41

    โพสต์

    158

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    158
    Ticket
    29
    จิตพิสัย
    129
     เจ้าของ| willzaa147 โพสต์ 2019-6-19 22:15:06 | ดูโพสต์ทั้งหมด
    puklit ตอบกลับเมื่อ 2019-6-19 08:17
    โค้ดสำหรับอ่านรูป
    มี 2 วิธี ดังนี้ (ท่านเลือกใช้เอาเอ ...

    file:///E:/%E0%B8%96%E0%B8%B2%E0%B8%A1/4.JPG
    มัน error ที่ตัว img ทุกรูปแบบเลยครับ
  • อารมณ์วันนี้
    สู้
    2019-6-28 10:09
  • เช็คชื่อแล้ว: 20 วัน

    [LV.4]BeginnerIII

    4

    กระทู้

    41

    โพสต์

    158

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    158
    Ticket
    29
    จิตพิสัย
    129
     เจ้าของ| willzaa147 โพสต์ 2019-6-19 22:18:00 | ดูโพสต์ทั้งหมด
    https://www.picz.in.th/image/4.1qcyIe

    มันจะ erro ที่ตัว img ทุกรุปแบบเลย ครับ
  • อารมณ์วันนี้
    สู้
    2019-6-28 10:09
  • เช็คชื่อแล้ว: 20 วัน

    [LV.4]BeginnerIII

    4

    กระทู้

    41

    โพสต์

    158

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    158
    Ticket
    29
    จิตพิสัย
    129
     เจ้าของ| willzaa147 โพสต์ 2019-6-20 05:41:21 | ดูโพสต์ทั้งหมด
    มันจะ error ที่ตัวนี้ตลอดเลยครับ ผมกำลังทำโปรเจคจบครับ ติดตรงนี้ไม่ไปไหนซะที

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

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

    x
  • อารมณ์วันนี้
    สู้
    2019-6-28 10:09
  • เช็คชื่อแล้ว: 20 วัน

    [LV.4]BeginnerIII

    4

    กระทู้

    41

    โพสต์

    158

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    158
    Ticket
    29
    จิตพิสัย
    129
     เจ้าของ| willzaa147 โพสต์ 2019-6-20 06:14:24 | ดูโพสต์ทั้งหมด
    โค้ดนี้สามารถดึงข้อมูลมาได้ไม่ error แต่รูปภาพจะไม่แสดงเลย ทั้งที่มีค่ารูป และไม่มีค่ารูป รูปก็จะไม่แสดง      

    1. If Not String.IsNullOrEmpty("Pic") Then
    2.             PictureBox1.Image = Nothing
    3.         Else
    4.             Dim img() As Byte = data_keep.Rows(0)("Pic")
    5.             PictureBox1.Image = Image.FromStream(New IO.MemoryStream(CType(img, Byte())))
    6.         End If
    คัดลอกไปที่คลิปบอร์ด

    ซึ่งผมเข้าใจว่า เมื่อ มีค่าหรือไม่มีค่า ให้เคลียPicturebox จากโค้ดนี้ PictureBox1.Image = Nothing
    ทำให้รูปภาพไม่แสดง ซึ่งจะทำอย่างไร เพราะผมหัดเขียนก็ไม่รู้จะไปต่อยังไง
  • อารมณ์วันนี้
    สู้
    2019-6-28 10:09
  • เช็คชื่อแล้ว: 20 วัน

    [LV.4]BeginnerIII

    4

    กระทู้

    41

    โพสต์

    158

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    158
    Ticket
    29
    จิตพิสัย
    129
     เจ้าของ| willzaa147 โพสต์ 2019-6-20 06:29:07 | ดูโพสต์ทั้งหมด
    หมุนไปหมุนมา จนได้โค้ดนี้

    1.         Try
    2.             Dim img() As Byte = data_keep.Rows(0)("Pic")
    3.             PictureBox1.Image = Image.FromStream(New IO.MemoryStream(CType(img, Byte())))
    4.         Catch
    5.             String.IsNullOrEmpty("Pic")
    6.             PictureBox1.Image = Nothing
    7.         End Try
    คัดลอกไปที่คลิปบอร์ด


    ผ่านเลยครับ
  • อารมณ์วันนี้
    แฮปปี้
    2 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 302 วัน

    [LV.8]ConquerorI

    26

    กระทู้

    646

    โพสต์

    3087

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    3087
    Ticket
    1962
    จิตพิสัย
    1125

    Merciful MemberInstructor

    puklit โพสต์ 2019-6-20 08:33:31 | ดูโพสต์ทั้งหมด
    willzaa147 ตอบกลับเมื่อ 2019-6-20 06:14
    โค้ดนี้สามารถดึงข้อมูลมาได้ไม่ error แต่รูปภาพจะไม่แส ...

    บรรทัดแรกท่านเขียนผิดครับ

    1. If Not String.IsNullOrEmpty("Pic") Then (เขียนผิด)
    คัดลอกไปที่คลิปบอร์ด


    มันต้องเป็น

    1. Dim Img AS Byte = data_keep.Rows(0)("Pic")

    2. If Not String.IsNullOrEmpty(Img) Then
    คัดลอกไปที่คลิปบอร์ด


    คือการเช็คว่าค่าตัวแปร Img ที่ท่านรับค่ามาจาก DataTable ที่ชื่อว่า
    data_keep แถวที่ 0 คอลัมภ์ ที่ชื่อว่า Pic นั้นเป็นว่าว่าง หรือ Null หรือไม่

    ถ้าท่านเขียนไปตามนี้
    1. If Not String.IsNullOrEmpty("Pic") Then
    คัดลอกไปที่คลิปบอร์ด


    Pic มันไม่ได้หมายความว่า ฟิล์ด Pic มันคือคำว่า Pic เฉย ๆ ไม่มีความสัมพันธ์หรือเกี่ยวข้องกับฐานข้อมูลเลย
  • อารมณ์วันนี้
    แฮปปี้
    2 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 302 วัน

    [LV.8]ConquerorI

    26

    กระทู้

    646

    โพสต์

    3087

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    3087
    Ticket
    1962
    จิตพิสัย
    1125

    Merciful MemberInstructor

    puklit โพสต์ 2019-6-20 08:35:23 | ดูโพสต์ทั้งหมด
    willzaa147 ตอบกลับเมื่อ 2019-6-20 06:29
    หมุนไปหมุนมา จนได้โค้ดนี้

            Try

    ถ้าท่านจะใช้โค้ดนี้ให้ตัดบรรทัดนี้ออก (แต้มสีแดง) เพราะเขียนไปมันไม่มีอะไรเกิดขึ้น

    Try
                Dim img() As Byte = data_keep.Rows(0)("Pic")
                PictureBox1.Image = Image.FromStream(New IO.MemoryStream(CType(img, Byte())))
            Catch
                String.IsNullOrEmpty("Pic")
                PictureBox1.Image = Nothing
            End Try
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

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

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

    GMT+7, 2019-7-19 09:03 , Processed in 0.066389 second(s), 28 queries .

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

    © 2001-2013 Comsenz Inc.

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