UniVerse comment puis-je récupérer un fichier pour questionne toutes les valeurs de ses colonnes?

StackOverflow https://stackoverflow.com/questions/2068026

Question

Une sorte de suivi ma question auto-réponse de trouver les noms de colonnes.

Dans UniVerse vous ne pouvez pas interroger un fichier pour toutes ses colonnes à moins que l'expression @ dans le dictionnaire de votre fichier est défini sur toutes les colonnes de tables. Dans le cas contraire, comment vous interrogez une table pour toutes les valeurs de ses colonnes?

Je peux obtenir la liste de la colonne totale (nom de la colonne et le nom d'affichage) en utilisant:

LIST DICT file NAME

Ceci renvoie une liste de toutes les colonnes et leurs noms d'affichage. Comment faire une requête alors la table pour toutes les colonnes qu'il a?

LIST file

est seulement une requête pour LIST file @id (@id est la seule chose @).

UPDATE J'ai trouvé un blog - une personne de respiration vivante qui id en utilisant une version de UniVerse plus que le mien !! où il se plaint de la même chose, mais dit qu'il n'y a pas de solution de mise à jour timide @ avec toutes les colonnes, s'il vous plaît dieu quelqu'un lui prouver (Dan Watts).

  

Que faire si vous avez une table de 200 colonne   et que vous voulez SELECT * retourner tous   200 colonnes? Désolé, mais vous aurez   pour entrer dans les 200 noms de colonnes dans ce   "@" record. Et si vous ajoutez, supprimez ou   renommer une colonne, vous devrez   pensez à modifier cet enregistrement de « @ ». je   sentir votre douleur! cette lourdeur   approche remonte à ODBC universe   conducteur, et je suppose qu'ils ne peuvent pas   changer maintenant sans casser beaucoup   des applications. Vous pouvez trouver le   décrite à indéchiffrable   IBM-ese dans le Guide ODBC UniVerse.

Était-ce utile?

La solution

LISTE ne fonctionne pas sur TOUT univers.

Une chose que vous pouvez faire est LIST.ITEM ou LIST-ITEM selon votre goût. Cela liste tous les attributs dans le fichier qui contient des données comme ceci:

>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

>  

Si vous cherchez à faire quelque chose avec les données écrire alors un programme et faire quelque chose comme ceci:

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

Autres conseils

nom de fichier LIST.ITEM. Ceci renverra toutes les valeurs

Essayez

LIST file ALL

Bien sûr, il y a une limite au nombre qu'il peut réellement faire, il peut déposer. Qu'est-ce que vous voulez vraiment atteindre?

En outre, plus généralement, vous devriez visiter site U2 de Rocket Software. Vous pourrez télécharger le jeu manuel complet il.

Il y a aussi une liste de diffusion qui donne habituellement des réponses rapides pour aider les gens. Vous trouverez tous les détails de ce à U2 site User Group .

Un couple de points:

fournisseur de ADO.NET IBM Dan fait référence à ne sera pas une partie de UniVerse (ou UniData) aller de l'avant. L'activité de U2 IBM (y compris UniVerse) a été vendu à Rocket Software à l'automne dernier, et deux pièces n'a pas fait la transition.

En second lieu, il y a deux ou trois phrases types Dictionaries. @ Est la liste par défaut sur CRT. @SELECT précise les champs renvoyés d'un style 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
...

Pour la plupart Univers / Pick installations, les programmeurs construisent généralement des moyens de sténographie normalisées pour faire ad hoc l'accès aux données via RECALL / RÉCUPÉRER / ANGLAIS / LIST plus facile. Je l'ai souvent vu des entrées dans le fichier de COV avec des noms comme F1, F2, F3 et ainsi de suite qui ressemblent à des dictionnaires « S » ou « D ». Habituellement, ils sont standard quelque chose comme 10 caractères larges et justifiés à gauche avec une tête de colonne comme « Champ 1 ». L'utilisation de « * A1 », « * A2 » et comme cela semble être une autre norme qui a évolué pour les noms de domaine génériques.

Vous pouvez utiliser dans une commande de liste et si le dictionnaire de fichier n'a pas de F1 (ou autre), il utilisera celui du fichier COV. Une commande comme:

{LIST} nom de fichier F1 F2 F3

fonctionne. Il est agréable, car il vous suffit de le configurer une fois, puis il est disponible partout où vous ne voulez pas prendre le temps à la recherche les noms de dictionnaire.

En outre, il n'y a aucune raison que vous ne pouvez pas configurer un élément de dictionnaire type de groupe dans le COV appelé « ALL.FIELDS » et farcir un gazillion articles de type « F1 » là-dedans. Il ressemblerait à ceci:

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

Ce qui est à peu près ce que votre @ item dictionnaire ressemblerait, sauf qu'il aurait tous les éléments de dictionnaire appropriés en elle. Pour cette question, vous pourriez construire un élément de dictionnaire « ALL.FIELDS » dans le dictionnaire du fichier réel et de mettre les éléments de dictionnaire appropriés avec tout le bon formatage là-dedans.

La mise en garde avec ceci est qu'il n'y a aucune garantie qu'un dictionnaire UV va être complètes et précises car il n'y a vraiment pas de règles partout qui obligent les programmeurs à construire des éléments du dictionnaire pour les champs de données qu'ils utilisent. Si vous vous souciez beaucoup, vous aurez besoin d'écrire un programme pour parcourir le fichier et analyser les données pour générer un rapport de la façon dont les champs fonctionnent réellement.

Si vous pouvez arriver au point où le dictionnaire va être fiable, il est intéressant de faire en sorte que chaque champ a un et un seul type d'élément correspondant dictionnaire « A ». Ensuite, il est trivial d'écrire un programme qui fait un SELECT dans le dictionnaire pour tous les enregistrements de type « A » et construit un élément de dictionnaire de groupe « ALL.FIELD » qui les énumère tous. Ensuite, assurez-vous que tout le monde Ajout d'autres éléments du dictionnaire pour la mise en forme ou différents conversions utilise uniquement « S », « I » et des articles de type « D ».

Personnellement, je trouve le chargement de l'élément de dictionnaire @ avec tous les domaines possibles ennuyeux quand faire des choses tous les jours dans l'environnement de PICK. Habituellement, vous voulez des trucs qui correspondent bien à travers un écran 80 colonnes avec tri et totalisant des options qui ont du sens. Je préfère voir des choses SQL configuré et nommé en conséquence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top