2010-02-26 20 views
0

Quelqu'un at-il un exemple rapide de la façon dont les associations, @NS et @NV fonctionnent dans UniData? J'essaie de créer des associations dans les éléments du dictionnaire, mais je n'arrive pas à les faire faire quoi que ce soit.Comment fonctionnent les associations, @NS et @NV dans les dictionnaires UniData?

Par exemple, dans un enregistrement

<1,1> = A 
<1,2> = B 
<2,1> = Apple 
<2,2> = Banana 

J'ai créé 3 articles de dictionnaire. LETTRE et fruits, COMBO comme suit

LETTRE:

<1> = D 
<2> = 1 
<3> = 
<3> = Letter 
<4> = 6L 
<5> = M 
<6> = COMBO 

FRUITS:

<1> = D 
<2> = 1 
<3> = 
<3> = Letter 
<4> = 6L 
<5> = M 
<6> = COMBO 

COMBO:

<1> = PH 
<2> = LETTER FRUIT 

Faire un LIST LETTER FRUIT ou LIST COMBO n'a pas de différence quand LETTRE et FRUIT n'a pas d'association déclarée en 6.

A ce stade, je pense qu'il pourrait multivalues ​​regrouper lors de la sélection donc je créé un nouveau record en tant que tel:

<1,1> = A 
<1,2> = B 
<2,1> = Banana 
<2,2> = Apple 

Faire SELECT MyFile WITH LETTER = “A” and FRUIT = “Apple” sélectionne les deux dossiers, de sorte que ne peut pas être non plus.

J'ai ensuite essayé de changer LETTER être:

<1> = I 
<2> = EXTRACT(@RECORD,1,@NV,1);EXTRACT(FRUIT,1,@NV,1);@1:" (":@2:")" : @NS 
<3> = 
<3> = Letter 
<4> = 6L 
<5> = M 
<6> = COMBO 

Espérant que ce LIST MyFile LETTER ramènerait toutes les différentes lettres avec leurs fruits associés entre parenthèses. Cela n'a pas fonctionné non plus car maintenant LETTRE a seulement affiché le premier Multivalue au lieu de tous. Par exemple:

LIST MyFile LETTER 14:05:22 26 FEB 2010 1 
MyFile.... LETTER.............. 

RECORD2 A (Banana)1 
RECORD  A (Apple)1 
2 records listed 

Les manuels ne vont pas plus loin que le mot "association". Quelqu'un peut-il clarifier cela pour moi?

Répondre

0

Plusieurs fois NV et NS ne fonctionnent que lorsque vous utilisez BY- EXP dans vos instructions LIST ou SELECT. Vous devez utiliser des modificateurs qui regardent spécifiquement MultiValue et SubValues.

QUAND il y en a un, et BY-EXP en est un autre.Il y en a d'autres, mais je ne suis pas sûr de ce qu'ils sont au sommet de ma tête. J'utilise principalement BY-EXP et BY-EXP-DSND.

LIST MyFile BY-EXP LETTER = "A" BY-EXP FRUIT ="Apple" LETTER FRUIT LETTER.COMBO 

Pour ramener toutes les combinaisons, vous utilisez doivent effectuer les opérations suivantes:

LIST MyFile BY-EXP LETTER LETTER FRUIT LETTER.COMBO 

Modifiez le champ virtuel suivant de « lettre » de dire « LETTER.COMBO » ou quelque chose le long de ces lignes :

<1> = I  
<2> = EXTRACT(@RECORD,1,@NV,1);EXTRACT(FRUIT,1,@NV,1);@1:" (":@2:")" : @NS  
<3> =  
<3> = Letter  
<4> = 6L  
<5> = M  
<6> = COMBO 

Espérons que cela aide.

-Nathan

0

Pour répondre à une partie de ma propre question:

seulement « quand » est affectée par l'association, pas. Si vous activez UDT.OPTIONS 94 et faire

LIST MyFile WHEN LETTER = "A" AND FRUIT="Apple" COMBO

lorsque vous utilisez ma définition D-type de lettre, je reçois

LIST MyFile WHEN LETTER = "A" AND FRUIT="Apple" LETTER FRUIT 16:06:42 26 FEB 2010 1 
MyFile.... LETTER.............. FRUIT............... 

RECORD  A     Apple 
1 record listed 

Ce qui est ce que l'on pourrait s'y attendre.

Pour utiliser la clause WHEN vous devez être en ECLTYPE U, pas P. Il serait utile si cela était clair, mais bon ...