【问题标题】:How do associations, @NS and @NV work in UniData Dictionaries?UniData 字典中的关联、@NS 和@NV 是如何工作的?
【发布时间】:2010-02-26 03:13:08
【问题描述】:

谁有一个简单的例子来说明关联,@NS@NV 在 UniData 中是如何工作的?

我正在尝试找出字典项目中的关联,但无法让它们做任何事情。

例如,在记录中

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

我创建了 3 个字典项。 LETTER和FRUIT,COMBO如下

信:

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

水果:

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

组合:

<1> = PH
<2> = LETTER FRUIT

LIST LETTER FRUITLIST COMBO 与 LETTER 和 FRUIT 没有在 6 中声明的关联时没有区别。

此时我认为它可能会在选择时将多值组合在一起,因此我创建了另一条记录:

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

执行SELECT MyFile WITH LETTER = “A” and FRUIT = “Apple” 会同时选择两条记录,因此也不可能。

然后我尝试将 LETTER 更改为:

<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

希望LIST MyFile LETTER 能够带回所有不同的字母以及括号中的相关水果。这也不起作用,因为现在 LETTER 只显示了第一个 Multivalue 而不是全部。例如:

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

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

手册只说“协会”这个词。有人可以帮我澄清一下吗?

【问题讨论】:

    标签: dictionary unidata u2 uniquery


    【解决方案1】:

    很多时候 NV 和 NS 仅在您的 LIST 或 SELECT 语句中使用 BY-EXP 时才有效。您需要使用专门针对 MultiValue 和 SubValues 的修饰符。

    WHEN 是一个,BY-EXP 是另一个。还有其他的,但不确定它们是什么。我主要使用 BY-EXP 和 BY-EXP-DSND。

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

    要恢复所有组合,您需要执行以下操作:

    LIST MyFile BY-EXP LETTER LETTER FRUIT LETTER.COMBO
    

    将以下虚拟字段从“LETTER”更改为“LETTER.COMBO”或类似的内容:

    <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  
    

    希望对您有所帮助。

    -内森

    【讨论】:

      【解决方案2】:

      回答我自己的部分问题:

      只有 'WHEN' 受关联影响,与关联无关。如果您打开 UDT.OPTIONS 94 并执行

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

      当使用我的 D-Type LETTER 定义时,我得到

      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
      

      这是人们所期望的。

      要使用 WHEN 子句,您需要在 ECLTYPE U 中,而不是在 P 中。如果这更清楚的话会很有帮助,但是哦,好吧...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-11
        • 2023-03-19
        • 2016-05-02
        • 2020-05-14
        相关资源
        最近更新 更多