Autor Tema: Guardar en una tabla Access (base de datos) informacion desde Visual Basic  (Leído 21902 veces)

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola a todos tengo una base de datos llamada prueba y su tabla vehiculos trato de guardar en la tabla en sus campos Num, Nombre, Color y no hace nada aqui les dejo el codigo del boton guardar ya hice la conexion y nada estoy trabajando en visual studio 2012 vb.net y access 2010.

Código: [Seleccionar]
Imports System.Data.OleDb
Public Class Form1

    Dim conexion As New OleDb.OleDbConnection
    Dim comandos As New OleDb.OleDbCommand
    Dim adaptador As New OleDb.OleDbDataAdapter
    Dim resgistro As New DataSet
    Private _oleDbCommand As OleDb.OleDbCommand

    Private Property OleDbCommand(p1 As String) As OleDb.OleDbCommand
        Get
            Return _oleDbCommand
        End Get
        Set(value As OleDb.OleDbCommand)
            _oleDbCommand = value
        End Set
    End Property

    Private Property registro As DataSet

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim conexion As OleDbConnection
        Dim comandos As OleDbCommand

        Try
            comandos = New OleDbCommand("ISERT INTO vehiculos VALUE(Num, Nombre,Color) VALUES(TextBox1, TextBox2, Textox3)", conexion)

            comandos.Parameters.AddWithValue("@Num", TextBox1.Text)
            comandos.Parameters.AddWithValue("@Nombre", TextBox2.Text)
            comandos.Parameters.AddWithValue("@Color", TextBox3.Text)

            comandos.ExecuteNonQuery()

            MsgBox("Guardado Correctamente", vbInformation, "Correcto")

        Catch ex As Exception
            MsgBox("Error al Guardar", vbExclamation, "Error")
        End Try

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\prueba.accdb")
            conexion.Open()
            MsgBox("Conexión correcta", vbInformation, "Conectado")

        Catch ex As Exception
            MsgBox("Ha ocurrido un error al intentar conectarse con la base de datos", vbInformation, "Error")
        End Try
    End Sub

   

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim consulta As String
        Dim lista As Byte

        If TextBox1.Text <> "" Then
            consulta = "SELECT * FROM vehiculos WHERE Num = " & TextBox1.Text & ""
            adaptador = New OleDb.OleDbDataAdapter(consulta, conexion)
            registro = New DataSet
            adaptador.Fill(registro, "vehiculos")
            lista = registro.Tables("vehiculos").Rows.Count

            If lista <> 0 Then
                TextBox1.Text = registro.Tables("vehiculos").Rows(0).Item("Num")
                TextBox2.Text = registro.Tables("vehiculos").Rows(0).Item("Nombre")
                TextBox3.Text = registro.Tables("vehiculos").Rows(0).Item("Color")


            End If
        End If
    End Sub
End Class
« Última modificación: 07 de Junio 2015, 22:23 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Hola Andy para pegar código en el foro hazlo según esta explicación: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Intenta seguir este ejemplo para solucionar el problema https://www.aprenderaprogramar.com/foros/index.php?topic=1504

Salu2

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola que crees que ya hice todo el procedimiento y nada que guarda, elimina ni actuaiza los registros en el boton guardar dice que si hace todo pero jamas aparece el registro vaya no se actualiza la base de datos con el nuevo ingreso.

para eliminar un registro en la consulta me quenera el siguiente error en tiempo de ejecucion del programa

No se han especificado valores para algunos de los parámetros requeridos.
No hay ninguna fila en la posición 0 (cero)

