 |
|
ทราบสาเหตุที่บันทึกรูปภาพลงฐานข้อมูล ไม่ได้แล้วค่ะ แต่ไม่รู้วิธีแก้ ใครทราบช่วยหน่อยนะคะ vb.net ค่ะ |
|
 |
|
|
 |
 |
|
อันนี้เป็นโค้ดค่ะ
เราทดลองตัดโค้ดให้มัน บันทึกลงฐานข้อมูลแค่สั้นๆก่อนน่ะค่ะ
Dim sql As String = "INSERT INTO EmpProfile(IdNumber, EmpDate, EmpPosition, EmpStatus, " & _
"EmpFrontName, EmpLastName, EmpDateRegister) " & _
"VALUES(@idn, @edate, @eposition, @estatus, @efrontname, @elastname, @edateregister) "
ให้มันบันทึกจนถึงแค่ วันที่สมัครงาน แต่....เอารูปภาพออกยังไม่ต้องบันทึก
ปรากฏว่ามันเซฟได้ปกติค่ะ

ทีนี้เราลองเอารูปภาพใส่ลงไปนะคะ

ปรากฏว่า บันทึกข้อมูลไม่ได้ มันบอกว่าข้อมูลไม่เข้ากันกับฐานข้อมูล

แล้วที่นี้พอเรา เอาวันที่สมัครงานออกนะคะ
Dim sql As String = "INSERT INTO EmpProfile(IdNumber, EmpDate, EmpPicture, EmpPosition, EmpStatus, " & _
"EmpFrontName, EmpLastName) " & _
"VALUES(@idn, @edate, @pic, @eposition, @estatus, @efrontname, @elastname) "
ปรากฏว่า มันบันทึกข้อมูลได้ค่ะ

ก็เลยคิดว่ามันเป็นเพราะ ข้อมูล รูปภาพ กับ ข้อมูล วันที่สมัครงานมันขัดแย้งกันน่ะค่ะ แต่งงมากๆเลย มีด้วยหรอ เพิ่งเคยเจออ่ะ
อันนี้เป็นรูปฐานข้อมูลค่ะ

สังเกตว่า วันที่สมัครงาน ข้อมูลจะเป็นแบบ Date/Time ไม่รู้ว่าเกี่ยวกันหรือเปล่า
แต่ถ้าสังเกตอีกที ก็จะพบว่า ข้อมูลวันที่ มันก็เป็น Date/Time เหมือนกัน แต่....ทำไมมันบันทึกได้

อันนี้เป็นโค้ด เพิ่มเติม ค่ะ(ใครปุ่มเดียวกัน)
cmd = New OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("idn", IdNumbertxt.Text)
cmd.Parameters.AddWithValue("edate", Datetxt.Text)
cmd.Parameters.AddWithValue("eposition", Positiontxt.Text)
cmd.Parameters.AddWithValue("estatus", StatusBox.Text)
cmd.Parameters.AddWithValue("efrontname", FrontNametxt.Text)
cmd.Parameters.AddWithValue("elastname", LastNametxt.Text)
cmd.Parameters.AddWithValue("edateregister", DateRegistertxt.Text)
Dim fiStream As New FileStream(OpenFileDialog1.FileName, _
FileMode.Open, _
FileAccess.Read)
Dim binReader As New BinaryReader(fiStream)
Dim pic() As Byte = binReader.ReadBytes(fiStream.Length)
cmd.Parameters.AddWithValue("pic", pic)
Dim affect As Integer = cmd.ExecuteNonQuery()
If (affect < 1) Then
MsgBox("เกิดข้อผิดพลาด" & vbNewLine & "ไม่สามารถเพิ่มข้อมูลได้")
Else
MsgBox("เพิ่มข้อมูลเรียบร้อยแล้ว")
End If
End If
อันนี้เป็นปุ่มนำรูปภาพมาใส่ค่ะ
Private Sub Picturebtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Picturebtt.Click
With OpenFileDialog1
.Filter = "Image Files(*.gif;*.jpg) | *.gif;*.jpg"
.FileName = ""
If (.ShowDialog() = DialogResult.OK) Then
Picturetxt.Text = .FileName
PictureBox1.Image = Image.FromFile(.FileName)
End If
End With
End Sub
ทั้งหมดมีแค่นี้เลยค่ะ เพราะว่าเราทดลองปิดหมดทุกปุ่มแล้ว
ช่วยหน่อยนะคะ ติดมา 3 วันแล้วค่ะT_T
ขอบคุณล่วงหน้าค่ะ
Tag : .NET, Ms Access, VB.NET
|
|
 |
 |
 |
 |
