OVH Cloud OVH Cloud

Base PROGRESS - Accès aux séquenceurs

17 réponses
Avatar
Yannick
Bonjour

Lorsque j'importe les tables d'une base progress, dans une analyse HF,
je ne rencontre aucun problème.

Par contre, comment accéder aux séquenceurs de la base progress ?

Merci pour votre aide
Yannick

10 réponses

1 2
Avatar
Fredo MT
C'est quoi des séquenceurs ?

Le seul problème que j'ai rencontré sur Progress c'est le requêtage sur des
tables avec des champs de type tableau.
Utilises-tu du Natif ou des requêtes SQL ?

"Yannick" a écrit dans le message de news:

Bonjour

Lorsque j'importe les tables d'une base progress, dans une analyse HF, je
ne rencontre aucun problème.

Par contre, comment accéder aux séquenceurs de la base progress ?

Merci pour votre aide
Yannick




Avatar
Yannick
Dans une base progress, on peut mettre, précisément, des "séquences"
(via le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur de
départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien toutes
les tables de la base de données. Mais où se cachent les "séquences"
(et comment y accéder)?




Que ce soit en accès natif, ou en requête

C'est quoi des séquenceurs ?

Le seul problème que j'ai rencontré sur Progress c'est le requêtage sur des
tables avec des champs de type tableau.
Utilises-tu du Natif ou des requêtes SQL ?

"Yannick" a écrit dans le message de news:

Bonjour

Lorsque j'importe les tables d'une base progress, dans une analyse HF, je
ne rencontre aucun problème.

Par contre, comment accéder aux séquenceurs de la base progress ?

Merci pour votre aide
Yannick






Avatar
nwjb
Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences"
(via le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur de
départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien toutes
les tables de la base de données. Mais où se cachent les "séquences" (et
comment y accéder)?





Je ne connais pas Progress , mais les séquences existent dans Oracle:
elles sont utilisables
par les requetes du genre 'select seq.nextval from dual' (si la séquence
s'appelle 'seq' , la table 'dual' est une table 'bidon' standard chez
oracle comportant une ligne et une colonne).



--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
Avatar
nwjb
Le Wed, 14 Jun 2006 15:21:20 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences"
(via le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur de
départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien toutes
les tables de la base de données. Mais où se cachent les "séquences"
(et comment y accéder)?





Je ne connais pas Progress , mais les séquences existent dans Oracle:
elles sont utilisables
par les requetes du genre 'select seq.nextval from dual' (si la séquence
s'appelle 'seq' , la table 'dual' est une table 'bidon' standard chez
oracle comportant une ligne et une colonne).





Comme il n'y a pas de réaction à ma réponse je détaille:

Créer une requete SEQ_SEL_01 en code SQL seul (pas avec l'assistant
requete) comportant
ce qu'il faut pour obtenir la valeur de la séquence : en ORACLE:

select syscrim.compteur.nextval as seq from dual

Dans la procédure WD:

HExécuteRequête(SEQ_SEL_01,"gcCCAM",hRequêteSansCorrection)
HLitPremier(SEQ_SEL_01)
seq=SEQ_SEL_01.seq
HAnnuleDéclaration(SEQ_SEL_01)



--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
Avatar
nwjb
Le Thu, 15 Jun 2006 15:34:02 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:21:20 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences"
(via le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur
de départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien
toutes les tables de la base de données. Mais où se cachent les
"séquences" (et comment y accéder)?





Je ne connais pas Progress , mais les séquences existent dans Oracle:
elles sont utilisables
par les requetes du genre 'select seq.nextval from dual' (si la
séquence s'appelle 'seq' , la table 'dual' est une table 'bidon'
standard chez oracle comportant une ligne et une colonne).





Comme il n'y a pas de réaction à ma réponse je détaille:

Créer une requete SEQ_SEL_01 en code SQL seul (pas avec l'assistant
requete) comportant
ce qu'il faut pour obtenir la valeur de la séquence : en ORACLE:

select syscrim.compteur.nextval as seq from dual

Dans la procédure WD:

HExécuteRequête(SEQ_SEL_01,"gcCCAM",hRequêteSansCorrection)
HLitPremier(SEQ_SEL_01)
seq=SEQ_SEL_01.seq
HAnnuleDéclaration(SEQ_SEL_01)





Yakékun?


--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
Avatar
Yannick
> Le Thu, 15 Jun 2006 15:34:02 +0200, nwjb a
écrit:

Le Wed, 14 Jun 2006 15:21:20 +0200, nwjb a
écrit:

Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences" (via
le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur de
départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien toutes
les tables de la base de données. Mais où se cachent les "séquences" (et
comment y accéder)?





Je ne connais pas Progress , mais les séquences existent dans Oracle:
elles sont utilisables
par les requetes du genre 'select seq.nextval from dual' (si la séquence
s'appelle 'seq' , la table 'dual' est une table 'bidon' standard chez
oracle comportant une ligne et une colonne).





Comme il n'y a pas de réaction à ma réponse je détaille:

Créer une requete SEQ_SEL_01 en code SQL seul (pas avec l'assistant
requete) comportant
ce qu'il faut pour obtenir la valeur de la séquence : en ORACLE:

select syscrim.compteur.nextval as seq from dual

Dans la procédure WD:

HExécuteRequête(SEQ_SEL_01,"gcCCAM",hRequêteSansCorrection)
HLitPremier(SEQ_SEL_01)
seq=SEQ_SEL_01.seq
HAnnuleDéclaration(SEQ_SEL_01)





Yakékun?



oui...
Je suis en train de faire les tests. Mais, pour l'instant, ça ne va
pas.
Je continue et je poste les résultats dès que possible
Avatar
nwjb
Le Thu, 15 Jun 2006 16:39:19 +0200, Yannick a écrit:

Le Thu, 15 Jun 2006 15:34:02 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:21:20 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences"
(via le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur
de départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien
toutes les tables de la base de données. Mais où se cachent les
"séquences" (et comment y accéder)?





Je ne connais pas Progress , mais les séquences existent dans Oracle:
elles sont utilisables
par les requetes du genre 'select seq.nextval from dual' (si la
séquence s'appelle 'seq' , la table 'dual' est une table 'bidon'
standard chez oracle comportant une ligne et une colonne).





Comme il n'y a pas de réaction à ma réponse je détaille:

Créer une requete SEQ_SEL_01 en code SQL seul (pas avec l'assistant
requete) comportant
ce qu'il faut pour obtenir la valeur de la séquence : en ORACLE:

select syscrim.compteur.nextval as seq from dual

Dans la procédure WD:

HExécuteRequête(SEQ_SEL_01,"gcCCAM",hRequêteSansCorrection)
HLitPremier(SEQ_SEL_01)
seq=SEQ_SEL_01.seq
HAnnuleDéclaration(SEQ_SEL_01)





Yakékun?



oui...
Je suis en train de faire les tests. Mais, pour l'instant, ça ne va pas.
Je continue et je poste les résultats dès que possible





Quelle est la syntaxe SQL (et non L4G) d'accès aux séquences ?

--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
Avatar
Yannick
> Le Thu, 15 Jun 2006 16:39:19 +0200, Yannick a écrit:

Le Thu, 15 Jun 2006 15:34:02 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:21:20 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences"
(via le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur de
départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien toutes
les tables de la base de données. Mais où se cachent les "séquences"
(et comment y accéder)?





Je ne connais pas Progress , mais les séquences existent dans Oracle:
elles sont utilisables
par les requetes du genre 'select seq.nextval from dual' (si la séquence
s'appelle 'seq' , la table 'dual' est une table 'bidon' standard chez
oracle comportant une ligne et une colonne).





Comme il n'y a pas de réaction à ma réponse je détaille:

Créer une requete SEQ_SEL_01 en code SQL seul (pas avec l'assistant
requete) comportant
ce qu'il faut pour obtenir la valeur de la séquence : en ORACLE:

select syscrim.compteur.nextval as seq from dual

Dans la procédure WD:

HExécuteRequête(SEQ_SEL_01,"gcCCAM",hRequêteSansCorrection)
HLitPremier(SEQ_SEL_01)
seq=SEQ_SEL_01.seq
HAnnuleDéclaration(SEQ_SEL_01)





Yakékun?



oui...
Je suis en train de faire les tests. Mais, pour l'instant, ça ne va pas.
Je continue et je poste les résultats dès que possible





Quelle est la syntaxe SQL (et non L4G) d'accès aux séquences ?



D'après l'aide en ligne de progress, la syntaxe est la suivante :
INSERT INTO PUB.Customer (CustNum, Name) values
(pub.NextCustNum.nextval, 'toto')

Le problème ne vient pas de l'accès via windev, car je n'arrive pas,
non plus, à accéder à la séquence, en langage sql, dans l'éditeur
progress (ni, avec sql explorer)

-> Il faut que je me renseigne au niveau de progress...

Merci cette aide qui m'a mis sur la piste
Je posterai la solution de progress.
Avatar
Yannick
> Le Wed, 14 Jun 2006 15:21:20 +0200, nwjb a
écrit:

Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences" (via
le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur de
départ / incrément / ...).

En L4G progress, on y accède par deux verbes :
"CURRENT-VALUE" -> lecture/écriture de la valeur courante
"NEXT-VALUE" -> lit et incrémente la valeur courante

Problème :
Quand j'importe les tables progress dans l'analyse, je vois bien toutes
les tables de la base de données. Mais où se cachent les "séquences" (et
comment y accéder)?





Je ne connais pas Progress , mais les séquences existent dans Oracle: elles
sont utilisables
par les requetes du genre 'select seq.nextval from dual' (si la séquence
s'appelle 'seq' , la table 'dual' est une table 'bidon' standard chez
oracle comportant une ligne et une colonne).





Comme il n'y a pas de réaction à ma réponse je détaille:

Créer une requete SEQ_SEL_01 en code SQL seul (pas avec l'assistant requete)
comportant
ce qu'il faut pour obtenir la valeur de la séquence : en ORACLE:

select syscrim.compteur.nextval as seq from dual

Dans la procédure WD:

HExécuteRequête(SEQ_SEL_01,"gcCCAM",hRequêteSansCorrection)
HLitPremier(SEQ_SEL_01)
seq=SEQ_SEL_01.seq
HAnnuleDéclaration(SEQ_SEL_01)




Bonjour

Voici la syntaxe exacte pour accéder à la séquence :
"SELECT PUB.tpnoxfi.NEXTVAL FROM PUB.TPFiEnTete"
Où tpnoxfi est le séquenceur et TPFiEnTete est une table de la base de
données.
Cette syntaxe fonctionne parfaitement dans Microsoft Query.

Maintenant, comment faire dans windev ?
Dans l'analyse du projet, j'ai défini une connexion sur la base de
donnée. Cette connexion fonctionne (j'arrive à lire des tables, via
l'accès natif progress).

Maintenant, si je fais comme demandé plus haut, je créé une requête en
code sql seul (nouvelle requête, saisir le code sql), j'ai déjà une
warning sur la syntaxe "SELECT PUB.tpnoxfi.NEXTVAL FROM PUB.TPFiEnTete"
:
-> si je mets les guillements, il souligne le mot SELECT et met la
warning 'Caractère " inattendu'
-> si j'enlève les guillements, il souligne le mot NEXTVAL et met la
warning 'Mot . inattendu'


Que faire ?
Avatar
nwjb
Le Fri, 16 Jun 2006 11:37:35 +0200, Yannick a écrit:

Le Wed, 14 Jun 2006 15:21:20 +0200, nwjb
a écrit:

Le Wed, 14 Jun 2006 15:07:45 +0200, Yannick a écrit:

Dans une base progress, on peut mettre, précisément, des "séquences"
(via le Data Dictionary, on peut créer des tables et des séquences).

Une séquence est un compteur, auquel on donne des propriétés (valeur
de départ / incrément / ...).








[...]
Comme il n'y a pas de réaction à ma réponse je détaille:

Créer une requete SEQ_SEL_01 en code SQL seul (pas avec l'assistant
requete) comportant
ce qu'il faut pour obtenir la valeur de la séquence : en ORACLE:

select syscrim.compteur.nextval as seq from dual

Dans la procédure WD:

HExécuteRequête(SEQ_SEL_01,"gcCCAM",hRequêteSansCorrection)
HLitPremier(SEQ_SEL_01)
seq=SEQ_SEL_01.seq
HAnnuleDéclaration(SEQ_SEL_01)




Bonjour

Voici la syntaxe exacte pour accéder à la séquence :
"SELECT PUB.tpnoxfi.NEXTVAL FROM PUB.TPFiEnTete"
Où tpnoxfi est le séquenceur et TPFiEnTete est une table de la base de
données.
Cette syntaxe fonctionne parfaitement dans Microsoft Query.

Maintenant, comment faire dans windev ?
Dans l'analyse du projet, j'ai défini une connexion sur la base de
donnée. Cette connexion fonctionne (j'arrive à lire des tables, via
l'accès natif progress).

Maintenant, si je fais comme demandé plus haut, je créé une requête en
code sql seul (nouvelle requête, saisir le code sql), j'ai déjà une
warning sur la syntaxe "SELECT PUB.tpnoxfi.NEXTVAL FROM PUB.TPFiEnTete" :
-> si je mets les guillements, il souligne le mot SELECT et met la
warning 'Caractère " inattendu'
-> si j'enlève les guillements, il souligne le mot NEXTVAL et met la
warning 'Mot . inattendu'


Que faire ?




Je pense que PUB est un schéma ou un compte et tpnoxfi le nom de la
séquence.
Le compilateur WD (je suppose ) ne s'attend pas à avoir deux niveaux de
'.' dans
un select (il ne doit en accepter qu'un du genre table.attribut). Il
faudrait
donc supprimer la référence au compte de façon à n'avoir qu'un seul '.':
SELECT tpnoxfi.Nextval from ...

Une solution par exemple est de créer un synonyme : create synonym XXX for
PUB.tpnoxfi
puis faire select XXX.nextval as seq from ....

Voir dans ma réponse precédente comment récupérer la valeur de la séquence.

Autre hypothèse: l'erreur n'est qu'un Warning (Mot . inattendu) et comme
il FAUT
exécuter la requête avec hRequeteSANSCORRECTION , le code SQL n'est pas
interprété par WD
mais passé directement au SGBD et cela fonctionne donc peut-être.



--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
1 2