none
Error en VB.Net No se controló OleDBException RRS feed

  • Pregunta

  • Estoy reañizando un sistema de inventario para mi proyecto de grado, pero me da un error cuando ejecuto el programa; le he inentado conseguir cualquier tipo de solución, pero no consigo la falla. De poder ayudarme les estaría muy agradecida

    Este es el codigo

    Imports System.Data
    Imports System.Data.OleDb
    Public Class Editar
        Dim cadena As New OleDbConnection
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            cadena.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\personal\Desktop\tipo.mdb"
            cadena.Open()

            Dim consulta As String
            Dim oda As New OleDbDataAdapter
            Dim ods As DataSet
            Dim registro As Byte

            If Text_codigo.Text <> " " Then
                consulta = "Select *From inventario where Text_codigo=' " & Text_codigo.Text & " '"
                oda = New OleDbDataAdapter(consulta, cadena)
                ods = New DataSet
                oda.Fill(ods, "inventario")
                registro = ods.Tables("iventario").Rows.Count
                ComboBox1.Text = ods.Tables("inventario").Rows(0).Item("estado")

                If registro <> 0 Then
                    InventarioDataGridView.DataSource = ods
                    InventarioDataGridView.DataMember = "inventario"

                    Text_codigo.Text = ods.Tables("inventario").Rows(0).Item("codigo")
                    Textdescripcion.Text = ods.Tables("inventario").Rows(0).Item("descripcion")
                    Textnombre.Text = ods.Tables("inventario").Rows(0).Item("nombre")
                    Textcantidad.Text = ods.Tables("inventario").Rows(0).Item("cantidad")
                    DateTimePicker1.Value = ods.Tables("inventario").Rows(0).Item("fecha")

                    cadena.Close()

                Else
                    MsgBox("No Existe el Codigo", vbCritical, "Aviso")

                    cadena.Close()

                End If

            End If

            Text_codigo.Enabled = False
            Textdescripcion.Enabled = True
            Textnombre.Enabled = True
            ComboBox1.Enabled = True
            DateTimePicker1.Enabled = True


        End Sub

        Private Sub Editar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: esta línea de código carga datos en la tabla 'TipoDataSet1.inventario' Puede moverla o quitarla según sea necesario.
            Me.InventarioTableAdapter.Fill(Me.TipoDataSet1.inventario)
            'TODO: esta línea de código carga datos en la tabla 'TipoDataSet.inventario' Puede moverla o quitarla según sea necesario.
            Me.InventarioTableAdapter.Fill(Me.TipoDataSet1.inventario)
            ComboBox1.Items.Add("bueno")
            ComboBox1.Items.Add("regular")
            ComboBox1.Items.Add("malo")
        End Sub
        Dim comando As New OleDbCommand
        Dim actualizar As String
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

            Try
                cadena.Open()
                actualizar = "Update inventario SET Descripcion='" & Textdescripcion.Text &
                    "',Nombre='" & Textnombre.Text &
                    "',Estado='" & ComboBox1.Text &
                    "',Cantidad='" & Textcantidad.Text &
                    "',Fecha='" & DateTimePicker1.Value &
                    "'Where Text_codigo='" & Text_codigo.Text & "'"

                comando = New OleDbCommand(actualizar, cadena)
                comando.ExecuteNonQuery()
                MsgBox("registro actualizado correctamente", vbInformation, "Aviso")

            Catch ex As Exception
                MsgBox("No se  actualizo correctamente", vbInformation, "Aviso")
                cadena.Close()


            End Try





        End Sub
    End Class

    Justo en la fila donde aparece la inscripción oda.Fill(ods, "inventario") es donde me aparece la falla, si alguno puede ayudarme

                    
    martes, 23 de julio de 2019 23:13

Todas las respuestas

  • Hola:
    Prueba este codigo

    Option Strict On
    Option Explicit On
    Imports System.Data.OleDb

    Public Class Form2
        Private msCadenaACCESS As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\personal\Desktop\tipo.mdb"
        Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
            ComboBox1.Items.Add("bueno")
            ComboBox1.Items.Add("regular")
            ComboBox1.Items.Add("malo")
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim loDataTable As New DataTable
            Try
                Dim lsQuery As String = "Select *From inventario where Text_codigo=@codigo"
                Using loConexion As New OleDbConnection(msCadenaACCESS)
                    ' crear comando
                    Using loComando As New OleDbCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New OleDbParameter("@codigo", Text_codigo.Text))
                        Using loDataAdapter As New OleDbDataAdapter(loComando)
                            loDataAdapter.Fill(loDataTable)
                        End Using
                    End Using
                    InventarioDataGridView.DataSource = loDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            '
            If loDataTable.Rows.Count = 0 Then
                MessageBox.Show("NO Existe el Codigo", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                Text_codigo.Text = CStr(loDataTable.Rows(0).Item("codigo"))
                Textdescripcion.Text = CStr(loDataTable.Rows(0).Item("descripcion"))
                Textnombre.Text = CStr(loDataTable.Rows(0).Item("nombre"))
                Textcantidad.Text = CStr(loDataTable.Rows(0).Item("cantidad"))
                DateTimePicker1.Value = CDate(loDataTable.Rows(0).Item("fecha"))
            End If
            Text_codigo.Enabled = False
            Textdescripcion.Enabled = True
            Textnombre.Enabled = True
            ComboBox1.Enabled = True
            DateTimePicker1.Enabled = True
        End Sub

        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Try
                Dim lsQuery As String = "Update inventario SET Descripcion=@Descripcion, Nombre=@Nombre, Estado=@Estado, Cantidad=@Cantidad, Fecha=@Fecha Where Text_codigo=@Codigo"
                Using loConexion As New OleDbConnection(msCadenaACCESS)
                    ' crear comando
                    Using loComando As New OleDbCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New OleDbParameter("@Descripcion", Textdescripcion.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Nombre", Textnombre.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Estado", ComboBox1.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Cantidad", Textcantidad.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Fecha", DateTimePicker1.Value))
                        loComando.Parameters.Add(New OleDbParameter("@codigo", Text_codigo.Text))
                        loConexion.Open()
                        loComando.ExecuteNonQuery()
                    End Using
                    MessageBox.Show("Registro Modificado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Pablo Rubio miércoles, 24 de julio de 2019 17:48
    miércoles, 24 de julio de 2019 5:31
  • [No se controló OleDbException] Justo en la fila donde aparece la inscripción oda.Fill(ods, "inventario")                 

    Ese error indica que no es correcta la sentencia SQL que cargaste en el DataAdapter. Un primer fallo que veo así a ojo es que falta un espacio en blanco entre el asterisco y la palabra From.

    Si aparte de eso te sigue dando un error, pon un punto de ruptura con el debugger justo después de asignar el valor a la variable "consulta", copia el valor que tiene la variable, y pégalo aquí en el foro a ver si somos capaces de ver qué error tiene.

    • Propuesto como respuesta Pablo Rubio miércoles, 24 de julio de 2019 17:48
    miércoles, 24 de julio de 2019 7:15