Autor Tema: Unhandled exception has occurred in your application. If you clik Continue, the  (Leído 1668 veces)

Isaac_VB

  • Visitante
Hola, Mi programa funciona y todo, Solamente que al momento de abrir por primera vez Form2 donde esta mi DataGridView (Tiene que pasar un logeo sencillo), Me sale un  """error""" inofensivo;

https://ibb.co/gJqqY72

Estoy casi seguro que es porque al iniciar el formulario tiene que verificar y abrir el archivo donde guarda los datos de DataGridView, Pero al momento de iniciarlo por primera vez no tiene ese documento ya que se crea ese documento al momento de presionar un botón, Así que lo mas seguro seria hacer un If para que si no existe ese archivo de guardado haga uno apenas abriendo

Aquí les dejo el código tal vez sea otra cosa.

Código: [Seleccionar]
Imports System.IO
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Hide()
        Form1.Show()
    End Sub
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim archivo_leer As StreamReader
        archivo_leer = New StreamReader("./datos.txt")
        While Not archivo_leer.EndOfStream
            Dim cadena As String = archivo_leer.ReadLine
            Dim leer As String() = cadena.Split(New Char() {";"})
            dtgvProductos.Rows.Add(leer)
        End While
        archivo_leer.Close()
    End Sub
    Private Sub btcAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcAgregar.Click
        dtgvProductos.Rows.Add()
        Dim CantFila = dtgvProductos.Rows.Count - 1
        dtgvProductos(0, CantFila).Value = txtProducto.Text
        dtgvProductos(1, CantFila).Value = txtDescripcion.Text
        dtgvProductos(2, CantFila).Value = txtId.Text
        dtgvProductos(3, CantFila).Value = txtMarca.Text
        dtgvProductos(4, CantFila).Value = txtFragil.Text
        dtgvProductos(5, CantFila).Value = txtFechaAlma.Text
        dtgvProductos(6, CantFila).Value = txtFechaVenci.Text
        dtgvProductos(7, CantFila).Value = txtPrecio.Text

    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim pregunta As String
        pregunta = MsgBox("¿Guardar datos antes de salir?")
        If pregunta = vbYes Then
            GuardarDatos()
        Else
            Me.Close()
        End If
    End Sub

    Private Sub btnBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBorrar.Click
        If dtgvProductos.SelectedRows.Count = 0 Then
            MessageBox.Show("Debes seleccionar la linea de datos a editar")
        Else
            dtgvProductos.SelectedRows(0).SetValues(txtProducto.Text, txtDescripcion.Text, txtId.Text, txtMarca.Text, txtFragil.Text, txtFechaAlma.Text, txtFechaVenci.Text, txtPrecio.Text)
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If dtgvProductos.SelectedRows.Count > 0 Then
            For i As Integer = dtgvProductos.SelectedRows.Count - 1 To 0 Step -1
                dtgvProductos.Rows.RemoveAt(dtgvProductos.SelectedRows(i).Index)
            Next
        Else
            MessageBox.Show("Debes seleccionar la linea de datos a borrar")
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        GuardarDatos()
    End Sub
    Private Sub GuardarDatos()
        Dim archivo_escritura As StreamWriter
        Dim linea As String
        archivo_escritura = New StreamWriter("./datos.txt")
        With dtgvProductos
            For y = 0 To .RowCount - 1
                linea = .Rows(y).Cells("Producto").Value & ";" &
                    .Rows(y).Cells("Descripcion").Value & ";" &
                    .Rows(y).Cells("ID").Value & ";" &
                    .Rows(y).Cells("Marca").Value & ";" &
                    .Rows(y).Cells("Fragil").Value & ";" &
                    .Rows(y).Cells("FechaEntraAlmacen").Value & ";" &
                    .Rows(y).Cells("FechaDeVendicimiento").Value & ";" &
                    .Rows(y).Cells("Precio").Value & ";"
                archivo_escritura.WriteLine(linea)
            Next
            MsgBox("Los datos se guardaron correctamente")
        End With
        archivo_escritura.Close()
    End Sub
End Class
« Última modificación: 17 de Abril 2021, 20:28 por Ogramar »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re: Error al momento de cambiar Form por primera vez.
« Respuesta #1 en: 15 de Enero 2021, 18:09 »
El mensaje de error parece aludir a que no encuentra el archivo datos.txt que parece que tienes definido en

archivo_leer = New StreamReader("./datos.txt")

Deberías comprobar que tienes el archivo creado y que la ruta es correcta. Al indicar ./datos.txt estarías aludiendo a que el archivo se encuentra en el directorio de trabajo actual que está usando Visual Basic, esto deberías comprobarlo.

¿Qué versión de VB estás usando? Esto deberías indicarlo en el título, como se explica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0 , mira ahí las recomendaciones para poner título a los temas.

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".