none
Ayuda a cargar datos a Access 2007 desde Visual Basic 2012 RRS feed

  • Pregunta

  • Hola a todos

    Estoy un poco desesperado, he trabajo únicamente con VB6 y ahora decidí actualizarme a VB 2012, aun asi no soy muy bueno...

    Mi problema es no poder grabar los datos en la BD. Y al parecer el programa funciona a la perfección, solo que no guarda nada.

    Para no escribir todo el código, pongo lo que considero los datos importantes:

    Imports System.Data.OleDb

    _________________________________________________________________________________________

    Dim conexion As New OleDbConnection

    Dim comandos As New OleDbCommand

    _____________________________________________________________________________________

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

            Try

                conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "|DataDirectory|\Trend Antenna.accdb")

                conexion.Open()

                MsgBox("Conectado con BD", vbInformation, "Correcto")

            Catch ex As Exception

                MsgBox("Error al conectar", vbExclamation, "Error")

            End Try

     

    _________________________________________________________________________________________

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

    Try

                comandos = New OleDb.OleDbCommand("INSERT INTO ideas VALUES ('" & TextBox1.Text & "', '" & TextBox2.Text & "', '" & TextBox3.Text & "')", conexion)

     

                comandos.ExecuteNonQuery()

     

                conexion.Close()

                MsgBox("Guardado correctamente", vbExclamation, "Error")

     

            Catch ex As Exception

                MsgBox("Error al conectar", vbExclamation, "Error")

     

            End Try

    _________________________________________________________________________________________

    El Mensaje de "Guardado correctamente" aparece al terminar de usar la aplicación, eso significaría que termina el proceso correctamente, pero en la BD no aparece absolutamente nada, Ojala me puedan ayudar, puedo pasar el proyecto si es necesario para que entiendan mas mi problema.

    • Cambiado Enrique M. Montejo jueves, 13 de noviembre de 2014 15:38 Pregunta relacionada con el acceso a datos.
    martes, 23 de julio de 2013 20:40

Todas las respuestas

  • ¿Cómo sabes que no te ha guardado nada? ¿Examinas la base de datos correcta? Lo pregunto porque, si no lo sabes, debes tener en cuenta que al ejecutar el programa Visual Studio toma una copia de la base de datos y trabaja contra la copia, y ahi es donde modifica los datos. La base de datos original que acompañaba a tu código fuente permanece inalterada. Cada vez que vuelves a ejecutar el programa, el original se vuelve a copiar, con lo que se pierden todos los cambios que se hicieron durante la ejecución anterior. Para ver si los campios se han hecho bien, asegúrate de que examinas la copia de la base de datos que hay en el directorio del ejecutable, y no la base de datos original que tienes en el directorio de los fuentes.

    Este comortamiento puede cambiarse haciendo clic en el explorador de soluciones sobre la base de datos y cambiando las propiedades, donde dice "copiar siempre" cambiarlo a "copiar solo si ha cambiado".

    martes, 23 de julio de 2013 20:50
  • Hola Alberto,

    Agradezco tu respuesta,

    Si, de hecho copie la BD al archivo de proyecto como lo comentas, con el fin de tenerlo bien ubicado, si te fijas es por eso que me da esta direccion: "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "|DataDirectory|\Trend Antenna.accdb"

    Y si, tambien esta seleccionada la opcion copiar siempre en las propiedaddes de la BD.

    martes, 23 de julio de 2013 21:01
  • Mi problema es no poder grabar los datos en la BD. Y al parecer el programa funciona a la perfección, solo que no guarda nada.

    valida la carpeta \bin\Debug del proyecto, porque el VS crea una copia de la db alli cuando ejecutas

    aqui explico sobre el tema

    [Visual Studio] Base de Datos integradas al proyecto

    esto sucede con access, sql compact y otras dbsque se integran al VS

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 23 de julio de 2013 21:17
  • Gracias Leandro,

    Lo valide y tampoco, volvi a conectar mi BD con la ruta original (sin agregarla al proyecto) y tampoco sucede nada.

    martes, 23 de julio de 2013 22:21
  • pero en la carpeta \bin\Debug no se crea una copa de la db ?

    puedes ver el archivo de a db en el solution explorer ?

    que pasa si en lugar de usar el Datadirectory pones una ruta completa

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\carpeta\Trend Antenna.accdb

    de esta forma no te puedes equivocar a donde apunta

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 24 de julio de 2013 0:35
  • Gracias Leandro,

    Pude solucionar mi problema, al parecer era algo referente a no agragar los parametros para gragar el valor a la BD, algo sencillo pero que fue la primera vez que lo hice. tengo unas dudas mas, pero creo que lo correcto sera abrir una nueva "pregunta"

    Saludos!

    jueves, 25 de julio de 2013 17:18
  • Private Sub Guardar ()

    Dim cnx As New OleDbConnection

    Dim cmd As New OleDbCommand

    Dim Campo1 as string =TextBox1.Text

    Dim Campo2 as string =TextBox2.Text
    Dim Campo2 as string =TextBox2.Text

    Dim conexion As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Trend Antenna.accdb")

                     cmd.Connection = cnx
                      cmd.Connection.Open()

                     cmd.CommandText = "INSERT INTO Ideas(Campo1 ,Campo2,Campo3) & VALUES(@Campo1,@Campo2,@Campo3)"
                      cmd.Parameters.AddWithValue("@Campo1",Campo1)
                      cmd.Parameters.AddWithValue("@Campo2", Campo2)
                      cmd.Parameters.AddWithValue("@Campo3", Campo3)
                    
                      cmd.ExecuteNonQuery()
                      cmd.Connection.Close()
                      cmd.Parameters.Clear()

       cmd.Connection.Close()

    End Sub


    EFRAIN MEJIAS C VALENCIA - VENEZUELA



    jueves, 25 de julio de 2013 17:34