3

列名の検索に関する自問自答の質問のフォローアップのようなものです。

@UniVerseでは、ファイルの辞書のフレーズがすべてのテーブル列に設定されていない限り、ファイルのすべての列を照会することはできません。そうでない場合、テーブルのすべての列の値をどのように照会しますか?

したがって、次を使用して合計列リスト (列名と表示名) を取得できます。

LIST DICT file NAME

これにより、すべての列とその表示名のリストが返されます。次に、テーブルにあるすべての列をクエリするにはどうすればよいですか?

LIST file

クエリのみを実行しますLIST file @id(@id は @ 内の唯一のものです)。

更新ブログ を見つけました -- 私よりも古いバージョンの UniVerse を使用している生きた呼吸をしている人物です!! 彼は同じことについて不平を言ってい@ますが、すべての列を更新することを恥ずかしがる解決策はないと言っています.誰かが彼(Dan Watts)が間違っていることを証明してください.

200 列のテーブルがあり、SELECT * で 200 列すべてを返したい場合はどうすればよいでしょうか。申し訳ありませんが、その "@" レコードには 200 個の列名すべてを入力する必要があります。また、列を追加、削除、または名前変更する場合は、その "@" レコードを忘れずに編集する必要があります。あなたの痛みが分かります!この厄介なアプローチは、UniVerse の ODBC ドライバーにまでさかのぼります。現在、多くのアプリケーションを壊さずに変更することはできないと思います。UniVerse ODBC ガイドの不可解な IBM 言語で説明されている詳細を見つけることができます。

4

5 に答える 5

5

LIST ALL はユニバースでは機能しません。

できることの 1 つは、フレーバーに応じて 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
于 2010-01-14T23:54:57.023 に答える
1

LIST.ITEM ファイル名。これにより、すべての値が返されます

于 2010-10-28T08:13:55.433 に答える
0

ほとんどのUniverse/Pickインストールでは、プログラマーは通常、RECALL / RETRIEVE / ENGLISH/LISTを介したデータへのアドホックアクセスを容易にするための標準化された簡単な方法を構築します。「S」または「D」辞書のように見えるF1、F2、F3などの名前のVOCファイルのエントリをよく見かけます。通常、これらは幅10文字のような標準的なもので、「フィールド1」のような列見出しで左寄せされます。「*A1」や「*A2」などを使用することは、一般的なフィールド名のために進化したもう1つの標準のようです。

これらは任意のリストコマンドで使用でき、ファイルディクショナリにF1(またはその他)がない場合は、VOCファイルのF1を使用します。したがって、次のようなコマンド:

LIST{ファイル名}F1F2 F3

動作します。一度設定すれば、辞書名を探すのに時間をかけたくない場所ならどこでも利用できるので便利です。

また、VOCに「ALL.FIELDS」というグループタイプの辞書アイテムを設定して、そこに膨大な数の「F1」タイプのアイテムを詰め込めない理由はありません。次のようになります。

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

これは、適切な辞書アイテムがすべて含まれていることを除けば、@辞書アイテムの外観とほぼ同じです。さらに言えば、実際のファイルのディクショナリに「ALL.FIELDS」ディクショナリアイテムを作成し、そこに適切なフォーマットをすべて備えた適切なディクショナリアイテムを配置することができます。

これに関する注意点は、プログラマーが使用するデータフィールドのディクショナリアイテムを作成することを強制するルールが実際にはどこにも存在しないため、UVディクショナリが完全で正確になるという保証がないことです。それほど気にする場合は、ファイルをスキャンしてデータを分析し、フィールドが実際にどのように機能するかについてのレポートを生成するプログラムを作成する必要があります。

辞書が信頼できるレベルに到達できる場合は、各フィールドに対応する「A」タイプの辞書項目が1つだけあることを確認する価値があります。次に、すべての「A」タイプのレコードに対してディクショナリでSELECTを実行し、それらすべてをリストする「ALL.FIELD」グループディクショナリアイテムを作成するプログラムを作成するのは簡単です。次に、異なるフォーマットまたは変換のために代替辞書アイテムを追加するすべての人が、「S」、「I」、および「D」タイプのアイテムのみを使用することを確認してください。

個人的には、PICK環境内で日常業務を行うときに、すべてのフィールドに@辞書アイテムをロードするのは面倒です。通常、意味のある並べ替えと合計のオプションを備えた80列のディスプレイにうまく収まるものが必要です。SQLのものがセットアップされ、それに応じて名前が付けられているのを見たいと思います。

于 2010-01-25T17:16:30.237 に答える
0

試す

LIST file ALL

もちろん、実際にできる数には限りがありますので、ファイリングしても構いません。あなたは実際に何を達成したいですか?

また、より一般的には、Rocket Software の U2 サイト にアクセスしてください。そこから完全なマニュアル セットをダウンロードできます。

通常、人々を助けるために迅速な応答を提供するメーリングリストもあります. 詳細については、U2 ユーザー グループ サイトを参照してください。

于 2010-01-14T22:46:42.350 に答える
0

いくつかのポイント:

Dan が言及しているIBM の ADO.NET プロバイダーは、今後 UniVerse (または UniData) の一部にはなりません。IBM U2 事業 (UniVerse を含む) は昨年の秋に Rocket Software に売却され、いくつかの部分が移行されませんでした。

次に、辞書用の標準的なフレーズがいくつかあります。@ は、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
...
于 2010-01-15T16:56:00.370 に答える