 |
|
Add รูปลงฐานข้อมูล ติด Error ตรงเวลา save ข้อมูล ครับ ConvertImage(Me.PictureBox1.Image) |
|
 |
|
|
 |
 |
|
เนื่องจาก แอดรูปภาพลงฐานข้อมูลไม่ได้จึงเกิด error ดังที่เห็นในรูปครับ
ผมอยยากรู้ว่าผมใส่ insert รูปภาพถูกไหม ใน Sub save()
ConvertImage(Me.PictureBox1.Image)
ConvertImage กำหนดเป็น Byte
งงมากเลยครับ รบกวนช่วยชี้ทางสว่างให้ผมที

Code
Imports System.Data
Imports System.Data.OleDb
Imports System.IO
Imports System.Drawing.Image
Imports System.Data.SqlClient
Public Class Patient
Private Sub Patient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'ClinicDataSet.Patient' table. You can move, or remove it, as needed.
Me.PatientTableAdapter.Fill(Me.ClinicDataSet.Patient)
'TODO: This line of code loads data into the 'ThailandDataSet.province' table. You can move, or remove it, as needed.
Me.ProvinceTableAdapter.Fill(Me.ThailandDataSet.province)
'TODO: This line of code loads data into the 'ThailandDataSet.amphur' table. You can move, or remove it, as needed.
Me.AmphurTableAdapter.Fill(Me.ThailandDataSet.amphur)
'TODO: This line of code loads data into the 'ThailandDataSet.district' table. You can move, or remove it, as needed.
Me.DistrictTableAdapter.Fill(Me.ThailandDataSet.district)
cmbpa_search.SelectedIndex = 0
showdata()
closetxt()
autoid()
End Sub
Sub autoid()
Try
Dim drTmp As OleDbDataReader
Dim sqlTmp As String
sqlTmp = "SELECT P_id from Patient order by P_id DESC"
connect()
With da
.SelectCommand = New OleDbCommand(sqlTmp, conn)
.Fill(ds, "P_id")
End With
Dim sql As New OleDbCommand
With sql
.CommandType = CommandType.Text
.CommandText = sqlTmp
.Connection = conn
drTmp = .ExecuteReader
End With
If drTmp.HasRows Then
drTmp.Read()
Dim i As Integer = 0
Dim strTmp As String
strTmp = drTmp(0)
i = strTmp.Substring(1)
i += 1
txtpa_id.Text = "P" & i.ToString("0000")
Else
txtpa_id.Text = "P" & "0001"
End If
Catch ex As Exception
MessageBox.Show("เกิดข้อผิดพลาด เนื่องจาก " & ex.Message, "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information) 'โชว์ messagebox เเจ้งผู้ใช้
conn.Close()
End Try
End Sub
Sub opentext()
txtpa_fname.Enabled = True
txtpa_lname.Enabled = True
txtpa_address.Enabled = True
cmb_district.Enabled = True
cmb_amphur.Enabled = True
cmb_province.Enabled = True
cmb_code.Enabled = True
txtpa_tele.Enabled = True
txtpa_birth.Enabled = True
pa_mradio.Checked = True
pa_fradio.Checked = True
txtpa_idcard.Enabled = True
txtpa_symptom.Enabled = True
End Sub
Sub closetxt()
txtpa_fname.Enabled = False
txtpa_lname.Enabled = False
txtpa_address.Enabled = False
cmb_district.Enabled = False
cmb_amphur.Enabled = False
cmb_province.Enabled = False
cmb_code.Enabled = False
txtpa_tele.Enabled = False
txtpa_birth.Enabled = False
pa_mradio.Checked = False
pa_fradio.Checked = False
txtpa_idcard.Enabled = False
txtpa_symptom.Enabled = False
End Sub
Sub cleartxt()
txtpa_fname.Clear()
txtpa_lname.Clear()
txtpa_address.Clear()
cmb_district.SelectedValue = False
cmb_amphur.SelectedValue = False
cmb_province.SelectedValue = False
cmb_code.SelectedValue = False
txtpa_tele.Clear()
txtpa_birth.Enabled = True
pa_mradio.Checked = False
pa_fradio.Checked = False
txtpa_idcard.Clear()
txtpa_symptom.Clear()
End Sub
Sub search()
Dim strselect As String = ""
dtg_show.DataSource = dt
Try
If cmbpa_search.SelectedIndex = 0 Then
MessageBox.Show("กรุณาเลือกเงื่อนไขการค้นหา", "กรุณาตรวจสอบ")
showdata()
Exit Sub
ElseIf cmbpa_search.SelectedIndex = 1 Then
strselect &= "select * from Patient where P_id like '%" & txtpa_search.Text & "%'"
ElseIf cmbpa_search.SelectedIndex = 2 Then
strselect &= "select * from Patient where P_fname like '%" & txtpa_search.Text & "%'"
ElseIf cmbpa_search.SelectedIndex = 3 Then
strselect &= "select * from Patient where P_id_card like '%" & txtpa_search.Text & "%'"
ElseIf cmbpa_search.SelectedIndex = 4 Then
strselect &= "select * from Patient "
End If
Dim ds As New DataSet
With da
.SelectCommand = New OleDbCommand(strselect, conn)
.Fill(ds, "P_id")
End With
If ds.Tables("P_id").Rows.Count = 0 Then
MessageBox.Show("ไม่พบข้อมูลที่ค้นหา", "กรุณาตรวจสอบ")
Exit Sub
Else
With dtg_show
.DataSource = ds.Tables("P_id")
.Columns(0).HeaderText = "รหัสผู้ป่วย"
.Columns(1).HeaderText = "ชื่อ"
.Columns(2).HeaderText = "นามสกุล"
.Columns(3).HeaderText = "ที่อยู่"
.Columns(4).HeaderText = "แขวง/ตำบล"
.Columns(5).HeaderText = "เขต/อำเภอ"
.Columns(6).HeaderText = "จังหวัด"
.Columns(7).HeaderText = "เลขที่ไปรษณีย์"
.Columns(8).HeaderText = "เบอร์โทรศัพท์"
.Columns(9).HeaderText = "วันเกิด"
.Columns(10).HeaderText = "เพศ"
.Columns(11).HeaderText = "เลขบัตรประชาชน"
.Columns(12).HeaderText = "อาการเบื้องต้น"
.Columns(0).Width = 100
.Columns(1).Width = 100
.Columns(2).Width = 100
.Columns(3).Width = 100
.Columns(4).Width = 100
.Columns(5).Width = 100
.Columns(6).Width = 100
.Columns(7).Width = 100
.Columns(8).Width = 150
.Columns(9).Width = 100
.Columns(10).Width = 100
.Columns(11).Width = 150
.Columns(12).Width = 400
.AllowUserToAddRows = False
.AllowUserToResizeColumns = False
End With
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "กรุณาตรวจสอบ")
End Try
End Sub
Sub showdata()
Dim strselect As String = ""
Try
strselect = "select * from Patient"
connect()
Dim ds As New DataSet
With da
.SelectCommand = New OleDbCommand(strselect, conn)
.Fill(ds, "Patient")
End With
With dtg_show
.DataSource = ds.Tables("Patient")
.Columns(0).HeaderText = "รหัสผู้ป่วย"
.Columns(1).HeaderText = "ชื่อ"
.Columns(2).HeaderText = "นามสกุล"
.Columns(3).HeaderText = "ที่อยู่"
.Columns(4).HeaderText = "แขวง/ตำบล"
.Columns(5).HeaderText = "เขต/อำเภอ"
.Columns(6).HeaderText = "จังหวัด"
.Columns(7).HeaderText = "เลขที่ไปรษณีย์"
.Columns(8).HeaderText = "เบอร์โทรศัพท์"
.Columns(9).HeaderText = "วันเกิด"
.Columns(10).HeaderText = "เพศ"
.Columns(11).HeaderText = "เลขบัตรประชาชน"
.Columns(12).HeaderText = "อาการเบื้องต้น"
.Columns(0).Width = 100
.Columns(1).Width = 100
.Columns(2).Width = 100
.Columns(3).Width = 100
.Columns(4).Width = 100
.Columns(5).Width = 100
.Columns(6).Width = 100
.Columns(7).Width = 100
.Columns(8).Width = 150
.Columns(9).Width = 100
.Columns(10).Width = 100
.Columns(11).Width = 150
.Columns(12).Width = 400
.AllowUserToAddRows = False
.AllowUserToResizeColumns = False
End With
Catch ex As Exception
MessageBox.Show("เกิดข้อผิดพลาด :" & ex.Message & "กรุณาตรวจสอบ" & strselect)
Exit Sub
End Try
dtg_show.AlternatingRowsDefaultCellStyle.BackColor = Drawing.Color.Salmon
End Sub
Sub edit()
Dim strUpdate As String = ""
Dim sex As String
Try
strUpdate = "update Patient set P_id ='"
strUpdate &= txtpa_id.Text & "',P_fname ='"
strUpdate &= txtpa_fname.Text & "',P_lname ='"
strUpdate &= txtpa_lname.Text & "',P_address ='"
strUpdate &= txtpa_address.Text & "',P_district ='"
strUpdate &= cmb_district.Text & "',P_amphur ='"
strUpdate &= cmb_amphur.Text & "',P_province ='"
strUpdate &= cmb_province.Text & "',P_code ='"
strUpdate &= cmb_code.Text & "',P_tele ='"
strUpdate &= txtpa_tele.Text & "',P_birth ='"
strUpdate &= txtpa_birth.Text & "',P_sex ='"
If pa_mradio.Checked = True Then
sex = "ชาย"
Else
sex = "หญิง"
End If
strUpdate &= sex & "',P_id_card ='"
strUpdate &= txtpa_idcard.Text & "',P_symptom ='"
strUpdate &= txtpa_symptom.Text & "'where P_id ='"
strUpdate &= txtpa_id.Text & "'"
connect()
Dim cm As New OleDbCommand
With cm
.Connection = conn
.CommandType = CommandType.Text
.CommandText = strUpdate
.ExecuteNonQuery()
End With
showdata()
cleartxt()
closetxt()
status = 0
flag = 0
MessageBox.Show("แก้ไขข้อมูลแล้ว !!", "ยืนยัน")
btnpa_add.Enabled = True
btnpa_edit.Enabled = False
btnpa_delete.Enabled = False
btnpa_save1.Enabled = False
Catch ex As Exception
MessageBox.Show("เกิดข้อผิดพลาด :" & ex.Message & "กรุณาตรวจสอบ" & strUpdate)
Exit Sub
End Try
End Sub
Sub save()
Dim strinsert As String = ""
Dim sex As String
Try
strinsert = "insert into Patient values('"
strinsert &= txtpa_id.Text & "','"
strinsert &= txtpa_fname.Text & "','"
strinsert &= txtpa_lname.Text & "','"
strinsert &= txtpa_address.Text & "','"
strinsert &= cmb_district.Text & "','"
strinsert &= cmb_amphur.Text & "','"
strinsert &= cmb_province.Text & "','"
strinsert &= cmb_code.Text & "','"
strinsert &= txtpa_tele.Text & "','"
strinsert &= txtpa_birth.Text & "','"
If pa_mradio.Checked = True Then
sex = "ชาย"
Else
sex = "หญิง"
End If
strinsert &= sex & "','"
strinsert &= txtpa_idcard.Text & "','"
strinsert &= txtpa_symptom.Text & "')"
ConvertImage(Me.PictureBox1.Image)
With cm
.Connection = conn
.CommandType = CommandType.Text
.CommandText = strinsert
.ExecuteNonQuery()
End With
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว", "ยืนยัน")
cleartxt()
closetxt()
status = 0
flag = 0
showdata()
btnpa_add.Enabled = True
btnpa_clear.Enabled = True
btnpa_edit.Enabled = False
btnpa_delete.Enabled = False
btnpa_save1.Enabled = False
Catch ex As Exception
MessageBox.Show(ex.Message & strinsert)
Exit Sub
End Try
End Sub
Sub delete()
Dim strDelete As String = ""
Try
If MsgBox("คุณต้องการลบข้อมูล ชื่อ:: " & txtpa_fname.Text & " นามสกุล:: " & txtpa_lname.Text, vbYesNo + vbQuestion, "คำเตือน") = vbYes Then
MessageBox.Show("ลบข้อมูลเรียบร้อยแล้ว", "ยืนยัน")
strDelete = "delete from Patient where P_id = '" & txtpa_id.Text & "'"
connect()
Dim cm As New OleDbCommand
With cm
.Connection = conn
.CommandType = CommandType.Text
.CommandText = strDelete
.ExecuteNonQuery()
End With
cleartxt()
showdata()
status = 0
flag = 0
Else
cleartxt()
status = 0
flag = 0
MessageBox.Show("ยกเลิกการลบข้อมูลแล้ว", "ทำการยืนยัน")
End If
btnpa_add.Enabled = True
btnpa_clear.Enabled = True
btnpa_edit.Enabled = False
btnpa_save1.Enabled = False
btnpa_delete.Enabled = False
Catch ex As Exception
MessageBox.Show("เกิดข้อผิดพลาด :" & ex.Message & "กรุณาตรวจสอบ" & strDelete)
Exit Sub
End Try
End Sub[/glow]
Private Sub dtg_Show_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dtg_show.MouseClick
If dtg_show.Rows.Count = 0 Then
Exit Sub
Else
flag = 1
status = 0
closetxt()
End If
If (dtg_show.Item(0, dtg_show.CurrentRow.Index).Value) = "P0001" Then
closetxt()
autoid()
cleartxt()
status = 0
flag = 0
btnpa_add.Enabled = True
btnpa_edit.Enabled = False
btnpa_clear.Enabled = False
btnpa_delete.Enabled = True
btnpa_save1.Enabled = False
Else
txtpa_id.Text = (dtg_show.Item(0, dtg_show.CurrentRow.Index).Value)
txtpa_fname.Text = dtg_show.Item(1, dtg_show.CurrentRow.Index).Value
txtpa_lname.Text = dtg_show.Item(2, dtg_show.CurrentRow.Index).Value
txtpa_address.Text = dtg_show.Item(3, dtg_show.CurrentRow.Index).Value
cmb_district.Text = dtg_show.Item(4, dtg_show.CurrentRow.Index).Value
cmb_amphur.Text = dtg_show.Item(5, dtg_show.CurrentRow.Index).Value
cmb_province.Text = dtg_show.Item(6, dtg_show.CurrentRow.Index).Value
cmb_code.Text = dtg_show.Item(7, dtg_show.CurrentRow.Index).Value
txtpa_tele.Text = dtg_show.Item(8, dtg_show.CurrentRow.Index).Value
txtpa_birth.Text = dtg_show.Item(9, dtg_show.CurrentRow.Index).Value
If dtg_show.Item(10, dtg_show.CurrentRow.Index).Value = "ชาย" Then
pa_mradio.Checked = True
Else
pa_fradio.Checked = True
End If
txtpa_idcard.Text = dtg_show.Item(11, dtg_show.CurrentRow.Index).Value
txtpa_symptom.Text = dtg_show.Item(12, dtg_show.CurrentRow.Index).Value
btnpa_add.Enabled = False
btnpa_edit.Enabled = True
btnpa_clear.Enabled = False
btnpa_delete.Enabled = True
btnpa_save1.Enabled = False
End If
End Sub
Private Sub btnpa_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpa_add.Click
opentext()
autoid()
cleartxt()
status = 1
txtpa_fname.Focus()
btnpa_add.Enabled = False
btnpa_save1.Enabled = True
btnpa_clear.Enabled = True
btnpa_edit.Enabled = False
End Sub
Private Sub btnpa_edit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpa_edit.Click
If flag = 1 Then
If txtpa_id.Text = "P0001" Then
MessageBox.Show("ไม่สามารถแก้ไขได้", "ห้ามนะ!")
Exit Sub
End If
opentext()
status = 2
btnpa_add.Enabled = False
btnpa_clear.Enabled = False
btnpa_edit.Enabled = False
btnpa_save1.Enabled = True
btnpa_delete.Enabled = False
End If
End Sub
Private Sub btnpa_clear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpa_clear.Click
cleartxt()
End Sub
Private Sub btnpa_delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpa_delete.Click
If Not flag = 1 Then
Exit Sub
End If
If txtpa_id.Text = "P0001" Then
MessageBox.Show("ไม่สามารถลบได้", "ห้ามลบ!")
Exit Sub
End If
Dim strselect As String = ""
Try
strselect &= "select P_id from Patient where P_id = '" & txtpa_id.Text & "'"
delete()
flag = 0
showdata()
autoid()
btnpa_add.Enabled = True
btnpa_clear.Enabled = False
btnpa_edit.Enabled = False
btnpa_save1.Enabled = False
btnpa_delete.Enabled = False
Catch ex As Exception
MessageBox.Show("เกิดข้อผิดพลาด :" & ex.Message & "กรุณาตรวจสอบ" & strselect)
End Try
End Sub
Private Sub btnpa_save1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpa_save1.Click
If txtpa_fname.Text = "" Then
MessageBox.Show("กรุณากรอกชื่อผู้ป่วย", "กรุณาตรวจสอบ")
Exit Sub
ElseIf txtpa_lname.Text = "" Then
MessageBox.Show("กรุณากรอกนามสกุลผู้ป่วย", "กรุณาตรวจสอบ")
Exit Sub
ElseIf txtpa_address.Text = "" Then
MessageBox.Show("กรุณาระบุที่อยู่ผู้ป่วย", "กรุณาตรวจสอบ")
Exit Sub
ElseIf cmb_district.ValueMember = "" Then
MessageBox.Show("กรุณาระบุ แขวง/ตำบล", "กรุณาตรวจสอบ")
Exit Sub
ElseIf cmb_amphur.ValueMember = "" Then
MessageBox.Show("กรุณาระบุ เขต/อำเภอ", "กรุณาตรวจสอบ")
Exit Sub
ElseIf cmb_province.ValueMember = "" Then
MessageBox.Show("กรุณาระบุ จังหวัด", "กรุณาตรวจสอบ")
Exit Sub
ElseIf cmb_code.ValueMember = "" Then
MessageBox.Show("กรุณาระบุ เลขที่ไปรษณีย์", "กรุณาตรวจสอบ")
Exit Sub
ElseIf Not txtpa_tele.Text = "" Then
If txtpa_tele.TextLength < 9 Then
MessageBox.Show("ข้อมูลเบอร์โทรศัพท์ไม่สมบูรณ์", "กรุณาตรวจสอบ")
Exit Sub
End If
ElseIf txtpa_birth.Text = "" Then
MessageBox.Show("กรุณากรอกวันเกิดผู้ป่วย", "กรุณาตรวจสอบ")
Exit Sub
End If
If pa_mradio.Checked = False And pa_fradio.Checked = False Then
MessageBox.Show("กรุณาระบุเพศผู้ป่วยด้วย", "กรุณาตรวจสอบ")
Exit Sub
ElseIf Not txtpa_idcard.TextLength = 17 Then
MessageBox.Show("ข้อมูลรหัสบัตรประชาชนไม่สมบูรณ์", "กรุณาตรวจสอบ")
Exit Sub
ElseIf txtpa_idcard.Text = "" Then
MessageBox.Show("กรุณากรอกข้อมูลบัตรประชาชน", "กรุณาตรวจสอบ")
Exit Sub
End If
If status = 1 Then
save()
showdata()
ElseIf status = 2 Then
edit()
End If
autoid()
End Sub
Private Sub TabPage2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage2.Click
End Sub
Private Sub btnpa_search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpa_search.Click
search()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.OpenFileDialog1.FileName = Nothing
Me.OpenFileDialog1.ShowDialog()
If Not Me.OpenFileDialog1.FileName = Nothing Then
Me.PictureBox1.ImageLocation = Me.OpenFileDialog1.FileName
End If
End Sub
Public Function ConvertImage(ByVal myImage As Image) As Byte()
Dim mstream As New MemoryStream()
myImage.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim myBytes(mstream.Length - 1) As Byte
mstream.Position = 0
mstream.Read(myBytes, 0, mstream.Length)
Return myBytes
End Function
End Class
Tag : .NET, Ms SQL Server 2005, VBScript, Win (Windows App), VB.NET, VS 2005 (.NET 2.x)
|
ประวัติการแก้ไข 2011-12-11 22:38:24
|
 |
 |
 |
 |