Código: [Seleccionar]
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim consulta As String
        Dim lista As Byte

        If TextBox1.Text <> "" Then
            REM hace la consulta para buscar el registro
            MsgBox("CONSULTA !")
            consulta = "SELECT *FROM personas_censadas WHERE cedula = " & TextBox1.Text & ""
            adaptador = New OleDb.OleDbDataAdapter(consulta, conexion)
            regitro = New DataSet
            adaptador.Fill(regitro, "personas_censadas")
            MsgBox("Cumplio el criterio !")
            REM se obtiene la fila que cumpla el criterio
            lista = regitro.Tables("personas_censadas").Rows.Count

            MsgBox("obtuvo lA FILA")
            If lista <> 0 Then REM si encuentra un registro
                MsgBox("ENCONTRO EL REGISTRO")
                TextBox1.Text = regitro.Tables("personas_censadas").Rows(0).Item("'cedula'")
                TextBox2.Text = regitro.Tables("personas_censadas").Rows(0).Item("'nombre'")
                TextBox3.Text = regitro.Tables("personas_censadas").Rows(0).Item("'apellido'")
                TextBox4.Text = regitro.Tables("personas_censadas").Rows(0).Item("'sexo'")
                TextBox5.Text = regitro.Tables("personas_censadas").Rows(0).Item("'telefono'")
                TextBox6.Text = regitro.Tables("personas_censadas").Rows(0).Item("'correo'")
                TextBox7.Text = regitro.Tables("personas_censadas").Rows(0).Item("'nive_instruccion'")

                Button2.Enabled = True

            End If

        End If
    End Sub

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Hola ¿tienes creada la base de datos y tiene contenidos? Por el error que indicas parece que no haga conexión. ¿Te ejecuta esto (poniendo la ruta en donde tengas tú la base de datos) según el código de ejemplo?

Código: [Seleccionar]
Try
conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & "C:\Users\Admin\Documents\datos.accdb") 'Entre comillas está la cadena de conexión, tenemos que consultarla en el entorno de desarrollo
conexion.Open()
MsgBox ("Conexión correcta", vbInformation, "Conectado")

Catch ex As Exception
MsgBox ("Ha ocurrido un error al intentar conectarse con la base de datos", vbInformation, "Error")
End Try

¿Te dice que la conexión es correcta o te dice error?

