UniVerse RetrieVe как мне запросить файл для всех значений его столбцов? - PullRequest
3 голосов
/ 15 января 2010

Вид продолжения до мой вопрос с ответом на вопрос о поиске имен столбцов.

В UniVerse вы не можете запросить файл для всех его столбцов, если только фраза @ в словаре вашего файла не установлена ​​для всех столбцов таблиц. Если это не так, как вы запрашиваете таблицу для всех значений ее столбцов?

Таким образом, я могу получить полный список столбцов (имя столбца и отображаемое имя), используя:

LIST DICT file NAME

Это вернет список всех столбцов и их отображаемых имен. Как мне тогда запросить у таблицы все столбцы, которые у нее есть?

LIST file

Будет запрашивать его только для LIST file @id (@id - единственное, что есть в @).

UPDATE Я нашел блог - живого, дышащего человека, который использует версию UniVerse старше моей !! , где он жалуется на то же самое, но говорит, что не существует решения, которое стоило бы обновить @ со всеми Боже, кто-нибудь докажет, что он (Дэн Уоттс) неправ?

Что если у вас есть таблица из 200 столбцов и вы хотите, чтобы SELECT * вернул все 200 столбцов? Извините, но у вас будет ввести все 200 имен столбцов в этом запись "@". И если вы добавите, удалите или переименовать столбец, вам придется не забудьте отредактировать эту запись "@". я почувствуй свою боль! Это громоздко подход восходит к ODBC UniVerse водитель, и я полагаю, что они не могут изменить это сейчас, не ломая много приложений. Вы можете найти подробности описаны в непостижимом IBM-ese в руководстве по ODBC UniVerse.

Ответы [ 5 ]

5 голосов
/ 15 января 2010

СПИСОК ВСЕ не работает на вселенной.

Одна вещь, которую вы можете сделать, это 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 голос
/ 28 октября 2010

LIST.ITEM имя файла. Это вернет все значения

0 голосов
/ 25 января 2010

Для большинства установок Universe / Pick программисты обычно создают несколько стандартизированных сокращенных способов, чтобы упростить специальный доступ к данным через RECALL / RETRIEVE / ENGLISH / LIST. Я часто видел записи в файле VOC с именами, такими как F1, F2, F3 и т. Д., Которые выглядят как словари «S» или «D». Обычно это что-то стандартное, например, 10 символов в ширину и выравнивание по левому краю с заголовком столбца типа «Поле 1». Использование «* A1», «* A2» и т. П., Похоже, является еще одним стандартом, который разработан для общих имен полей.

Вы можете использовать их в любой команде списка, и если словарь файла не имеет F1 (или чего-либо еще), он будет использовать тот из файла VOC. Итак, команда вроде:

LIST {имя файла} F1 F2 F3

Будет работать. Это хорошо, потому что вы просто должны настроить его один раз, и тогда он будет доступен везде, где вы не хотите тратить время на поиск названий словаря.

Кроме того, нет никакой причины, по которой вы не можете настроить элемент словаря группового типа в VOC, называемый «ALL.FIELDS», и вставить туда газилионные элементы типа «F1». Это будет выглядеть так:

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

Это в значительной степени похоже на то, как будет выглядеть ваш элемент @ Dictionary, за исключением того, что в нем будут все нужные элементы словаря. В этом случае вы можете создать словарный элемент «ALL.FIELDS» в словаре фактического файла и поместить в него надлежащие элементы словаря со всем правильным форматированием.

Предостережение заключается в том, что нет гарантии, что UV-словарь будет полным и точным, поскольку в действительности нет нигде правил, которые заставляли бы программистов создавать элементы словаря для полей данных, которые они используют. Если вам так важно, вам нужно написать программу для сканирования файла и анализа данных, чтобы получить отчет о том, как на самом деле работают поля.

Если вы можете добраться до точки, где словарь будет надежным, то стоит убедиться, что каждое поле имеет один и только один соответствующий элемент словаря типа «А». Затем тривиально написать программу, которая выполняет SELECT для словаря для всех записей типа «А» и создает элемент словаря группы «ALL.FIELD», в котором перечислены все. Затем убедитесь, что все, кто добавляет альтернативные элементы словаря для различного форматирования или преобразования, используют только элементы типа «S», «I» и «D».

Лично я считаю, что загрузка словарного элемента @ со всеми возможными полями раздражает при выполнении повседневных задач в среде PICK. Как правило, вы хотите, чтобы материал, который удобно помещался на 80-колоночном дисплее, имел удобную сортировку и суммирование. Я бы предпочел, чтобы материал SQL был настроен и назван соответствующим образом.

0 голосов
/ 15 января 2010

Пара баллов:

Поставщик IBM ADO.NET Дэн относится к , не будет частью UniVerse (или UniData) в будущем. Бизнес IBM U2 (включая UniVerse) был продан Rocket Software прошлой осенью, и пара компонентов не осуществила переход.

Во-вторых, есть пара стандартных фраз для DICTionaries. @ является списком по умолчанию для CRT. @SELECT определяет поля, возвращаемые из SELECT в стиле SQL.

>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
...
0 голосов
/ 15 января 2010

Попробуйте

LIST file ALL

Конечно, есть предел тому, сколько он на самом деле может сделать, поэтому он может подать. Чего вы на самом деле хотите достичь?

Также, в более общем плане, вам следует посетить Сайт U2 Rocket Software . Вы сможете скачать полный набор инструкций там.

Существует также список рассылки, который обычно дает быстрые ответы, чтобы помочь людям. Вы можете найти подробности об этом на сайте U2 User Group .

...