Date :
2011-12-11 22:36:33 |
By :
ortree |
View :
1323 |
Reply :
3 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนที่ Insert ควรจะระบุ Column ด้วยครับ จาก Error จำนวน Data กับ Column น่าจะไม่ตรงกัน
Go to : SQL INSERT
|
 |
 |
 |
 |
Date :
2011-12-12 06:41:58 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตรงนี้ตอน convert immage คุณมีแค่คำสั่ง convert แต่คุณยังไม่มีคำสั่ง insert ลง database คาดว่าใน table นี้มีฟิลด์ Image ด้วยต่อจากฟิลด์อาการโรคเพราะฉะนั้นคุณ insert ไปแค่ 13 ฟิล์ด์มันเลย error หรือป่าวค่ะ เพราะฉะนั้นวิธีแก้คือหาทางเอาภาพที่ convert แล้ว insert ลง base ไปด้วยค่ะ คิดว่าเป็นตัวแปรชื่อ myBytes เข้าไปอีกแถวนึงค่ะ
|
 |
 |
 |
 |
Date :
2011-12-12 14:12:03 |
By :
bangbang111 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เท่าที่เคยทำมาน่ะครับใช้วิธีคิวรี่เข้าตรงๆไม่ได้น่ะครับ
ต้องเขียนแบบนี้ที่ผมทำน่ะลองเอาไปประยุกต์เอาเองน่ะครับ
Code (C#)
com = conn.CreateCommand();
MemoryStream stream = new MemoryStream();
picVoucher.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] pic = stream.ToArray();
SqlStr = "INSERT INTO VCTYP(VOUCHNUM, AUDTDATE, DESCRIPTION, DETAIL, LOCATION, PIC, PRICE)";
SqlStr += " VALUES (@VOUCHNUM, @AUDTDATE, @DESCRIPTION, @DETAIL, @LOCATION, @PIC, @PRICE)";
com.Parameters.Clear();
com.Parameters.AddWithValue("@VOUCHNUM", txtVoucherCode.Text);
com.Parameters.AddWithValue("@AUDTDATE", date);
com.Parameters.AddWithValue("@DESCRIPTION", txtVoucherName.Text);
com.Parameters.AddWithValue("@DETAIL", txtDesc.Text);
com.Parameters.AddWithValue("@LOCATION", "OF");
com.Parameters.AddWithValue("@PIC", pic);
com.Parameters.AddWithValue("@PRICE", Convert.ToDecimal(txtPrice.Text));
com.ExecuteNonQuery();
ลองทำดูน่ะครับ
|
ประวัติการแก้ไข 2011-12-13 14:23:08
 |
 |
 |
 |
Date :
2011-12-13 14:21:50 |
By :
unlum |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|