Forum Rules Remarque importante:

Lorsque vous postez un probléme en relation avec ABAL ou WABAL, merci de préciser la version utilisée, le systéme d'exploitation d'exécution, la version du CRITERIA et la version de l'executeur ainsi que toutes informations permettant de connaitre le contexte d'execution . cela evite de poster un message pour vous demander ces précisions !!!

  Reply to this topicStart new topicStart Poll

> ABAL 2.2b - questions sur structure fichiers, Question sur structure fichier et KEY
ChV17
Posted: 16/03/16 10:58
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



Bonjour,

Je dois modifier le fichier client de notre logiciel pour dérouter l'utilisation d'un champ non exploité.

Déclaration du fichier client
J’ai modifié en 2010 le champ EMBALLAG pour le raccourcir d’un caractère et ajouter le champ FACTOR, mais plus loin dans la programmation, j’ai (voir plus bas).

CODE

;--------------------------------
; FICHIER CLIENT
;--------------------------------

 DCL RECCLI$=640
 DCL CLE_CLI$=5     ; Cl‚ du fichier.
 DCL IND_CLI#       ; Marqueur.
 DCL REC_CLI$=1024  ; Donn‚es.
 FIELD=M,REC_CLI    ; Les donn‚es en d‚tail
 DCL COPICLE$=5     ; COPIE DE LA CLE DU FICHIER
 DCL REFCLIEN$=20   ; REFERENCE CLIENT
 ** Modif Chv du 22-10-2010, ajout du code FACTOR
;DCL EMBALLAG$=15   ; CONDITIONNEMENT
 DCL EMBALLAG$=14   ; CONDITIONNEMENT
 DCL FACTOR$=1      ; Code Factor
; Fin modif
 DCL BANQUE$=15     ; BANQUE
 DCL REFFOUR$=15    ; REFERENCE FOURNISSEUR
 DCL RSCLIENT$=40   ; RAISON SOCIALE CLIENT
 DCL ADFACT1$=40    ; ADRESSE DE FACTURATION 1
 DCL ADFACT2$=40    ; SUITE ADDRES DE FACTURATION
 DCL ADFACT3$=40    ; SUITE ADRESSE DE FACTURATION
 DCL ADFACT4$=40    ; SUITE ADRESSE DE FACTURATION
 DCL ADFACT5$=40    ; SUITE ADRESSE DE FACTURATION
 DCL ADFACT6$=40    ; ADRESSE DE FACTURATION SUITE
 DCL ADLIV1$=40     ; ADRESSE DE LIVRAISON
 DCL ADLIV2$=40     ; SUITE ADRESSE DE LIVRAISON
 DCL ADLIV3$=40     ; SUITE ADRESSE LIVRAISON
 DCL ADLIV4$=40     ; SUITE ADRESSE LIVRAISON
 DCL ADLIV5$=40     ; SUITE ADRESSE LIVRAISON
 DCL ADLIV6$=40     ; ADRESSE DE LIVRAISON SUITE
 DCL TELEPHON$=15   ; TELEPHONE
 DCL TELEX$=15      ; TELEX
 DCL INTERLOC$=60   ; INTERLOCUTEUR
 DCL REGLEMT$=40    ; CONDITION DE REGLEMENT
 DCL PORT$=30       ; PORT
 DCL DEDOUAN$=30    ; DEDOUANEMENT
 DCL FACTEMB$=1     ; FACTURATION EMBALLAGE
 DCL VENTILLA$=1    ; VENTILLATION POUR STATISTIQUE
 DCL DEVISE$=3      ; DEVISE RECHERCHE DANS FICHIER
 DCL OBSCLI1$=40    ; OBSERVATION CLIENT
 DCL OBSCLI2$=40    ; SUITE OBSERVATION
 DCL OBSCLI3$=40    ; SUITE OBSERVATION
 DCL OBSCLI4$=40    ; SUITE OBSERVATION
 DCL PRIXEMB=5      ; PRIX EMBALLAGE
 DCL CEU_CLI3$=3
 DCL EUR_CLI3$=13
 DCL CPT_CLI2$=8
 DCL REG_CLI2$=1    ; CODE REGLEMENT
                    ;DCL LIE_CLI2$=20  ;  modification du nom de la variable
 DCL CPT_SAGE$=20
 DCL ECH_CLI2#
 DCL QUA_CLI2#
FIELD=M



Les Key (clés), qui comportent toujours EMBALLAG, mais dont la longueur est toujours de 15 caractères, je n’ai pas de Key sur FACTOR.

