Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Rivax en 26 Noviembre 2013, 18:52 pm



Título: Ingreso y acceso a datos en Access 2007
Publicado por: Rivax en 26 Noviembre 2013, 18:52 pm
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
  1. Imports System.Data
  2. Imports System.Data.OleDb
Declaro la cadena de conexión:
Código
  1. Public Class Animales
  2.  
  3.    'Cadena de conexión:
  4.    Dim StrConexion As String = "Provider=Microsoft.jet.OLEDB.7.0; Data Source=C:***Tiendanimales\database\TiendaAnimales.accdb"
  5.  
Abro la conexión:
Código:
Dim Conexion As OleDbConnection = New OleDbConnection(StrConexion)
Defino el comando:
Código:
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
  1. Private Sub btnAñadirAnimal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAñadirAnimal.Click
  2.        Try
  3.            'Abrimos la conexión
  4.            Conexion.ConnectionString = StrConexion
  5.            Conexion.Open()
  6.            Dim query As String
  7.            query = "INSERT INTO Proveedores (Id, Precio, Cantidad) VALUES (@id, @precio, @cantidad)"
  8.            Dim cmd As OleDbCommand = New OleDbCommand(query, Conexion)
  9.            cmd.Parameters.AddWithValue("@id", CInt(txtIDAnimal.Text))
  10.            cmd.Parameters.AddWithValue("@precio", CInt(txtPrecioAnimal.Text))
  11.            cmd.Parameters.AddWithValue("@cantidad", CInt(txtCantidadAnimales.Text))
  12.            Try
  13.                cmd.ExecuteNonQuery()
  14.            Catch ex As Exception
  15.                MsgBox(ex.Message)
  16.            End Try
  17.            'Cerramos la conexión
  18.            Conexion.Close()
  19.        Catch ex As Exception
  20.            Exit Sub
  21.        End Try
  22.        txtIDAnimal.Text = " "
  23.        txtPrecioAnimal.Text = " "
  24.        txtCantidadAnimales.Text = " "
  25.    End Sub
  26. End Class


Título: Re: Ingreso y acceso a datos en Access 2007
Publicado por: Eleкtro en 27 Noviembre 2013, 08:48 am
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
  1.           Try
  2.               'Abrimos la conexión
  3.               Conexion.ConnectionString = StrConexion
  4.               Conexion.Open()
  5.               Dim query As String
  6.               query = "INSERT INTO Proveedores (Id, Precio, Cantidad) VALUES (@id, @precio, @cantidad)"
  7.               Dim cmd As OleDbCommand = New OleDbCommand(query, Conexion)
  8.               cmd.Parameters.AddWithValue("@id", CInt(txtIDAnimal.Text))
  9.               cmd.Parameters.AddWithValue("@precio", CInt(txtPrecioAnimal.Text))
  10.               cmd.Parameters.AddWithValue("@cantidad", CInt(txtCantidadAnimales.Text))
  11.               cmd.ExecuteNonQuery()
  12.               'Cerramos la conexión
  13.               Conexion.Close()
  14.  
  15.           Catch ex As Exception
  16.              MsgBox(ex.Message & ex.stacktrace)
  17.  
  18.           Finally
  19.              ' Limpio los textboxes
  20.              txtIDAnimal.Clear
  21.              txtPrecioAnimal.Clear
  22.              txtCantidadAnimales.Clear
  23.  
  24.           End Try

saludos