Buenas, ¿qué tal? Os escribo por que tengo un problema con escritura/lectura en VB
El problema es que leo un fichero (fecha anterior.txt) y cuando quiero escribir en el mismo fichero para actualizar la fecha me dice que esta abierto y que no puedo escribir
Os dejo el codigo a ver si me podéis ayudar.
Public Class Form1
Dim fecha_ant As Date
Dim fecha_sistema As Date
Dim fecha_total As Long 'resultado de la resta de las fechas
Dim fecha_total1 As Integer ' resultado de la resta de fechas para mostrar y comparar
Dim fecha_nueva As New System.IO.StreamWriter("C:\1\fecha nueva.txt", True)
Dim fecha_anterior1 As New System.IO.StreamWriter("C:\1\fecha anterior.txt", True)
Dim fecha_anterior As New System.IO.StreamReader("C:\1\fecha anterior.txt", True)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'ocultamos etiquetas y botones que no tengan que aparecer en la ventana principal
Label5.Hide()
Label8.Hide()
Label6.Hide()
Label9.Hide()
Button1.Hide()
' MOSTRAMOS FECHA ACTUAL SISTEMA EN LABEL3
Label3.Text = DateTime.Now.ToString("d MM yyyy")
'pasamos la fecha del label3 a variable fecha_sistema para poder guardarla en el fichero de nueva fecha
fecha_sistema = CDate(Label3.Text)
'leemos la fecha anterior del fichero para saber cual es la ultima realizada
fecha_ant = CDate(CStr(fecha_anterior.ReadLine()))
fecha_anterior.Close()
'escribimos la fecha de hoy en el fichero para poder calcular la diferencia
fecha_nueva.WriteLine(fecha_sistema)
fecha_nueva.Close()
'convertimos las fechas en un string
Label4.Text = CStr(fecha_ant)
'hacemos la direfencia entre las dos fechas
fecha_total = DateDiff(DateInterval.Day, fecha_ant, fecha_sistema)
fecha_total1 = CInt(Val(fecha_total))
'sacamos la diferencia de las fechas en el label 6
Label6.Text = CStr(fecha_total)
'comparamos si está dentro de rango y mostramos boton salir y cartel del tiempo restante
If fecha_total1 >= 0 And fecha_total1 <= 6 Then
Label5.Show()
Label5.Text = ("Quedan " & fecha_total1 & " dias para el mantenimiento")
Button1.Show()
End If
'si la fecha del mantenimiento está pasada
If fecha_total1 > 6 Then
fecha_anterior1.WriteLine(fecha_sistema) [u][b]//////ESTA LINEA ES EL PROBLEMA/////[/b][/u]
fecha_anterior.Close()
Label5.Text = ("El mantenimiento está cumplido en: " & fecha_total1)
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
End Class