CODE

RKEY=19
 KEY=19,"COPICLE",5     ; COPIE DE LA CLE DU FICHIER
 KEY=19,"REFCLIEN",20   ; REFERENCE CLIENT
 KEY=19,"EMBALLAG",15   ; CONDITIONNEMENT
 KEY=19,"BANQUE",15     ; BANQUE
 KEY=19,"REFFOUR",15    ; REFERENCE FOURNISSEUR
 KEY=19,"RSCLIENT",40   ; RAISON SOCIALE CLIENT
 KEY=19,"ADFACT1",40    ; ADRESSE DE FACTURATION 1
 KEY=19,"ADFACT2",40    ; SUITE ADDRES DE FACTURATION
 KEY=19,"ADFACT3",40    ; SUITE ADRESSE DE FACTURATION
 KEY=19,"ADFACT4",40    ; SUITE ADRESSE DE FACTURATION
 KEY=19,"ADFACT5",40    ; SUITE ADRESSE DE FACTURATION
 KEY=19,"ADFACT6",40    ; ADRESSE DE FACTURATION SUITE
 KEY=19,"ADLIV1",40     ; ADRESSE DE LIVRAISON
 KEY=19,"ADLIV2",40     ; SUITE ADRESSE DE LIVRAISON
 KEY=19,"ADLIV3",40     ; SUITE ADRESSE LIVRAISON
 KEY=19,"ADLIV4",40     ; SUITE ADRESSE LIVRAISON
 KEY=19,"ADLIV5",40     ; SUITE ADRESSE LIVRAISON
 KEY=19,"ADLIV6",40     ; ADRESSE DE LIVRAISON SUITE
 KEY=19,"TELEPHON",15   ; TELEPHONE
 KEY=19,"TELEX",15      ; TELEX
 KEY=19,"INTERLOC",60   ; INTERLOCUTEUR
 KEY=19,"REGLEMT",40    ; CONDITION DE RECLEMENT
 KEY=19,"PORT",30       ; PORT
 KEY=19,"DEDOUAN",30    ; DEDOUANEMENT
 KEY=19,"FACTEMB",1     ; FACTURATION EMBALLAGE
 KEY=19,"VENTILLA",1    ; VENTILLATION POUR STATISTIQUE
 KEY=19,"DEVISE",3      ; DEVISE RECHERCHE DANS FICHIER
 KEY=19,"OBSCLI1",40    ; OBSERVATION CLIENT
 KEY=19,"OBSCLI2",40    ; SUITE OBSERVATION
 KEY=19,"OBSCLI3",40    ; SUITE OBSERVATION
 KEY=19,"OBSCLI4",40    ; SUITE OBSERVATION
 KEY=19,"PRIXEMB",3,B,2 ; PRIX EMBALLAGE
 CKEY=19:&CREERR,ERR
   LINK=19,"REFCLIEN"
   CLINK=19


Il faudrait encore modifier le champ EMBALLAG pour le transformer en :


CODE

DCL CODE_FACTOR$=6   ; CODE FACTOR
DCL VIDE$=8; emplacement libre
DCL FACTOR$=1      ; Factor



Mais, au niveau des KEY, je ne sais plus quoi faire……
Les KEY doivent elles respecter l'image mémoire du fichier ?
Que se passe t-il si je supprime le KEY=19,"EMBALLAG",15 ; CONDITIONNEMENT
Ce champ n'est pas exploité dans le code du programme, d'où l'idée de le détourner pour ajouter des informations.

Merci d'avance
PM
Top
root
Posted: 16/03/16 13:43
Quote Post


God of the forum
*******

Group: Admin
Posts: 6040
Member No.: 2
Joined: 10/05/02
Submissions: 10 
Downloads: 19



le fait de faire un key permet d'utiliser le champ pour définir un lien et donc de faire des requete mc sur ce champ

A priori il n'y a qu'un lien Mc défini qui ne contient qu'un seul champ

Pourquoi les champs sont-ils décrit alors qu'ils ne sont pas utilisés pour définir des liens ?
le fichier est attaqué par ODBC pour permettre des traitements en dehors de l'application ?
certains développeurs se font des outils pour visualiser le contenu des fichiers en exploitants les informations des keys
Si ton key emaballag fait 15 il englobe donc ton $=1 mais si l'application
le programme utilise les DCL
les key sont définis pour être utilisés pour la définition de lien MC
Si tu changes les keys, pour que la définition des keys soient "enregistrées" dans le .I, il faudra que tu supprimes la couche mc du fichier et que tu la recrée
PM
Top
J-L Dutertre
Posted: 16/03/16 13:48
Quote Post


