 |
|
คือว่าผมจะเขียนโค้ดแก้ไขรูปภาพครับจากโค้ดครับ คือว่า เวลาเค้าแก้ไขรูปภาพมาให้ลบรูปภาพเก่าและใส่รูปภาพใหม่แทนแต่ Error ครับ |
|
 |
|
|
 |
 |
|
ไม่มีคนมาตอบเลยหรอครับ ขอ ความกรุณาหน่อยนะครับขอร้องคับ
|
 |
 |
 |
 |
Date :
2010-10-23 19:54:12 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณได้มีการเปิดไฟล์นั้นไว้หรือเปล่าครับ
|
 |
 |
 |
 |
Date :
2010-10-24 06:50:32 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ได้เปิดนะครับ เพราะเวลาเค้าแก้ไขรูปผมก็ให้ขึ้นรูปภาพใหม่มา ซึ่งก็ทำการปิดรูปภาพเก่าไปแล้วครับ
|
 |
 |
 |
 |
Date :
2010-10-24 14:14:25 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่วิน ครับ Pb_ProductImg.Image.Dispose()
คำสั่งนี้ มันคือให้ปิดการทำงานช่ายหรือป่าวครับ คือผมใส่แล้วก็ยัง error เหมือนเดิม
|
 |
 |
 |
 |
Date :
2010-10-25 00:03:38 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Public ProductId, ProductName1, TypePId, ProductUnit As String
Public ProductImg, ProductPathOld, ProductPathNew As String
Public ProductSaleDouble As Double = 0.0
Private DTableTypeP As New DataTable
Private DSetRearchProduct As New DataSet
Code (VB.NET)
Private Sub Btn_Update_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Update.Click
ProductId = ""
ProductName1 = ""
ProductImg = ""
ProductSaleDouble = 0.0
ProductUnit = ""
TypePId = ""
Txt_ProductSale.DataBindings.Clear()
Txt_ProductName.Text = Trim(Txt_ProductName.Text)
Txt_ProductUnit.Text = Trim(Txt_ProductUnit.Text)
Txt_ProductSale.Text = Trim(Txt_ProductSale.Text)
Dim ProductImgOld As String = Lbl_ParthImage.Text
If Txt_ProductId.Text <> "" Then
If Txt_ProductName.Text <> "" AndAlso Txt_ProductSale.Text <> "" AndAlso Txt_ProductUnit.Text <> "" Then
ProductId = Txt_ProductId.Text
ProductName1 = Txt_ProductName.Text
ProductSaleDouble = Convert.ToDouble(Txt_ProductSale.Text)
ProductUnit = Txt_ProductUnit.Text
TypePId = Cbb_TypeP.SelectedValue
If TypePId <> "" Then
Dim CheckP As Boolean
Connect()
SetCommand("select PD_Name from Product_Table where PD_Name=@ProductName AND PD_Id!=@ProductId")
Cmd.Parameters.AddWithValue("ProductName", ProductName1)
Cmd.Parameters.AddWithValue("ProductId", ProductId)
DSet = New DataSet
Adpter.Fill(DSet, "ProductT")
Dim DTableCheckProduct As New DataTable
DTableCheckProduct = DSet.Tables("ProductT")
If DTableCheckProduct.Rows.Count = 0 Then
CheckP = True
Else
CheckP = False
End If
If CheckP = True Then
Dim Mbr As MsgBoxResult
Mbr = MsgBox("ต้องการแก้ไขข้อมูลสินค้าจริงหรือไม่", _
MsgBoxStyle.OkCancel + _
MsgBoxStyle.Question, _
"ยืนยันการแก้ไขข้อมูลสินค้า")
If (Mbr = MsgBoxResult.Ok) Then
Connect()
SetReader("Update Product_Table Set TP_Id=@TypePId , PD_Name=@ProductName , PD_Unit=@ProductUnit , PD_Sale=@ProductSale , PD_Img=@ProductImg where PD_Id=@ProductId")
Cmd.Parameters.AddWithValue("ProductId", ProductId)
Cmd.Parameters.AddWithValue("TypePId", TypePId)
Cmd.Parameters.AddWithValue("ProductName", ProductName1)
Cmd.Parameters.AddWithValue("ProductUnit", ProductUnit)
Cmd.Parameters.AddWithValue("ProductSale", ProductSaleDouble)
Cmd.Parameters.AddWithValue("ProductImg", ProductImg)
Con.Close()
Dim w As Integer
Con.Open()
w = Cmd.ExecuteNonQuery
If w > 0 Then
MessageBox.Show("แก้ไขข้อมูลลูกค้าเรียบร้อย", "เรียบร้อย")
If ProductPathOld <> "" Then
Pb_ProductImg.Image.Dispose()
'System.IO.File.Delete(Application.StartupPath & "..\..\..\ProductNewName\" & ProductImgOld)
'My.Computer.FileSystem.DeleteFile("..\..\ProductNewName\" & ProductImgOld)
ProductImg = Now.Day.ToString("00") & "_" & Now.Month.ToString("00") & "_" & Now.Year.ToString("0000") & "_" & Now.Minute.ToString("00") & "_" & Now.Second.ToString("00") & ".jpg"
Dim ObjBitmap As Bitmap = New System.Drawing.Bitmap(ProductPathOld)
Dim ObjGraphic As Graphics = Graphics.FromImage(ObjBitmap)
ObjBitmap.Save("..\..\ProductNewName\" & ProductImg, ImageFormat.Jpeg)
End If
ShowDataProduct()
Txt_ProductId.Clear()
Txt_ProductName.Clear()
Txt_TypePId.Clear()
Cbb_TypeP.SelectedIndex = 0
Txt_ProductUnit.Clear()
Txt_ProductSale.Text = ""
ProductSaleDouble = 0.0
Txt_ProductSale.DataBindings.Clear()
ProductImg = ""
Pb_ProductImg.Image = Nothing
Con.Close()
Else
MessageBox.Show("ไม่สามารถแก้ไขข้อมูลลูกค้าได้", "ข้อผิดพลาด")
End If
ElseIf (Mbr = MsgBoxResult.Cancel) Then
Txt_ProductId.Clear()
Txt_ProductName.Clear()
Txt_TypePId.Clear()
Cbb_TypeP.SelectedIndex = 0
Txt_ProductUnit.Clear()
Txt_ProductSale.Text = ""
ProductSaleDouble = 0.0
Txt_ProductSale.DataBindings.Clear()
ProductImg = ""
Pb_ProductImg.Image = Nothing
Me.Height = 369
End If
Else
MessageBox.Show("มีสินค้าที่ชื่อ " & ProductName1 & " นี้แล้ว", "ข้อผิดพลาด")
End If
Else
MessageBox.Show("กรุณาเลือกประเภทสินค้า", "ข้อผิดพลาด")
End If
Else
MessageBox.Show("กรุณากรอกข้อมูลสินค้าให้ครบถ้วน", "ข้อผิดพลาด")
End If
Else
MessageBox.Show("กรุณาเลือกข้อมูลสินค้าที่ต้องการ", "ข้อผิดพลาด")
End If
End Sub
นี้คือโค้ดในปุ่มแก้ไขทั้งหมดครับพี่วิน ช่วยกรุณาดูให้หน่อยนะครับ ขอบพระคุณมากครับ
|
 |
 |
 |
 |
Date :
2010-10-26 03:04:53 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่มีคนตอบเลยหรอครับ ทำไม่ได้
|
 |
 |
 |
 |
Date :
2010-11-09 13:47:50 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มัน Error ว่าอะไรครับ ใส่ try-catch แล้ว ส่ง error มาให้ดูดีกว่า
เท่าที่ผมสังเกต code ดู คาดว่าคุณ ลบรูป ทิ้งแล้ว ไปเรียกรูปมาเปิด มันจะหาไม่เจอ
|
 |
 |
 |
 |
Date :
2010-11-09 14:54:03 |
By :
numenoy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่เห็นต้องใช้ปิดไฟล์รูปเลย ก็เห็นเปิดอ่านอยู่แล้วมันจะลบได้ไง
Code (VB.NET)
'เข้าใจว่าอันนี้คือ picturebox
Pb_ProductImg.Image = Nothing
แต่ผมไม่เคยเรียกรูปภาพโดยตรงหรอกนะ เพราะจะใช้ก็โหลดเก็บไว้ใน memory ก่อนแล้วค่อยใช้
จะลบก็แค่ clear memory จะลบไฟล์จริงก็ไม่ติดอะไรด้วย
https://www.thaicreate.com/dotnet/forum/043583.html
|
 |
 |
 |
 |
Date :
2010-11-09 15:15:41 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มัน error ประมาณว่า คุณเปิดการใช้งานpicturebox อยู่ จึงทำการลบไม่ได้ ซึ่งผมก็ใช้ Pb_ProductImg.Image.Dispose()
แล้วอ่ะครับ
|
 |
 |
 |
 |
Date :
2010-11-10 13:49:06 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พี่ tungman มีตัวอย่างโค้ด วีบี ไหมครับ คือผมดูแล้วงง อ่ะครับ
|
 |
 |
 |
 |
Date :
2010-11-10 13:50:28 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub Btn_Update_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Update.Click
ProductId = ""
ProductName1 = ""
ProductImg = ""
ProductSaleDouble = 0.0
ProductUnit = ""
TypePId = ""
Txt_ProductSale.DataBindings.Clear()
Txt_ProductName.Text = Trim(Txt_ProductName.Text)
Txt_ProductUnit.Text = Trim(Txt_ProductUnit.Text)
Txt_ProductSale.Text = Trim(Txt_ProductSale.Text)
Dim ProductImgOld As String = Lbl_ParthImage.Text
If Txt_ProductId.Text <> "" Then
If Txt_ProductName.Text <> "" AndAlso Txt_ProductSale.Text <> "" AndAlso Txt_ProductUnit.Text <> "" Then
ProductId = Txt_ProductId.Text
ProductName1 = Txt_ProductName.Text
ProductSaleDouble = Convert.ToDouble(Txt_ProductSale.Text)
ProductUnit = Txt_ProductUnit.Text
TypePId = Cbb_TypeP.SelectedValue
If TypePId <> "" Then
Dim CheckP As Boolean
Connect()
SetCommand("select PD_Name from Product_Table where PD_Name=@ProductName AND PD_Id!=@ProductId")
Cmd.Parameters.AddWithValue("ProductName", ProductName1)
Cmd.Parameters.AddWithValue("ProductId", ProductId)
DSet = New DataSet
Adpter.Fill(DSet, "ProductT")
Dim DTableCheckProduct As New DataTable
DTableCheckProduct = DSet.Tables("ProductT")
If DTableCheckProduct.Rows.Count = 0 Then
CheckP = True
Else
CheckP = False
End If
If CheckP = True Then
Dim Mbr As MsgBoxResult
Mbr = MsgBox("ต้องการแก้ไขข้อมูลสินค้าจริงหรือไม่", _
MsgBoxStyle.OkCancel + _
MsgBoxStyle.Question, _
"ยืนยันการแก้ไขข้อมูลสินค้า")
If (Mbr = MsgBoxResult.Ok) Then
Try
If ProductPathOld <> "" Then
ProductImg = Now.Day.ToString("00") & "_" & Now.Month.ToString("00") & "_" & Now.Year.ToString("0000") & "_" & Now.Minute.ToString("00") & "_" & Now.Second.ToString("00") & ".jpg"
Else
ProductImg = Lbl_ParthImage.Text
End If
Connect()
SetReader("Update Product_Table Set TP_Id=@TypePId , PD_Name=@ProductName , PD_Unit=@ProductUnit , PD_Sale=@ProductSale , PD_Img=@ProductImg where PD_Id=@ProductId")
Cmd.Parameters.AddWithValue("ProductId", ProductId)
Cmd.Parameters.AddWithValue("TypePId", TypePId)
Cmd.Parameters.AddWithValue("ProductName", ProductName1)
Cmd.Parameters.AddWithValue("ProductUnit", ProductUnit)
Cmd.Parameters.AddWithValue("ProductSale", ProductSaleDouble)
Cmd.Parameters.AddWithValue("ProductImg", ProductImg)
Con.Close()
Dim w As Integer
Con.Open()
w = Cmd.ExecuteNonQuery
If w > 0 Then
MessageBox.Show("แก้ไขข้อมูลลูกค้าเรียบร้อย", "เรียบร้อย")
If ProductPathOld <> "" Then
Pb_ProductImg.Image.Dispose()
My.Computer.FileSystem.DeleteFile("..\..\ProductNewName\" & ProductImgOld)
Dim ObjBitmap As Bitmap = New System.Drawing.Bitmap(ProductPathOld)
Dim ObjGraphic As Graphics = Graphics.FromImage(ObjBitmap)
ObjBitmap.Save("..\..\ProductNewName\" & ProductImg.ToString.Trim, ImageFormat.Jpeg)
End If
ShowDataProduct()
Txt_ProductId.Clear()
Txt_ProductName.Clear()
Txt_TypePId.Clear()
Cbb_TypeP.SelectedIndex = 0
Txt_ProductUnit.Clear()
Txt_ProductSale.Text = ""
ProductSaleDouble = 0.0
Txt_ProductSale.DataBindings.Clear()
ProductImg = ""
Pb_ProductImg.Image = Nothing
Con.Close()
Else
MessageBox.Show("ไม่สามารถแก้ไขข้อมูลลูกค้าได้", "ข้อผิดพลาด")
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
ElseIf (Mbr = MsgBoxResult.Cancel) Then
Txt_ProductId.Clear()
Txt_ProductName.Clear()
Txt_TypePId.Clear()
Cbb_TypeP.SelectedIndex = 0
Txt_ProductUnit.Clear()
Txt_ProductSale.Text = ""
ProductSaleDouble = 0.0
Txt_ProductSale.DataBindings.Clear()
ProductImg = ""
Pb_ProductImg.Image = Nothing
Me.Height = 369
End If
Else
MessageBox.Show("มีสินค้าที่ชื่อ " & ProductName1 & " นี้แล้ว", "ข้อผิดพลาด")
End If
Else
MessageBox.Show("กรุณาเลือกประเภทสินค้า", "ข้อผิดพลาด")
End If
Else
MessageBox.Show("กรุณากรอกข้อมูลสินค้าให้ครบถ้วน", "ข้อผิดพลาด")
End If
Else
MessageBox.Show("กรุณาเลือกข้อมูลสินค้าที่ต้องการ", "ข้อผิดพลาด")
End If
พอ try มันกลับไม่ error ครับ แต่ว่ามันไม่ทำคำสั่งลบภาพ ครับ
|
 |
 |
 |
 |
Date :
2010-11-10 14:00:53 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

คำสั่งที่ต้องเพิ่มเข้าไป
Code (VB.NET)
Dim ObjBitmap As Bitmap = New System.Drawing.Bitmap(ProductPathOld)
Dim NewObjBitMap As New System.Drawing.Bitmap(ObjBitmap)
ObjBitmap.Dispose()
Dim ObjGraphic As Graphics = Graphics.FromImage(NewObjBitMap)
NewObjBitMap.Save("..\..\ProductNewName\" & ProductImg.ToString.Trim, ImageFormat.Jpeg)
|
 |
 |
 |
 |
Date :
2010-11-11 22:54:30 |
By :
BASE3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอโทษครับ ที่ผมโพสคำตอบไว้ มาดูอีกทีคิดว่าไม่ถูกต้อง ผมขอแนะนำดังนี้
1. ผมเข้าใจว่า ชื่อ File รูปใหม่ ProductImg น่าจะเป็นชื่อเดียวกับ ชื่อ File รูปภาพที่เรียกมาใส่ใน Pb_ProductImg
2. เวลาเรียกรูปมาใส่ใน Pb_ProductImg ผมแนะนำให้เรียกแบบนี้ เพื่อตัดการผูกติดกับ file
Code (VB.NET)
Dim pic as new Bitmap(ชื่อไฟล์)
Pb_ProductImg = New Bitmap(Pic)
ถ้า ตัวแปร pic ไม่ได้อยู่ sub เดียวกับ Save ก็ไม่ต้อง Dispose
แต่ถ้าอยู่ใน Sub เดียวกันต้อง Dispose ก่อน
3. การตั้งชื่อตามวันที่ของคุณ ผมคิดว่าน่าจะใช้แบบนี้ได้
Code (VB.NET)
xx = Now.Tostring("dd_MM_yyyy_mm_ss")
|
 |
 |
 |
 |
Date :
2010-11-12 07:13:15 |
By :
BASE3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จะนำไปทดสอบนะครับ แล้วได้ผลยา่งไรจะมาบอกครับ
|
 |
 |
 |
 |
Date :
2010-11-12 11:07:04 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มาพิจารณาดูอีกที น่าจะ Error ตรง Delete File มากว่า ตอน Save นะครับ
|
 |
 |
 |
 |
Date :
2010-11-12 11:14:19 |
By :
base3000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ช่ายเลยครับ พอผมเอา Delete File ออก มันไม่ error แล้วกลับทำงานเซฟได้ตามปกติ แต่มันลบไม่ได้อ่าครับ
มีวิธีแก้ไขไหมครับ
|
 |
 |
 |
 |
Date :
2010-11-14 13:00:48 |
By :
ibankza11 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|