Tengo 1 grilla, y quiero su valor en un text al click

Hola experto, mi problema es el siguiente, yo cargo una grilla y me genera varios registros, me gustaría que al hacer click en un registro sus valores se copien correspondientemente en una caja de texto cada uno. Por favor necesito que me guíes y me digas si e de colocar código en que evento debo colocarlo. Agradecería tu pronta respuesta de antemano muchas gracias :)dfb

1 Respuesta

Respuesta
1
1. Agrega un método a tu formulario que se llame por ejemplo "CopiarDatos" (form-new method) y coloquemos el código necesario en ese método.
2. Llamamos a este método (thisform. CopiarDatos) desde cada evento click de cada textbox en cada columna del grid.
3. Los grid usan como origen de datos cursores y tablas, así que, sólo basta con hacer referencia al campo del cursor/tabla para tener el valor y hacer con el lo que queramos.
Código:
Suponiendo que tu tabla se llama clientes y que tiene 3 campos: idcliente, cliente, dirección, entonces en el código del evento que hemos agregado ponemos:
select clientes
thisform.txtidCliente.value=idCliente
thisform.txtcliente.value=cliente
thisform.txtDireccion.value=direccion
Y listo!, cada ves que haces clic en un textbox de la columna, los tres textbox (que les he puesto nombres según el nombre del campo) ya tendrían los datos de tu registro.
Ok esta muy bien, muy lógico, solo hay un problema, cuando m paro en la columna me doy cuenta que no tiene evento click
?
Ok la grilla como tal si tiene evento click pero solo funciona cuando doy un click en un registro en blanco y si trabajo con las columnas de la griulla individual, esta no tiene evento click asignado. ¿Me imagino que cuando te refieres a el text de la grilla es por que hablas del campo no?
Entonces debe ser que no se comprendió el punto # 2:
"Llamamos a este método (thisform.CopiarDatos) desde cada evento click de cada textbox en cada columna del grid."
Las columnas no tienen evento click y de hecho no lo necesitan. Los que tienen evento click son: el grid, el header (de cada columna) y el control textbox (o cualquier otro que insertemos de cada header).
Mi idea para no tener que poner un mismo conjunto de líneas de código que hacen lo mismo (en cada textbox), es llevar esas líneas de código a un método (CopiarDatos) y luego llamar al método en el evento click del TEXTBOX de cada header de cada columna.
Si te fijas el orden de objetos partiendo desde el formulario es el siguiente:
Form
     Grid
             Column
                         Header
                                  Text
Ubica el evento click del objeto text y pon allí el llamado al método CopiarDatos, el cual tiene como función única mostrar los datos del registro donde estamos parados donde lo prefieras.
Ok ya lo entendí, y bueno lo probé con una tabla de visual foxpro y funciono muy bien, pero cuando lo hago en uno proyecto donde estoy trabajando con tablas demotas de sql server no me lo hace y no se por que razón. Pero lo que usted me explico si me funciona con una tabla nativa de vfp
Oracle, SqlServer, MySql, etc... Podrás acceder a ellas usando algún controlador para cada Base de datos. Al final tu vista remota generará un Cursor temporal el cual llenará el grid: es exactamente lo mismo.
Lo más probable es que tu grid está perdiendo la configuración inicial, incluyendo el código en el evento click de los textbox. Si esto es así, te sugiero "proteger" el grid a través de la asignación de un cursor "inexistente" antes de la asignación del cursor de la vista remota al grid.
thisform.grid1.recorsource='devilzito'
...
...
Código que asigna el resultado de la vista remota al grid
...
...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas