Share via


SET SKIP (Comando)

Crea una relación de uno a varios entre tablas.

SET SKIP TO [TableAlias1 [, TableAlias2] ...]

Parámetros

  • TO TableAlias1 [, TableAlias2] ...
    Especifica los alias de varias tablas secundarias. Éstas se utilizan para crear una relación de uno a varios con una tabla primaria. Utilice comas para separar los distintos alias. En los comandos que admiten un alcance (DISPLAY, LIST, etc.), los registros de la tabla primaria se repiten por cada registro correspondiente de la tabla secundaria.

    Utilice SET SKIP TO sin argumentos adicionales para eliminar la relación uno a varios de la tabla primaria abierta en el área de trabajo actual. Cualquier relación uno a uno existente permanecerá vigente. Se puede utilizar SET RELATION TO para quitar las relaciones uno a uno.

Observaciones

Con SET RELATION puede establecer relaciones entra tablas abiertas en diferentes áreas de trabajo. Cuando el puntero de registro se mueve en la tabla primaria, el puntero de registro de la tabla secundaria se mueve al primer registro correspondiente. El registro al que se mueve el puntero de registro de la tabla secundaria está determinado por la expresión relacional SET RELATION. Se crea una relación uno a uno: por cada registro de la tabla primaria, el puntero de registro se mueve al primer registro coincidente de la tabla secundaria. Si no se encuentra un registro coincidente en la tabla secundaria, el puntero de registro de la tabla secundaria se moverá al final de la tabla.

Con frecuencia, una tabla secundaria contiene varios registros que corresponden a un registro de la tabla primaria. SET SKIP le permite establecer una relación uno a varios entre un registro de la tabla primaria y varios registros de la tabla secundaria. Cuando se mueve a través de la tabla primaria, el puntero de registro permanece en el mismo registro de la tabla primaria hasta que el puntero de registro se mueva a través de todos los registros relacionados de la tabla secundaria.

Para establecer una relación uno a varios, cree primero la relación entre las tablas primaria y secundaria con SET RELATION. Después, ejecute SET SKIP para crear la relación uno a varios.

Ejemplo

El ejemplo siguiente busca todas las apariciones en tres tablas donde cada elemento del primer campo es el mismo. Esto se logra explorando la primera tabla que tiene una relación con una segunda tabla, que a su vez tiene una relación con una tercera tabla. Luego, la primera tabla ejecuta SET SKIP para las otras dos tablas. Observe que SET SKIP en la segunda tabla no produce ningún efecto. Sólo afecta a la tabla que se explora (reemplaza, etc.). En el ejemplo se encuentran ocho coincidencias.

CLOSE DATABASES
* Creates parent table with values a and b in Name field
CREATE TABLE Parent FREE (Name C(1), Val C(10))
INSERT INTO Parent VALUES ('a', 'Parent.a1')
INSERT INTO Parent VALUES ('b', 'Parent.b1')

SELECT 0     && Child1 will have two a's and two b's
CREATE TABLE Child1 FREE (Name1 C(1), Val C(10))
INSERT INTO Child1 VALUES ('a', 'Child1.a1')
INSERT INTO Child1 VALUES ('b', 'Child1.b1')
INSERT INTO Child1 VALUES ('b', 'Child1.b2')
INSERT INTO Child1 VALUES ('a', 'Child1.a2')
INDEX ON Name1 TAG tagName   && The tag name is irrelevant

SELECT 0  && Child2 will have two a's and two b's
CREATE TABLE Child2 FREE (Name2 C(1), Val C(10))
INSERT INTO Child2 VALUES ('b', 'Child1.b1')
INSERT INTO Child2 VALUES ('b', 'Child1.b2')
INSERT INTO Child2 VALUES ('a', 'Child1.a1')
INSERT INTO Child2 VALUES ('a', 'Child1.a2')
INDEX ON Name2 TAG tagName     && The tag name is irrelevant

SELECT Child1
SET RELATION TO Name1 INTO Child2
SELECT Parent
SET RELATION TO Name INTO Child1
SET SKIP TO Child1, Child2 && Parent gets both skips.
           && Otherwise, only four record triplets 
           && would be listed.
SCAN ALL  && There will be eight triplets: four a's and four b's
   ? Parent.Val, Child1.Val, Child2.Val
ENDSCAN

Vea también

RELATION( ) | SET RELATION | SKIP