Date :
2011-04-08 09:54:57 |
By :
mayapopy |
View :
2195 |
Reply :
3 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เห็นโค้ดนี้เพิ่มเข้าไป ดูว่าเป็นไงบ้าง
Dim st As String = "EDate: " & Datetxt.Text
st &= vbcrlf & "DateRegister: " & DateRegistertxt.Text
MessageBox.Show(st)
ลองพิมพ์ปีพ.ศ.ให้ครบเต็มหน่อยดูว่า Save ได้ไหม
เช่น 5/4/2554
Code (VB.NET)
cmd.Parameters.AddWithValue("idn", IdNumbertxt.Text)
cmd.Parameters.AddWithValue("edate", Datetxt.Text)
cmd.Parameters.AddWithValue("eposition", Positiontxt.Text)
cmd.Parameters.AddWithValue("estatus", StatusBox.Text)
cmd.Parameters.AddWithValue("efrontname", FrontNametxt.Text)
cmd.Parameters.AddWithValue("elastname", LastNametxt.Text)
cmd.Parameters.AddWithValue("edateregister", DateRegistertxt.Text)
Dim st As String = "EDate: " & Datetxt.Text
st &= vbcrlf & "DateRegister: " & DateRegistertxt.Text
MessageBox.Show(st)
|
 |
 |
 |
 |
Date :
2011-04-08 11:09:18 |
By :
watcharop |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เย้ มีคนมาตอบแล้ว คุณหางอึ่งคนเดิมนี่เอง^^
ทดลองแล้วค่ะ
เป็นดังนี้
ลองทดลองคีย์ วันที่ลงไปตามรูปแบบที่คุณหางอึ่งบอกก่อน มันจะได้แบบนี้ค่ะ(เอาตามช่อง edate เลยนะ)
อันนี้รูปที่ลงข้อมูล

error เหมือนเดิมT_T

คราวนี้ลองทดลอง ใส่โค้ดตามที่คุณหางอึ่งให้มาค่ะ
แล้วก็มาทดลอง มันขึ้นข้อความแบบนี้

ปรากฏว่า...error เหมือนเดิม เศร้าT_T

ปล.เดี๋ยวนี้ไม่ค่อยมีใครมาให้ความรู้เลย เราถามจนรำคาญหรือเปล่าเนี๊ย หรือว่าหยุดกันหมด^^
|
ประวัติการแก้ไข 2011-04-08 14:08:31
 |
 |
 |
 |
Date :
2011-04-08 14:07:08 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอามาให้ดู ไว้เป็นแนวทาง เผื่อช่วยได้บ้างครับ 
Database ของผมเป็น MS SQL Server เอารูปจาก Picturebox ลงไปเซฟ
Code (VB.NET)
Dim ms As MemoryStream = New MemoryStream
Dim filetype As System.Drawing.Imaging.ImageFormat
filetype = picbox.Image.RawFormat
picbox.Image.Save(ms, filetype)
Dim bytBLOBData(CInt(ms.Length() - 1)) As Byte
ms.Position = 0
ms.Read(bytBLOBData, 0, bytBLOBData.Length)
ms.Close()
Dim file As New SqlParameter("@FileName", SqlDbType.VarBinary, bytBLOBData.Length, ParameterDirection.Input, False, 0, 0, Nothing, DataRowVersion.Current, bytBLOBData)
.Add(file)
|
 |
 |
 |
 |
Date :
2011-04-08 17:24:20 |
By :
madoadza |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|