Mega User
***

Group: Membre
Posts: 110
Member No.: 48
Joined: 29/07/02
Submissions: None Submitted
Downloads: 2



Bonjour,

IL n'est pas obligatoire que les KEY soient l'image des DCL, car on ne peut désirer n'utiliser
que quelques champs en MC. Mais la plupart du temps on les décrit à l’identique, c'est plus logique.
Dans ton cas, ré-décrit tes KEY comme tes nouvelles DCL
Les anciennes :
RKEY=19
KEY=19,"COPICLE",5 ; COPIE DE LA CLE DU FICHIER
KEY=19,"REFCLIEN",20 ; REFERENCE CLIENT
KEY=19,"EMBALLAG",15 ; CONDITIONNEMENT
KEY=19,"BANQUE",15 ; BANQUE
devient :
RKEY=19
KEY=19,"COPICLE",5 ; COPIE DE LA CLE DU FICHIER
KEY=19,"REFCLIEN",20 ; REFERENCE CLIENT
KEY=19,"CODE_FACTOR",6 ; CODE FACTOR
KEY=19,"VIDE",8 ; sert de filler
KEY=19,"FACTOR",1 ; Code factor
KEY=19,"BANQUE",15 ; BANQUE
pour refléter les DCL :
DCL CODE_FACTOR$=6 ; CODE FACTOR
DCL VIDE$=8; emplacement libre
DCL FACTOR$=1 ; Factor

L'essentiel est de conserver la longueur totale de 15 pour les KEY remplaçant EMBALLAG
Il faut évidemment supprimer l'ancienne extension multicritère
pour la remplacer par la nouvelle.


PMUsers Website
Top
ChV17
Posted: 16/03/16 14:17
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



QUOTE (root @ 16/03/16 13:43)
le fait de faire un key permet d'utiliser le champ pour définir un lien et donc de faire des requete mc sur ce champ

A priori  il n'y a qu'un lien Mc défini qui ne contient qu'un seul champ

Pourquoi les champs sont-ils décrit  alors qu'ils ne sont pas utilisés pour définir des liens ?
le fichier est attaqué par ODBC pour permettre des traitements en dehors de l'application ?
certains développeurs se font des outils pour visualiser le contenu des fichiers en exploitants les informations des keys
Si ton key emaballag fait 15  il englobe donc ton $=1  mais si l'application
le programme utilise les DCL   
les key sont définis pour être utilisés pour la définition de lien MC
Si tu changes les keys,  pour que la définition des keys soient "enregistrées" dans le .I, il faudra que tu supprimes la couche mc du fichier  et que tu la recrée

Bonjour et merci,

Effectivement, nous pouvons obtenir par ODBC quelques traitements mais ce n'est pas la finalité du programme et c'est juste occasionnellement.

Quant à supprimer la couche MC du fichier, oups, je ne sais pas faire et ne veux pas tout casser.


This post has been edited by ChV17 on 16/03/16 14:20
PM
Top
ChV17
Posted: 16/03/16 14:22
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



QUOTE (J-L Dutertre @ 16/03/16 13:48)
Bonjour,

IL n'est pas obligatoire que les KEY soient l'image des DCL, car on ne peut désirer n'utiliser
que quelques champs en MC. Mais la plupart du temps on les décrit à l’identique, c'est plus logique.
Dans ton cas, ré-décrit tes KEY comme tes nouvelles DCL
Les anciennes :
RKEY=19
KEY=19,"COPICLE",5 ; COPIE DE LA CLE DU FICHIER
KEY=19,"REFCLIEN",20 ; REFERENCE CLIENT
KEY=19,"EMBALLAG",15 ; CONDITIONNEMENT
KEY=19,"BANQUE",15 ; BANQUE
devient :
RKEY=19
KEY=19,"COPICLE",5 ; COPIE DE LA CLE DU FICHIER
KEY=19,"REFCLIEN",20 ; REFERENCE CLIENT
KEY=19,"CODE_FACTOR",6 ; CODE FACTOR
KEY=19,"VIDE",8 ; sert de filler
KEY=19,"FACTOR",1 ; Code factor
KEY=19,"BANQUE",15 ; BANQUE
pour refléter les DCL :
DCL CODE_FACTOR$=6 ; CODE FACTOR
DCL VIDE$=8; emplacement libre
DCL FACTOR$=1 ; Factor

L'essentiel est de conserver la longueur totale de 15 pour les KEY remplaçant EMBALLAG
Il faut évidemment supprimer l'ancienne extension multicritère
pour la remplacer par la nouvelle.

Merci J-L pour ces explications.

Je bute sur un concept :

QUOTE
Il faut évidemment supprimer l'ancienne extension multicritère
pour la remplacer par la nouvelle.


Je ne vois pas du tout ce qu'il faut faire.

Christian
PM
Top
Churlet
Posted: 16/03/16 18:07
Quote Post


Hyper User
*****

Group: _Membre
Posts: 515
Member No.: 16
Joined: 01/06/02
Submissions: None Submitted
Downloads: 2



Bonjour,

Quand tu utilises criteria avec search, modif, insert, up, down, tu utilises quatre éléments au maximum

Un Handle fichier
Un Buffer mémoire sur la Clef
Un Short Integer pour le marqueur qui est optionel
Un Buffer sur les données

Tu utilise ABAL pour découper tes buffer par le biais des adresse mémoires

DCL A$=10
DCL B%
DCL C=8

Mais ce découpage CRITERIA ne le connait pas c'est pour cela que tu peux déclarer des KEY ce qui implique que la structure de ton fichier soit Tabulaire sinon ça ne fonctionnera pas ou alors seulement pour la partie commune à l'ensemble de tes structures

Donc tu déclares des KEY dans le code ABAL mais tu aurais aussi pu utiliser TODBC voir MODEXT pour faire cela, cela permet à CRITERIA de connaitre la structure TABULAIRE de ton fichier.

J'espère que cela t'aideras.

A++
Yves


PMEmail Poster
Top
ChV17
Posted: 17/03/16 10:00
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



Merci beaucoup Churlet pour ces explications.

This post has been edited by ChV17 on 17/03/16 10:02
PM
Top
Yul
Posted: 17/03/16 10:06
Quote Post


User
*

Group: Membre
Posts: 47
Member No.: 190
Joined: 03/02/03
Submissions: None Submitted
Downloads: 2



Bonjour,

Pour supprimer et recréer la couche multicritères (je pense que c'est ce que veut dire J-L par extension multicritères) :

- Assigner le fichier en MC
- Faire un Dfile : Ne détruit que la couche multicritères (MC) mais le fichier peut être exploité en SI
Donc plus d'interrogation avec des posit mais tout le reste fonctionne
- Faire un Cfile : Recrée la couche multicritère mais elles est "vide" à ce moment
- Faire un Key : Redéclare les rubriques du fichier
- Faire un Ckey : Recrée les rubriques du fichier
- Faire un Link : Redéclare les index MC du fichier
- Faire un Clink : Recrée les index MC du fichier

En supposant bien sur que la rubrique "EMBALLAG" ne soit pas utilisée dans le logiciel.

Il est intéressant de faire un outil qui liste let affiche es rubriques et les index multicritères pour voir si les fichiers sont corrects. Instructions lkey et llink

Cordialement
PM
Top
ChV17
Posted: 17/03/16 13:20
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



Merci Yul,

La rubrique n'est employée nulle part dans l’ensemble du programme.

Je vais me laisser le temps pour comprendre les modifications.
Je travaille sur une copie dans un serveur virtuel, donc pas de risques sur les fichiers actuels.
PM
Top
J-L Dutertre
Posted: 21/03/16 14:07
Quote Post


Mega User
***

Group: Membre
Posts: 110
Member No.: 48
Joined: 29/07/02
Submissions: None Submitted
Downloads: 2



Si la rubrique n'est pas utilisée en multicritères, alors il n'y a pas besoin de s'embêter avec.
PMUsers Website
Top
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

Topic Options Reply to this topicStart new topicStart Poll

 

webcron.org Get Firefox! prologue-community.org est monitoré par ikoula.fr Referenceur Gratuit www.prologue-community est mis en évidence sur internet grace à daubresse.fr
moteur de recherche - referencement
Conformément à l'article 34 de la loi "Informatique et Liberté" vous disposez d'un droit d'accès, de modification, de rectification et de suppression des données qui vous concernent.
Pour l'exercer, merci de nous contacter : CONTACT US

www.prologue-community.org n'est pas enregistré à la CNIL
www.prologue-community.org est hébergé sur visit.fr

www.prologue-community.org est indépendant de la société Prologue
Une grande partie des logiciels et outils cités sur www.prologue-community.org sont des produits et marques déposées par la société Prologue


MKPortal M1.1 Rc1 ©2003-2005 All rights reserved
Page generated in 0.01125 seconds with 2 queries