UniVerse RetrieVe如何在文件中查询其所有列的值?

时间:2010-01-14 22:29:59

标签: u2 universe multivalue-database pick

跟进my self-answered question about finding the column names.

的后续行动

在UniVerse中,除非文件字典中的@短语设置为所有表列,否则无法查询文件的所有列。如果不是,您如何在表中查询其所有列的值?

所以我可以使用:

获取总列列表(列名和显示名称)
LIST DICT file NAME

这将返回所有列及其显示名称的列表。然后,我如何查询表中的所有列?

LIST file

只会查询LIST file @id(@id是@中的唯一内容)。

更新 我发现a blog -- a living breathing person who id using a version of UniVerse older than mine!!他抱怨同样的事情,但是说没有解决方案让所有列都更新@,请上帝有人证明他(Dan Watts)错了。

  

如果您有200列表,该怎么办?   并且您希望SELECT *返回所有   200列?对不起,但你会有   输入所有200列名称   “@”记录。如果你添加,删除或   重命名一个列,你必须   记得编辑那个“@”记录。一世   感受你的痛苦!这很麻烦   接近可以追溯到UniVerse的ODBC   司机,我想他们不能   现在改变它而不会破坏很多   申请。你可以找到   不可思议的细节描述   “UniVerse ODBC指南”中的IBM-ese。

5 个答案:

答案 0 :(得分:5)

LIST ALL不适用于Universe。

您可以做的一件事是LIST.ITEM或LIST-ITEM,具体取决于您的口味。这将列出文件中包含数据的每个属性,如下所示:

>LIST.ITEM ACTIVITY
LIST.ITEM ACTIVITY 06:52:10pm  14 Jan 2010  PAGE    1

1
001 LEXMARK MULTI PRINT
002 THD
003 PJ
007 10355
009 Y
010 CAGNEW
011 15349
012 52111
014 1ý2ý3ý4ý5
015 Deinstall Make/ModelýDeinstall LocationýSigned Off ByýData/Voice AvailableýR
elocated Location
016 1ý2ý3ý4ý5

2
001 OMN
002 OMN
003 PJ
004 OMN*8437
005 6
009 N
010 CAGNEW
011 15349
012 51958

>  

如果您希望对数据执行某些操作,请编写程序并执行以下操作:

OPEN "ACTIVITY" TO F.ACTIVITY ELSE STOP
SELECT F.ACTIVITY
LOOP
    READNEXT ID ELSE EXIT
    READ R.ACTIVITY FROM F.ACTIVITY, ID THEN
    ..................
    END
REPEAT

答案 1 :(得分:1)

LIST.ITEM文件名。 这将返回所有值

答案 2 :(得分:0)

尝试

LIST file ALL

当然,它实际可以做多少是有限的,所以它可以提交。你真的想要实现什么目标?

另外,更一般地说,您应该访问Rocket Software's U2 Site。您可以在那里下载完整的手册。

还有一个邮件列表,通常可以快速响应以帮助人们。您可以在U2 User Group site找到相关详细信息。

答案 3 :(得分:0)

有几点:

IBM的ADO.NET提供程序Dan refers to将不会成为UniVerse(或UniData)的一部分。去年秋天,IBM U2业务(包括UniVerse)被出售给了Rocket Software,并且有几件没有进行过渡。

其次,DICTionaries有几个标准的短语。 @是CRT的默认列表。 @SELECT指定从SQL样式SELECT返回的字段。

>ED DICT VOC @SELECT
New record.

----: I
0001= PH
0002= NAME TYPE
0003= 
Bottom at line 2.
----: FI
"@SELECT" filed in file "DICT VOC".
>SELECT * FROM VOC;
NAME.......... TYPE

VERIFY.SQL     V
DIVX           V
INVISIBLE      K
QUIT.KEY       X
LEADING        K
DELETE.LIST    V
...

答案 4 :(得分:0)

对于大多数Universe / Pick安装,程序员通常会构建一些标准化的简写方法,以便通过RECALL / RETRIEVE / ENGLISH / LIST更轻松地对数据进行临时访问。我经常看到VOC文件中的条目,如F1,F2,F3等名称,看起来像“S”或“D”字典。通常它们是标准的,如10个字符宽,并且左对齐,列标题为“字段1”。使用“* A1”,“* A2”等似乎是通用字段名称的另一个标准。

您可以在任何列表命令中使用它们,如果文件字典没有F1(或其他),它将使用VOC文件中的那个。所以像这样的命令:

列出{filename} F1 F2 F3

会工作吗?这很好,因为你只需要设置一次,然后它就可以在任何你不想花时间查找字典名称的地方使用。

此外,没有理由你不能在名为“ALL.FIELDS”的VOC中设置一个群组类型字典项目,并且在那里填充了大量“F1”类型的项目。它看起来像这样:

001:PH 002:F1 F2 F3 F4 F5 F6 F7 F8 F9 {......} F200

这几乎是你的@字典项目的样子,除了它将包含所有正确的字典项目。就此而言,您可以在实际文件的字典中构建一个“ALL.FIELDS”字典项,并在其中放置具有所有正确格式的正确字典项。

需要注意的是,无法保证UV字典是完整和准确的,因为在任何地方都没有强制程序员为他们使用的数据字段构建字典项的规则。如果你非常关心,你需要编写一个程序来扫描文件并分析数据,以生成一个关于字段实际工作情况的报告。

如果你能够达到字典可靠的程度,那么确保每个字段都有一个且只有一个相应的“A”类型字典项是值得的。然后编写一个程序,在字典上对所有“A”类型记录执行SELECT并构建一个列出所有“ALL.FIELD”组字典项的程序,这是微不足道的。然后确保每个人为不同的格式或转换添加备用字典项目仅使用“S”,“I”和“D”类型的项目。

就个人而言,我发现在PICK环境中进行日常工作时,每个字段都可能会加载@字典项。通常,您希望在80列显示中很好地匹配合适的排序和总计选项。我希望看到SQL设置并相应地命名。