Enlazar formularios con datos de misma tabla

Tengo un formulario (lista_clientes. Scx) en base a un grid que contiene los principales datos de mi tabla clientes, como ser:Id_cliente, nombre_completo, teléfono, dirección.(Este grid, toma los datos de una vista que la denominé vista_clientes).
Por otro lado, diseñé otro formulario (detalle_clientes. Scx), en base a mi tabla clientes.
Cómo puedo hacer para que al dar click sobre el botón de comando "Ver detalle cliente" de mi primer formulario, me muestre los datos del registro sobre el que estoy ubicado en el grid.
Intenté con: DO FORM c:\tentatres\forms\clientes_detalle.scx, pero siempre me lleva al primer registro y no al que seleccioné en el grid del formulario c:\tentatres\forms\clientes_lista.scx
A la espera de vuestra colaboración, les quedo muy agradecido.
Saludos: Orlando

1 respuesta

Respuesta
1
Comprendo lo que quieres hacer.. y es fácil. Pero antes, aclarame algo... trabajas con una tabla llamada...¿? ¿Es "clientes"? Comprendo que quieres ver los detalles del registro de tu primer form en un segundo form llamado detalle.. ¿Pero sobre que tabla trabajas? ¿Es una sola? Aclarame para poder ayudarte! :)
Estimado Ravenn, gracias por responder.
Estoy trabajando en un proyecto llamado ventas, para eso he creado una base de datos (data_ventas). Por el momento, como soy principiante estoy trabajando sobre una tabla única llamada clientes.dbf. La tengo indexada en el campo id_cliente
Para mostrar mi lista de clientes en el primer formulario (que es un resumen de los datos principales de cada cliente), elaboré una vista denominada View_clientes. Que es de donde extraigo los datos para el grid. Te preguntarás por que una vista y no emplear directamente la tabla. Pasa que en la tabla clientes tengo campos separados para: Clie_nombre, Ape_paterno, Ape_Materno. Y tuve que valerme de una vista para agruparlos en un solo campo denominado nombre_completo.
Ahora bien, lo que deseo es que al seleccionar un registro cualquiera de la grilla, al dar click sobre el botón de comando Ver Detalle Cliente, me muestre los detalles de este cliente en otro formulario. Y de ser posible se mantengan abiertos ambos formularios para poder seleccionar otro cliente del formulario uno y ver sus datos en una nueva ventana.
Muchas gracias por tu apoyo.
Comprendo bien lo que quieres hacer. Tal como va tu caso, la solución seria así: debes pasar un parámetro de un form a otro para generar la búsqueda del registro en el form detalle. Es fácil. :D :D :D
Debes tomar el valor del campo "id_cliente" del registro que quieres mostrar, pasarlo al form detalle, recibirlo en el form detalle (INIT()) y luego buscar ese id del cliente para mostrar el resto de campos! :D
1. Ve al evento Click del Text1 de la columna (s) del grid en donde mostrás el valor de campo id_cliente en tu form "lista_clientes" (podes usar otras columnas si quieres... pero toma siempre el valor del campo mostrado en la columna id cliente). Ahí copia un código como este (adecualo si es necesario):
**--
cliente = (THISFORM.Grid1.Column1.Text1.Value) &&Columna "ID CLIENTE"
DO FORM [lista_clientes.scx] WITH cliente
**--
2. Ve ahora al evento INIT() de tu form "detalle_clientes" y copia un código como este:
LPARAMETERS cliente
**--
LOCATE FOR clientes.id_cliente = cliente
IF FOUND()
Thisform. Refresh
ENDIF
THISFORM. Refresh
**--
Y listo. Proba haciendo click sobre la columna ID cliente de tu form principal.
Una pregunta... en tu form detalle... usas un grid? ¿O controles textos?
Cualquier cosa me avisas! A tus ordenes!
Estimado Ravenn:
Para el formulario detalle_clientes estoy empleando controles textos.
Probé de la forma que me recomendaste y es correcto! Me lleva al registro indicado, sin embargo existe un pequeño inconveniente. Si quiero abrir directamente el formulario detalle_clientes, me sale un error que dice operator/operand type mismatch. ¿A qué crees que se deba?...
Por si acaso te comento lo que hice con el entorno de datos.
Para el formulario1 he cargado la vista view_clientes y pase los datos al grid.
Para el formulario 2 he cargado la vista View_clientes y la tabla clientes, luego relacione la vista con la tabla por el campo id_cliente. Para los textos del formulario he arrastrado los campos de la tabla clientes.No se si estará correcto.
Saludos
¿A qué te refieres con "abrir directamente el formulario detalle"? ¿Oo? SI lo abrís a como te dije... ¿te da algún problema? ¿O es cuando lo intentas abrir desde el administrador de proyectos? ¿Oo?
Saludos:
Exactamente, se presenta el problema cuando intento abrir el formulario detalle_ clientes desde el administradosr de proyectos. Supongo que se debe a la instrucción dada en el formulario lista_clientes
cliente = (THISFORM.Grid1.Column1.Text1.Value) &&Columna "ID CLIENTE"
DO FORM [detalle_clientes.scx] WITH cliente
Si existe alguna forma de solucionarlo, estaré atento a tu respuesta.
Saludos.
Uhm! Comprendo! Mira.. lo que pasa es que en el form detalle, en su evento INIT() recibís el parámetro enviado desde el form principal. Cuando el form "inicia" reconoce el parametro enviado siempre y cuando lo llames desde el form principal. PERO si lo abrís desde el administrador de proyectos o alguna otra instancia (otro form) que no sea el principal, te dará ese error. Lo que pasa es que el form inicia reconociendo el parámetro. Cuando das click en tu form principal, el parametro pasa al form detalle cuando este ultimo inicia.
Si lo inicias sin pasar el valor, cuando se dispare el INIT del detalle, se espera (a través de la instrucción) el parámetro... pero al no recibirlo, da el error. Hmm.. si lo abrís desde el adm. de proyectos.. siempre te dará ese error. Para abrirlo desde otro form que no sea el principal, deberás configurar el parámetro que pasas... osea el valor. En el principal pasas el valor del text1 de la columna1 del grid.
Tendrías que configurar ese valor. No obstante... yo te aconsejo que mantengas un valor constante en el traspaso de parámetros.. para que evites un conflicto futuro entre valores.
Bueno.. decide que es l oque quieres hacer y me avisas para ayudarte.
A tus ordenes.
Ravenn!
SALUDOS! Desde Managua, Nicaragua. :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas