• Viernes 8 de Noviembre de 2024, 11:38

Autor Tema:  Error de Archivo  (Leído 1773 veces)

tzalejo

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Error de Archivo
« en: Miércoles 18 de Agosto de 2010, 00:07 »
0
hola a todos los foreros!
tengo una error k me esta matando...desde hace varios dias no puedo arreglarlo...me dice "el proceso no puede obtener acceso al archivo SEQUIDO D LA DIRECCION DND ESTA EL ARCHIVO porque esta siendo utilizado en otro proceso" bueno entiendo xk es el error pero no puedo arreglarlo...
Les explico mas o menos kmo viene la mano...en mi bd tengo una campo dnd guard el nombre d una imagen (solo eso) en un formulario yo llamo para realizar varias operacione d modificaciones de la bd y en dnd tmb tengo esta imagen para poderla cambiar o eliminar...y cuando kiero recuperla imagen utilizo el IO.Path.GetFullPath("Fotos") para recuperarla desde la carpeta "Fotos" y la muestro en un picture...el problema es cuand kiero cambiar d imagen y guardarla con el mismo nombre d la anterior...me salta el error...
les dejo el codigo para k le hechen un vistazo..

Código: vb.net
  1.  
  2. Public Sub CargarProducto()
  3.             Try
  4.             oDataAdapterP = New SqlDataAdapter("SELECT Productos.* FROM Productos " & _
  5.                                         " WHERE Id_Categoria = " & iCategoria, CnSql)
  6.             'creo commandbuilder
  7.             Dim oComBuilder As New SqlCommandBuilder(oDataAdapterP)
  8.             'creo el dataset
  9.             oDataSetP = New DataSet
  10.             'abro la conexion
  11.             CnSql.Open()
  12.             'cargo el dataset
  13.             oDataAdapterP.Fill(oDataSetP, "Productos")
  14.             CnSql.Close()
  15.             Dim oDataRowP As DataRow
  16.             PictureBox2.Image = Nothing 'limpio el picturebox
  17.             If oDataSetP.Tables("Productos").Rows.Count > 0 Then
  18.                 oDataRowP = oDataSetP.Tables("Productos").Rows(iPosicionFilaActualP)
  19.                 txtProducto.Text = CStr(oDataRowP("NombreProducto"))
  20.                 txtPrecio.Text = CStr(oDataRowP("Precio"))
  21.                 iProducto = CInt(oDataRowP("id_Producto")) 'variable para modificar mas tarde
  22.                 'pregunto si exite una foto
  23.                 If Not oDataRowP("Foto") Is DBNull.Value Then
  24.                     MostrarImagenPict(Me.PictureBox2, CInt(oDataRowP("Foto"))) 'carga la foto en li picture
  25.                 End If
  26.             Else
  27.                 txtProducto.Text = ""
  28.                 txtPrecio.Text = ""
  29.  
  30.             End If
  31.         Catch ex As Exception
  32.             MsgBox(ex.Message.ToString, MsgBoxStyle.Critical, "SISTEMA MACHADO")
  33.         End Try
  34.     End Sub
  35.  
  36. Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
  37. 'este procedimiento el k acepta los cambio...
  38. Try
  39. Dim oDataRow As DataRow
  40. oDataRow = Me.oDataSetC.Tables("Categorias").Rows(Me.iPosicionFilaActualC)
  41. oDataRow("NombreCategoria") = Trim(txtCategoria.Text)
  42. Me.oDataAdapterC.Update(Me.oDataSetC, "Categorias")
  43. If txtProducto.Enabled = True Then 'pregutno si hay producto en la categoria
  44. Dim oDataRowP As DataRow
  45. oDataRowP = oDataSetP.Tables("Productos").Rows(iPosicionFilaActualP)
  46. oDataRowP("NombreProducto") = Trim(txtProducto.Text
  47. If Me.PictureBox2.Image IsNot Nothing Then 'pregunto si tengo una imagen
  48. oDataRowP("Foto") = iProducto
  49. End If
  50. oDataAdapterP.Update(oDataSetP, "Productos")
  51. 'aka trate d liberar los recursos pero no pasa nada
  52. oDataSetP = Nothing
  53. oDataSetC = Nothing
  54. oDataAdapterC = Nothing
  55. oDataAdapterP = Nothing
  56. oDataRowP.Delete()
  57. If Me.PictureBox2.Image IsNot Nothing Then
  58. File.Delete(Path.GetFullPath("Fotos") & "" & iProducto)'aka me da el error
  59. Else
  60. File.Delete(Path.GetFullPath("Fotos") & "" & iProducto)'aka tmb!
  61. End If
  62. End If
  63. Catch ex As Exception
  64. MsgBox(ex.Message.ToString, MsgBoxstyle.Critical, "SISTEMA MACHADO")
  65. End Try
  66. End Sub
  67.  

trate de liberar los recursos pero no pasa nada...va no se si ese es la solucion..espero k me puedan ayudar...xk me hizo doler la cabeza je...saludos...espero averme explicado...desde ya gracias...ale

tzalejo

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Error de Archivo
« Respuesta #1 en: Jueves 19 de Agosto de 2010, 22:05 »
0
Bueno para akellos k tengan el mismo error o para akellos  k no lo tengan ...

el error me decia k hay el proceso no puede obtener acceso al archivo  porque esta siendo utilizado en otro proceso y bueno el proceso era mi propia aplicacion pero yo sabia eso pero cuando intentaba liberar los recusos d mi picture no lo hacia bien... o sea yo solo hacia era esto:
Código: vb.net
  1. Me.PictureBox2.Image = Nothing
  2.  
y en realidad era asi:
Código: vb.net
  1. Me.PictureBox2.Image.Dispose()
  2. Me.PictureBox2.Image = Nothing
  3.  
y x eso me saltab el error! bueno eso era todos..saludos  :hitcomp: