Ingreso y acceso a datos en Access 2007

Iniciado por Rivax, 26 Noviembre 2013, 18:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Rivax

Hola, estoy haciendo un pequeño programa para gestionar una tienda de animales (nada serio, sólo un ejercicio de clase), pero tengo un problemilla con la base de datos.
El problema es que el programa me ejecuta, pero cuando le pulso al botón para introducirlos no me los introduce ni se me ponen en blanco los textBox, ¿en qué puedo estar fallando?

Aquí pongo el código que tengo en la clase animales, en este caso quiero meter los datos de los textBox en las columnas Id, Precio, Cantidad de la tabla Animales, que pertenece a la base de datos TiendaAnimales:

Código (vbnet) [Seleccionar]
Imports System.Data
Imports System.Data.OleDb

Declaro la cadena de conexión:
Código (vbnet) [Seleccionar]
Public Class Animales

    'Cadena de conexión:
    Dim StrConexion As String = "Provider=Microsoft.jet.OLEDB.7.0; Data Source=C:***Tiendanimales\database\TiendaAnimales.accdb"

Abro la conexión:
Dim Conexion As OleDbConnection = New OleDbConnection(StrConexion)
Defino el comando:
Dim Comando As System.Data.OleDb.OleDbCommand = New OleDbCommand(StrComando, Conexion)
    Dim StrComando As String = "Select * from TiendaAnimales"


Y aquí pongo el código del botón, que después de introducir los datos y pulsar este botón, me debería insertar los datos en la base de datos y borrar todo, pero no lo hace y no tampoco me notifica ningún error
Código (vbnet) [Seleccionar]
Private Sub btnAñadirAnimal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAñadirAnimal.Click
        Try
            'Abrimos la conexión
            Conexion.ConnectionString = StrConexion
            Conexion.Open()
            Dim query As String
            query = "INSERT INTO Proveedores (Id, Precio, Cantidad) VALUES (@id, @precio, @cantidad)"
            Dim cmd As OleDbCommand = New OleDbCommand(query, Conexion)
            cmd.Parameters.AddWithValue("@id", CInt(txtIDAnimal.Text))
            cmd.Parameters.AddWithValue("@precio", CInt(txtPrecioAnimal.Text))
            cmd.Parameters.AddWithValue("@cantidad", CInt(txtCantidadAnimales.Text))
            Try
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            'Cerramos la conexión
            Conexion.Close()
        Catch ex As Exception
            Exit Sub
        End Try
        txtIDAnimal.Text = " "
        txtPrecioAnimal.Text = " "
        txtCantidadAnimales.Text = " "
    End Sub
End Class

Eleкtro

La razón de que no te salte una excepción es que el primer manejo de excepción da positivo, pero lo único que haces para controlar la excepción es salir del método (Exit Sub)...

No manejo Acces, pero puedes empezar por dejar de anidar el manejo de excepciones para averiguar exáctamente donde está el error.

Código (vbnet) [Seleccionar]
          Try
              'Abrimos la conexión
              Conexion.ConnectionString = StrConexion
              Conexion.Open()
              Dim query As String
              query = "INSERT INTO Proveedores (Id, Precio, Cantidad) VALUES (@id, @precio, @cantidad)"
              Dim cmd As OleDbCommand = New OleDbCommand(query, Conexion)
              cmd.Parameters.AddWithValue("@id", CInt(txtIDAnimal.Text))
              cmd.Parameters.AddWithValue("@precio", CInt(txtPrecioAnimal.Text))
              cmd.Parameters.AddWithValue("@cantidad", CInt(txtCantidadAnimales.Text))
              cmd.ExecuteNonQuery()
              'Cerramos la conexión
              Conexion.Close()

          Catch ex As Exception
             MsgBox(ex.Message & ex.stacktrace)

          Finally
             ' Limpio los textboxes
             txtIDAnimal.Clear
             txtPrecioAnimal.Clear
             txtCantidadAnimales.Clear

          End Try


saludos