Relación uno a varios

332 views
Skip to first unread message

Elides Paredes

unread,
Feb 26, 2015, 9:09:09 AM2/26/15
to publice...@googlegroups.com
Estimados amigos.
Entiendo que en la relación uno a varios, que la he hecho muchas veces, al posicionar sobre un registro de la tabla principal, el puntero se mueve también en la tabla secundaria, según el índice creado.
En varias ocasiones he podido ver eso fácilmente en el entorno de datos, le hago click en la tabla principal y el puntero se mueve en la tabla secundaria. Pero no siempre me sucede. Me falta hacer algo de manera que eso pueda pasar y la verdad no se como hacerlo. En el formulario en modo de ejecución lo hace pero no en el entorno de datos. ¿Qué me falta?  he buscado mil veces en los libros pero no consigo la solución. Agradezco mucho a quien pueda ayudarme a entender mejor ese tema.
Gracias.

Carlos Miguel FARIAS

unread,
Feb 26, 2015, 12:45:46 PM2/26/15
to Grupo Fox
La relación en el entorno de datos se activaría automáticamente
Entiendo debes usar SET RELATION y asociadas.
Recuerda que la tabla secundaria debe tener un indice activo sobre la clave muchos para que funcione.
Saludos: Miguel, La Pampa (RA)

Elides Paredes

unread,
Feb 26, 2015, 1:30:18 PM2/26/15
to publice...@googlegroups.com
Muchas Gracias Miguel,

He creado la relación uno a varios en muchos formularios, con sus respectivas relación entre índices y cuando corro el formulario todo funciona perfectamente, sin embargo, cuando abro las tablas principal y secundaria, (desde el entorno de datos,) en una ocasión me funcionó como quiero, que al hacer click sobre la tabla principal, veía como se desplazaba inmediatamente el puntero de registros en la tabla secundaria, señalando el registro asociado.

Para dar un ejemplo tengo una tabla donde guardo las órdenes de trabajos (es un sistema para talleres), que está asociado con la tabla vehículos. En la tabla órdenes y en la tabla vehículos está la placa. Entonces, al abrir desde el entorno de datos la tabla órdenes y la tabla vehículos, y  al hacer click sobre un registro de una orden, debe posicionar el puntero en la tabla secundaria vehículos y mostrarme su placa, (eso en el entorno de datos) en varias ocasiones pasó así, sin embargo ahora no lo hace y me gustaría saber porque.

Para ser honesto, no se si me estás dando la respuesta en tu mensaje, pero la verdad... no lo sé, o no entendí.
Disculpa, y gracias por responder.

Elides Paredes
Message has been deleted

arquinav

unread,
Feb 26, 2015, 2:19:07 PM2/26/15
to publice...@googlegroups.com

Debes utilizar el comando:

set relation : para crear la relacion uno a uno y luego
set skip : para la relación uno a muchos

Elides Paredes

unread,
Feb 26, 2015, 2:56:02 PM2/26/15
to publice...@googlegroups.com
Amigo Arquina.

En el formulario en modo de ejecución e incluso en los reportes funciona la relación perfectamente. He creado muchas relaciones uno a varios, pero, en el entorno de datos y solo arrastrando los índices (insisto, en el entorno de datos), desde la tabla principal a la tabla secundaria. Al correr el formulario o el reporte la relación hace que se muestren los registros de la forma 'legal' o 'como debe ser'.

Mi duda desde hace mucho tiempo, es porque no trabaja desde el entorno de datos esa relación. Pero lo mas extraño (para mi), es que en algunas ocasiones me funcionó así. Es decir abría las 2 tablas, le hacía click a un registro en la tabla primaria e inmediatamente se veía mover el puntero en la tabla secundaria.

Una vez mas gracias,...!!




Elides Paredes

arquinav

unread,
Feb 26, 2015, 3:34:26 PM2/26/15
to publice...@googlegroups.com
Con el entorno de datos no se puede hacer lo que dices pero si en la Data Session Window

Elides Paredes

unread,
Feb 26, 2015, 3:55:09 PM2/26/15
to publice...@googlegroups.com
Lo que sucede es que una vez lo hice. El problema es que no recuerdo que había diferente. O mejor dicho. Nunca supe que era diferente. Porque simplemente funcionaba y me parecía lógico. Pero en otras oportunidades intentaba hacer consultas abriendo las tablas y no me funcionó.

Pero, créeme se podía..

Jean Pierre Adonis De La Cruz Garcia

unread,
Feb 26, 2015, 4:16:04 PM2/26/15
to publice...@googlegroups.com
Mira, para tener una Relacion debes considerar lo sgte
Las Tablas que quieres relacionar, deben tener el mismo INDICE activado, para que puedas crear la relacion

en mi caso hago lo sgte.
USE "d:\data\misregistros.dbf" IN 0 SHARED
USE "d:\data\provee.dbf" IN 0 SHARED

SELECT 2
SET ORDER TO TAG Rucp OF "d:\data\misregistros.cdx" IN misregistros
SET RELATION TO provee.rucp INTO misregistros ADDITIVE

Y ya de esa manera tienes tu relacion amarrada correctamente.

Espero que sea lo que andas buscando y te pueda servir.

mpulla

unread,
Feb 26, 2015, 4:55:51 PM2/26/15
to publice...@googlegroups.com
Hola Elides.

Las relaciones en tablas grandes suelen ser lentas, es mejor utilizar sql un poco más de código, pero vale la pena.

Saludos.
Mauricio

Elides Paredes

unread,
Feb 26, 2015, 7:59:15 PM2/26/15
to publice...@googlegroups.com
Gracias Jean Pierre (Caramba que nombre tan largo....!! )
Gracias Mauricio.
Creo que no he sabido explicarme bien. Yo he creado muchos formularios y reportes con la relación uno a varios.  Y  lo he hecho, directamente en el entorno, arrastrando el campo (clave) al índice de la tabla secundaria. También lo he hecho con set relation to, etc. Y Bien. todo funciona como debe ser. 

El problema o mi enorme duda, es que hace tiempo le explicaba a una persona como funciona la relación de uno a varios y dentro del Entorno de datos abría las tablas y al hacerle click a la tabla principal, podía ver como se desplazaba de inmediato el puntero en la tabla secundaria. 

Hace unos días quise hacerlo de nuevo y ya no funciona así. Es como si no existiera la relación en tiempo de diseño o no se si algo me falta para que suceda así, pero todos éstos días (mas o menos un mes, creo), he tratado de repetirlo y no ha sido posible. Por eso recurrí a ustedes, que me han demostrado conocimientos muy avanzados. 

Y yo en cambio, no he podido, pero, créanme, se puede hacer, alguna vez lo hacía y ya no se como. Espero que ésta vez si me haya explicado mejor. (

(Aunque el amigo Arquinad me asegura que no se puede hacer desde el entorno.  y quizás yo esté confundido, no lo sé. Disculpa Arquinad, pero creo que se puede)

Sin embargo, Estoy muy agradecido por la atención que siempre dan. 
Son realmente el mejor y mayor apoyo que he tenido. Soy tecnólogo mecánico y técnico electricista, también hice un curso como analista programador de sistema, pero estaba comenzando a hablarse de la POO, (ni se hablaba de algo VIsual, hace 24 años.. jejeje.., algodón..)

Lo demás lo he aprendido con 3 libros de VFP, pero mis grandes logros se debe a éste foro y al Portal Fox. (bueno y a muchos años de teclear, consultar ayudas, etc.)

Saludos 
Elides Paredes.


Reply all
Reply to author
Forward
0 new messages