none
Método para insertar una fila en access desde visual basic 2008 RRS feed

  • Pregunta

  • Hola a todos,

    Llevo varios días intentando crear una fila en una base de datos Access 2003, desde mi aplicación creada en visual basic 2008. A través de la parte gráfica del visual basic, he logrado que me inserte unos valores pre-establecidos, pero necesito que almacene 4 valores desde la parte de código. Estoy un poco desanimado, porque lo he intentado de mil formas. A través de las funciones para las tablas insert, update, creando una consulta desde el fichero *.xsd.

    En definitiva, lo que quiero hacer es insertar mediante código 4 parámetros concretos que son establecidos a través de unos textbox y que una vez termine insertarlos, la siguiente parte del programa pueda utilizarlos.

    ¿Puede alguien ayudarme a realizar esta parte de la aplicación?
    jueves, 26 de noviembre de 2009 10:46

Respuestas

Todas las respuestas

  • Hola Dany,

    El otro dia no se si te pergunte, ¿Como conectas a la base de datos, y donde la tienes almacenada(Directorio de la aplicacion, otro directorio)?

    Como ejecutas las sentencias para que se ejecuten, te devuelve algun error al ejecutar la consulta?

    Mi Blog: Jtorrecilla
    jueves, 26 de noviembre de 2009 10:51
    Moderador
  • Hola,

    Muchas gracias por tu ayuda, no me preguntastes el otro día, pero te lo indico ya. Conecto a la base de datos a través de las opciones mediante entorno gráfico que realiza el visual basic 2008 y que genera una instrucción tal que así:

            Me."nombre_tabla"TableAdapter.Fill(Me.DatosDataSet."nombre_tabla")

    Y no me da ningún error de ejecución, simplemente ejecuta pero no realiza la inserción en la tabla.

    Entre las distintas maneras que he utilizado, algunas han sido con

    .rows.add(nombre_de_row)
    .rows.insertat(nombre_de_row, 1) 'porque necesito esos datos en la primera fila
    .tableadapter.insert(parametro1,parametro2,parametro3,parametro4)

    y luego suelo hacer

    .bindingsource.endedit()
    .tableadapter.update(nombre_de_row)

    De todas maneras si tú conoces otro sistema que sepas que funciona seguro, no tengo ningún problema en intentarlo

    Gracias por todo.
    jueves, 26 de noviembre de 2009 10:58
  • Hola,

    Yo normalmente lo que hago es lo siguiente:

    Haber Por ejemplo:

    Create un objeto conexion,
    un objeto comando
    Al objeto comando le asignas la conexion, y la sql, y le agregas los parametros (asi evitas problemas del tipo SQL inyection)

    Si tienes alguna duda ya sabes...


    Mi Blog: Jtorrecilla
    jueves, 26 de noviembre de 2009 11:03
    Moderador
  • Pero ya la conexión la tengo hecha, y las consultas que realizo sobre la base de datos me las hace perfectamente, el problema me está viniendo solo cuando intento insertar una fila.

    ¿No hay alguna manera más sencilla que no sea crear nuevamente una conexión?
    ¿Cómo es el método más común de inserción de filas en base de datos?
    jueves, 26 de noviembre de 2009 11:05
  • Jeje, 
    Una pregunta, ¿Tienes definidos las sentencias de insercion, actualizacion y borrados en el tableadapter?





    Mi Blog: Jtorrecilla
    jueves, 26 de noviembre de 2009 11:10
    Moderador
  • Creo que acabo de ponerme en evidencia dentro de la web. Siento malgastar tu tiempo de esta manera. No los tengo definidos, pero ¿Ahí es donde debo poner las instrucciones de ejecución sobre la base de datos, o van algunos valores predefinidos?

    (Veo que nos acercamos al problema de fondo)

    Gracias por todo de verdad
    jueves, 26 de noviembre de 2009 11:12
  • Creo, que lo tienes que hacer uno por uno. pero es automatico si entras en el xsd vas a las tablas le das configuración y te las genera, en un principio con eso tendría que valer...


    EDIT: Primero prueba a poner, el adaptador de tu tabla .insert, es decir, Me."nombre_tabla"TableAdapter.Insert( .... si te salen la lista de campos, no tienes mas que rellenar los campos.

    Prueba y me cuentas.

    Mi Blog: Jtorrecilla
    jueves, 26 de noviembre de 2009 11:19
    Moderador
  • Yo se que me estoy poniendo un poco pesado, de veras que lo siento, pero es mi primer programa en visual basic y estoy un poco apurado de tiempo.

    La última duda, (y espero que a partir de ahí me funcione)

    ¿Que valores pongo en los campos commandtext y commandtype?
    Porque tal como yo lo entiendo en commandtext, pongo la instrucción sql pero no se que se refiere con el command  type.

    Muchas gracias de verdad,
    jueves, 26 de noviembre de 2009 11:33
  • No se si vistes mi edit del post antes de que continues prueba lo siguiente haber si te funciona: 

    Primero prueba a poner, el adaptador de tu tabla .insert, es decir, Me."nombre_tabla"TableAdapter.Insert( .... si te salen la lista de campos, no tienes mas que rellenar los campos.

    Respondiendo a tu ultima pregunta: 

    Command Type es el tipo de Comando a utilizar, los valores son Stored Procedure (si tienes un procedimiento en base de datos), Sentencia y tabla.

    En tu caso tendrás que poner sentencia.

    Jeje nadie nace sabiendo (o eso creo) asi que no te cortes y pregunta que para algo hay gente que ya ha pasado por lo mismo que tu y te puede ayudar.



    Mi Blog: Jtorrecilla
    jueves, 26 de noviembre de 2009 11:38
    Moderador
  • No me sale la opción insert y no me reconoce los parámetros, actualmente tengo configurado el insertcommand del table adapter tal que:

    Insertcommand: (Insertcommand)
    Commandtext: INSERT INTO tabla (campo1, campo2, campo3, campo4) VALUES (par1, par2, par3, par4)
    Commandtype: Tableadapter
    Parameters:par1
                      par2
                      par3
                      par4

    todos como string, aún así en el commandtext solo los acepta si entran como una ristra fija, no como un parametro.
    jueves, 26 de noviembre de 2009 11:52
  • Mira en este link, tienes un ejemplo en vez de poner par1, par2.... tienes que poner "?" y el ya va a tomar en cuenta los parametros...


    Mi Blog: Jtorrecilla
    • Marcado como respuesta Dany Besteiro jueves, 26 de noviembre de 2009 12:18
    jueves, 26 de noviembre de 2009 11:56
    Moderador
  • Muchas gracias por todo, ya me funciona. Has sido de mucha ayuda!
    jueves, 26 de noviembre de 2009 12:18