Salu2

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
 :'(   :'(  Si ya esta verificado y si realiza la conexión ahora el gran trabajo es que muero de coraje porque no actualiza nada en la tabla de la base de datos! :'(

Código: [Seleccionar]
Try
            REM consulta para añadir un registro
            MsgBox("realizara la consulta")
            comandos = New OleDbCommand("INSER INTO UTX_Finanzas (numero, nombre, color, " & vbCrLf &
                                         "marca, placas, numero_de_serie) (TextBox1, " & vbCrLf &
                                         "TextBox2, TextBox3, TextBox4, TextBox5, " & vbCrLf &
                                         "TextBox6)", conexion)
            MsgBox("no he guardado aun")

            REM agregamos los valores de los parametros a la consulta

            comandos.Parameters.AddWithValue("@numero", TextBox1.Text)
            comandos.Parameters.AddWithValue("@nombre", TextBox2.Text)
            comandos.Parameters.AddWithValue("@color", TextBox3.Text)
            comandos.Parameters.AddWithValue("@marca", TextBox4.Text)
            comandos.Parameters.AddWithValue("@placas", TextBox5.Text)
            comandos.Parameters.AddWithValue("@numero_de_serie", TextBox6)

            comandos.ExecuteNonQueryAsync()

            MsgBox("realizo bien la consulta")
            MsgBox("GUARDADO CORRECTAMENTE")

            TextBox1.Focus()


        Catch ex As Exception

        End Try

        MsgBox("ERROR AL GRABAR")

        End Try

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
hola sigue sin generar registros en la tabla aunque me dice que si ha guardado correctamente !!! también cuando en el botón buscar realiza la consulta me dice que no se a inicializado la propiedad selectcommand antes de llamar a fil

en otra instancia igual del mismo programa donde realiza otra consulta de la misma tabla me comenta que que no se ha inicializado la propiedad connectionstring antes de llamar a fill

como te decía esto lo hace siempre en tiempo de ejecución del botón el cual tiene lo programado

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola estoy trabajando desde visual studio 2012 y access 2010 ya hice la pruebra de que se conecte a la base de datos y me genera que la conexion es correcta pero al realizar actualizaciones, busquedas y/o eliminar algo de la tabla me genera los siguientes errorno guarda nada en la tabla y me confirma con un msgbox que si... hizo todo el procedimiento
el boton de buscar me genera un error que dice No se ha inicializado la propiedad SelectCommand antes de llamar a 'Fill'. es el siguiente codigo:
Código: [Seleccionar]
Dim consulta As String
        Dim lista As Byte

        If TextBox1.Text <> "" Then

            consulta = "SELECT * FROM personas_censadas WHERE cedula = " & TextBox1.Text & ""
            adaptador = New OleDb.OleDbDataAdapter

            registro = New DataSet

            adaptador.Fill(registro, "personas_censadas") REM AQUI ME GENERA EL ERROR

            lista = registro.Tables("personas_censadas").Rows.Count

        Else

            MsgBox("Debe ingresar un número de cedula", vbExclamation, "Campo Vacío")


En la consulta que hace para bscar un registro que eliminar me dice: No se han especificado valores para algunos de los parámetros requeridos. y el codigo es el siguiente:

Código: [Seleccionar]
  REM hace la consulta para buscar el registro
            MsgBox("CONSULTA ")
            consulta = "SELECT *FROM personas_censadas WHERE cedula = " & TextBox1.Text & ""
            adaptador = New OleDb.OleDbDataAdapter(consulta, conexion)
            regitro = New DataSet
            adaptador.Fill(regitro, "personas_censadas") REM AQUI ME MARCA EL ERROR
            MsgBox("Cumplio el criterio !")
            REM se obtiene la fila que cumpla el criterio
            lista = regitro.Tables("personas_censadas").Rows.Count

            MsgBox("obtuvo lA FILA")
            If lista <> 0 Then REM si encuentra un registro
                MsgBox("ENCONTRO EL REGISTRO")
                TextBox1.Text = regitro.Tables("personas_censadas").Rows(0).Item("@cedula")
                TextBox2.Text = regitro.Tables("personas_censadas").Rows(0).Item("@nombre")
                TextBox3.Text = regitro.Tables("personas_censadas").Rows(0).Item("@apellido")
                TextBox4.Text = regitro.Tables("personas_censadas").Rows(0).Item("@sexo")
                TextBox5.Text = regitro.Tables("personas_censadas").Rows(0).Item("@telefono")
                TextBox6.Text = regitro.Tables("personas_censadas").Rows(0).Item("@correo")
                TextBox7.Text = regitro.Tables("personas_censadas").Rows(0).Item("@nive_instruccion")

                Button2.Enabled = True

            End If

        End If

Les agradezco mucho de ante mano su apoyo!!!

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Hola, para poder intentar ejecutar con la base de datos incluye el archivo con la base de datos (no hace falta que esté entera, basta con que tenga la estructura y unos cuantos datos de ejemplo) o un link al proyecto completo incluida base de datos. También indica qué diseño es necesario preparar (formularios, botones) para poder ejecutar lo mismo que tienes en tu pc.

Salu2

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
gracias de ante mano por todo
Hola mira te comento como va esto ya no me sale el error  antes comentado ya corregí solo seguimos que no me guarda un solo dato en la tabla trato de dar de baja un registro desde otra forma con un botón para realizar la búsqueda me genera un error en tiempo de ejecución  que me dice referencia a objeto no establecida como instancia de un objeto.
Agregue una forma más para enviar los datos a un DataGridView y pareciera que la tabla esta vacía no me manda los datos y realmente la tabla si tiene datos…
Tu dime a donde te puedo subir parte del proyecto para que lo revises
espero respuesta saludos!!! :)

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
te dejo el link donde esta parte de mi proyecto muchas gracias de antemano!
saludos

https://drive.google.com/file/d/0B7zmGty9aF7GSkJqa19ZU2xRZmc/view?usp=sharing

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Hola, he intentado ejecutarlo y me sale el siguiente mensaje de error: SE HA PRODUCIDO UN ERROR AL CONECTAR LA BASE DE DATOS

Creo que se deba a que debo añadir la librería que permite las conexiones a la base de datos Access ¿Qué librería es la que has añadido tú?

Salu2

Andy Rivera

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola!!! con gusto dejo el link para que puedas descargarla.....

http://www.microsoft.com/downloads/es-es/details.aspx?displaylang=es&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

saludos!!! y gracias por tu apoyo!!

 

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".