Copiar Datos de una Grid a textbox

Muy agradecido me siento en este grupo, he encontrado toda clase de ayuda para mis proyectos que poco a poco están teniendo forma; ahora me encuentro con un tema que difícil se me hace:

Datos:

Tengo un formulario con:

TxtCodigo (text box) > los datos va a una tabla (tblSocios)

TxtNombre (text box) > los datos va a una tabla (tblSocios)

TxtApellido (text box) > los datos va a una tabla (tblSocios)

TxtCorreo (text box) > los datos va a una tabla (tblSocios)

TxtTelefono (text box) > los datos va a una tabla (tblSocios)

GdrSocios (Grid) > los datos se cargan desde la tabla (tblSocios)

La Grid, me muestra los valores que están en la tabla, con los siguientes campos. Codigo, Nombre, Apellido, Correo y Telefono.

LA QUESTION.

Cuando ejecuto el formulario, quiero dar doble click o seleccionar la fila de la Grid y los datos de la fila seleccionada se carguen a los textbox de arriba (Nombre, Apellido, etc.)

Por ahí he visto que programaban lo siguiente:

Init (de drgSocios)

thisform.grdSocios.column1.ReadOnly= .T.

Y si pongo un commandbotton que copie los datos de la grid a los textbox

Click (del commandbotton)

thisform.txtNombre.value   = Nombre

thisform.txtApellido.value = Apellido

Sé que tengo que hacer algo en la el ‘init del formulario’, pero no sé qué es.

Desde ya agradezco su ayuda.

Muy agradecido,

Alcydez

Respuesta
1

Yo veo dos formas:

1. Enlazando directamente tus textbox a los campos de la tabla o cursor que alimenta el grid. Es decir, por ejemplo, en el textbox que mostrará el nombre, en la propiedad "value" del control le pones: tblsocios. Nombre. Y así sucesivamente para cada textbox. De esta forma con tan solo hacer clic en cualquiera línea del grid, los textbox deben mostrar los valores de esa fila. Debe ser así porque, el puntero de la tabla, se mueve al registro que tú seleccionas en el grid, actualizando entonces los textbox.

2. Creando un método en el formulario, el cual llamarás en el evento clic de cada textbox, de cada columna en tu grid. En ese método pones de forma manual el valor de cada textbox.

     thisform.txtcodigo.value=tblsocios.codigo

      thisform.txtNombre.value=tblsocios.nombre

Etc

Maestro.

La Opción 2 me sale, al principio me salia los datos de la tabla, pero el problema es que carga solo los datos de la primera fila, yo quiero seleccionar la tercera fila y todos los datos de la tercera fila pasen a los txtbox señalados, lo estos haciendo mediante un botón "Seleccionar".

Mil gracias.

Repito. El método lo llamas en el evento clic de los textbox de cada columna. Así cada fila se mostrará en tus textbox.

devilzito.

Tus consejos me están ayudando bastante. He puesto lo siguiente:

Tengo un CommandBotton "cmdSeleccionar" en la cual puse el siguiente código.

**Antes: a los textBox dentro de la Grid le puse nombre (xNombres, xApellidos, etc.)

thisform.txtNombres.Value = thisform.grdSocios.column4.xNombres.Value

thisform.txtNombres.Value = thisform.grdSocios.column4.xApellidos.Value

Y sí me carga toda la información a los txtbox que deseaba, pero ahí me surgió un problema.

Por ejemplo, selecciono la columna 4 "donde está el nombre" le doy Click al "cmdSeleccionar" me carga nombre y apellido, luego selecciono la siguiente fila "columna 4" y me carga el otro nombre, pero el apellido sigue siendo de la anterior fila, y si selecciono la columna 5 me carga solo el apellido dejando el nombre anterior.

Ahora quisiera saber una manera para seleccionar toda la fila con un clik.
En las propiedades de mi Grid están:

Highlight = .t.

Highlightstyle = 2

 Te agradezco por anticipado tu ayuda.

Atte.,

Alcydez

En la selección de una fila en el grid (evento clic o gotfocus) del textbox de cada columna, coloca el evento que llena tus textbox. No debes tener problemas con eso.

El puntero del cursor se ubica en registro seleccionado, cada ves que das clic en la fila del grid.

:)
Si que soy molestoso :)

Este es mi formulario, he puesto en el evento Click de todos los textbox de la Grid el evento que llena los box de arriba. cuando selecciono el nombre o la fila solo se carga lo que he seleccionado y no todo los datos de esa fila.
Saludos.

Muéstrame el código que pones en el evento clic.

Este es el código.


thisform.cboClase.value= thisform.grdSocios.column2.xClase.value
thisform.cboTiposocio.value= thisform.grdSocios.column3.xTipo.Value
thisform.txtNombres.Value = thisform.grdSocios.column4.xNombres.Value
thisform.txtApellidos.Value = thisform.grdSocios.column5.xApellidos.Value
thisform.txtNacimiento.Value = thisform.grdSocios.column6.xNacido.Value
thisform.txtEdad.Value = thisform.grdSocios.column7.xEdad.Value
thisform.txtCorreo.Value = thisform.grdSocios.column8.xCorreo.Value
thisform.txtCelular.Value = thisform.grdSocios.column9.xCelular.Value
thisform.txtTcasa.Value = thisform.grdSocios.column10.xTelefono.Value

También lo mismo tiene en cada evento click de cada txtbox de la grid.

mmm ya veo. Así está mal, por eso no actualiza bien. Estás usando las referencias de los textbox de cada columna y así no va a funcionar.

Debes usar los campos de tu cursor. Por ejemplo:

    .txtUsuario.value=UsuScap.usucod
    .txtPrimerNombre.value=UsuScap.usunombre1
    .txtSegundoNombre.value=UsuScap.usunombre2
    .txtPrimerApellido.value=UsuScap.usuapellido1
    .txtSegundoApellido.value=UsuScap.usuapellido2

Nombre de tabla y campo.

Avisame

¡Gracias!

He borrato todo los códigos de los txtbox de la grid, y solo puse el código al botón seleccionador:

thisform.cboClase.value= tbl.clase
..., etc.

mi cursor es tbl.

Estoy agradecido contigo, me vas ayudando ya en varias ocasiones.

Atentamente.,

Alcydez

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas