none
Recuperar datos de base de datos en textbox, combobox, datapicker (fechas y horas) en vb.net RRS feed

  • Pregunta

  • Hola amigos, tengo  un problema al recuperar datos desde mi base de datos a los controles de un formulario en vb.net.

    les comento, en mi base de datos, tengo  varias tablas que me permiten  tener datos preestablecidos como paices, provincias y capitales.

    en una tabla  que se llama alumnos  tengo los siguientes campos: nombre, apellido, pais, provincia, capital, fecha, hora

    • tabla paices que tiene los campos:  codigo, pais, zipcode
    • tabla provincia con los campos: codigo, codigo_pais, provincia, zipcode
    • y tabla capital con los campos: codigo, codigo_provincia, capital, zipcode

    estos datos se ingresan mediante un formulario, con los siguientes controles

    txt_nombre, txt_apellido, combo_pais, combo_provincia, combo_capital, datapk_fecha, datapk_hora,

    y en el mismo formulario hay un datagridview que muestra todos los registros ingresados..

    como pueden ver al  guardar el formulario se guardaria  asi

    • nombre  | apellido  | pais   | provincia   | capital   | fecha            | hora    |
    • Carlos    | jacome  | 1       |11              |111        | 01/11/2015   |  08:20 |

    donde los numero que se ven en los campos pais, provincia y capital, corresponden a los codigos de los campos de  cada valor es decir  ejem: ecuador (1) , Pichincha (11) , Quito (111). es decir guardo los valumember

    el problema que tengo es que  cuando quiero modificar el registro completo,  y quiero devolver los valores  del registro a los controles del formulario, retornan ls codigos del campo,  y no los displaymember.

     es decir en ves de retornar  asi:

    • nombre  | apellido  | pais        | provincia   | capital   | fecha            | hora    |
    • Carlos    | jacome  | Ecuador  | Pichincha   | Quito     | 01/11/2015   |  08:20 |

     devuelve los valores tal como estan en la base,

    mi pregunta, como deberia  hacer el proceso para que me devuelva los valores que deseo segun los codigos que tengo almacenados.


    lunes, 9 de noviembre de 2015 2:12

Respuestas

  • Hola Astaroth250581,

    Quizá lo más fácil sea tener 3 columnas ocultas donde se almacene el valor id (ValueMember), con ello podrías conseguir seleccionar los objetos ComboBox a partir del valor almacenado (identificador). El objeto DGV debería mostrar los valores texto (DisplayMember) por cuanto 1, 11, 1111 no tiene ningún significado a los ojos del usuario.

    Pero, si tu aplicación es usada por múltiples usuarios entonces es posible que los datos que seleccionas en el DGV no sean los actuales, lo que sugiero es que las filas del objeto DGV sirvan sólo para obtener el identificador de la fila, pero para efectos de mostrar los valores en los controles deberías traerlos desde la base de datos. Considera que incluso la fila seleccionada podría haber sido eliminada por otro usuario.

    lunes, 9 de noviembre de 2015 5:33

Todas las respuestas

  • buen trabajo quieres hacer con el formulario, y suena interesante por lo demás.

    mira Astaroth se me ocurre que puedes tener alguna condición donde te transforme el valor con el país o ciudad o región que corresponda. 

    se me ocurre algo asi, que te cargue el código del país en el datagridview, pero al darle doble click a la fila que quieras editar te muestre el valor que esta al lado del código, esto pensando en la base de datos. algo así se me ocurre.

    Código    País   

    1           Chile

    que al llenar el textbox desde el datagridview te muestre el valor de al lado. ojala te de una idea o algo

    saludos!

    lunes, 9 de noviembre de 2015 3:36
  • Hola Astaroth250581,

    Quizá lo más fácil sea tener 3 columnas ocultas donde se almacene el valor id (ValueMember), con ello podrías conseguir seleccionar los objetos ComboBox a partir del valor almacenado (identificador). El objeto DGV debería mostrar los valores texto (DisplayMember) por cuanto 1, 11, 1111 no tiene ningún significado a los ojos del usuario.

    Pero, si tu aplicación es usada por múltiples usuarios entonces es posible que los datos que seleccionas en el DGV no sean los actuales, lo que sugiero es que las filas del objeto DGV sirvan sólo para obtener el identificador de la fila, pero para efectos de mostrar los valores en los controles deberías traerlos desde la base de datos. Considera que incluso la fila seleccionada podría haber sido eliminada por otro usuario.

    lunes, 9 de noviembre de 2015 5:33