Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > AS/400
AS/400 Le Forum d'entraide sur IBM AS/400 - iSeries. RPG.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2008, 10h48   #1
Membre du Club
 
Inscription : décembre 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 95
Points : 44
Points : 44
Par défaut KLIST problèmes d'utilisations

Bonjour,

J'ai une question a propos des KLIST.
Actuellement j'ai un programme avec un Klist composé de 5 clés.
Un des cas de mon programme effectue une recherche sur une seule clé. Je renseigne donc la donnée dans la clé, je met les autres a *Blanks. Mais quand je lance mon programme, je n'ai aucunes données. (si j'utilise un logique avec juste cette clé j'ai des infos)
Je me demande si le *Blanks ne cherche pas les clé qui sont vide, du coup existe t-il une alternative ?
L'idée étant de prendre toutes les valeurs de clé, sauf pour celle qui est rensignée.

J'espere avoir été assez clair.

Merci de votre aide.
Bertrand
BBert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h04   #2
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Utilise ton KLIST qu'avec une seule clé et utilise SETLL puis une boucle avec un READE pour lire tes données au lieu d'un CHAIN.
Sinon, effectivement il va rechercher à la vleur exacte, *blank étant une valeur comme une autre.
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h09   #3
Membre du Club
 
Inscription : décembre 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 95
Points : 44
Points : 44
Merci

Je teste ça...
BBert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 11h23   #4
Membre du Club
 
Inscription : décembre 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 95
Points : 44
Points : 44
Merci !!!

Ca ne fait pas encore tout ce que je veux, mais je suis sur la bonne voie
BBert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 15h31   #5
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Explique exactement ton prb :

- Exemples de qq données
- Clés du fichier
- Ce que tu veux obtenir

qqun te trouveras ta solution !
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 16h33   #6
Membre du Club
 
Inscription : décembre 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 95
Points : 44
Points : 44
Le problème est le suivant :

J'ai un écran de sélection qui me permet de choisir les infos suivantes :

Date facture du : ________ date facture au : __________
client facturé de : _________ client facturé au : ___________

etc...

Ce que je veux, c'est si par exemple la date de facture du et date de facture au sont selectionnées, je puisse chargé mon sous fichier avec les informations.
J'ai donc fait un logique sur mon fichier avec 5 clé.
Ensuite dans mon prog je fait un Klist :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
      *  Klist sur fichier edi900l3
     C     kedi1         klist
     C                   kfld                    emsg
     C                   kfld                    nfac
     C                   kfld                    dfac
     C                   kfld                    ncli
     C                   kfld                    edid
     C     kedi2         klist
     C                   kfld                    emsg
     C     kedi3         klist
     C                   kfld                    nfac
J'ai donc essayé comme tu me l'avais conseillé de séparer les cles, exemple de kedi2 et kedi 3.
Par contre la kedi3 ne fonctionne pas, il me dit que la longeur ne correspond pas et attend une longueur du type de emsg (6), les autres sont a 8.

Je ne suis pas sur de prendre le problème dans le bon sens;

Si vous avez des conseils, je suis ouvert !!!

Merci de votre aide

Bertrand
BBert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 17h42   #7
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Il faut que tes KLISTs correspondent aux clés de ton logique DANS LE MEME ORDRE qu'elles sont définies dans le logique.
Tu ne peux pas non plus accéder directement à la clé NFAC si tu mets la valeur de EMSG à blanc dans ta KLIST KEDI1. Pour accéder par clé à NFAC avec ta KLIST KEDI3, il te faut d'abord un logique indexé sur K NFAC que tu déclares ensuite dans ton programme.

Avec un logique indexé sur EMSG, NFAC, DFAC, NCLI et EDID
Tu peux accéder au logique avec les KLISTs suivantes et aucune autre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
     C   klist1         klist
     C                   kfld                    emsg
     C                   kfld                    nfac
     C                   kfld                    dfac
     C                   kfld                    ncli
     C                   kfld                    edid
     C   klist2         klist
     C                   kfld                    emsg
     C                   kfld                    nfac
     C                   kfld                    dfac
     C                   kfld                    ncli
     C   klist3         klist
     C                   kfld                    emsg
     C                   kfld                    nfac
     C                   kfld                    dfac
     C   klist4         klist
     C                   kfld                    emsg
     C                   kfld                    nfac
     C   klist5         klist
     C                   kfld                    emsg


Tu ne peux PAS faire par exemple
Code :
1
2
     C   klist1         klist
     C                   kfld                    dfac
Une clé secondaire ne peut pas être déclarée seule sur une KLIST et doit toujours être précédée de(s) clés(s) qui la précède(nt).

Est-ce limpide maintenant ?
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 17h50   #8
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
C'est typiquement un cas ou SQL vient au secours.
Tu ne pourras pas créer autant de logiques qu'il y a de combinaisons possibles, car surement à l'avenir, tu risques d'ajouter des critères des sélection supplémentaires à ton écran, le nombre de logiques va être exponentiel.

C'est le moment idéal qui se présente pour charger ton sous-fichier à partir d'un SQL Dynamique.

Tu trouveras nombre d'exemples sur le net, sinon on peut de donner des exemples.
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 18h55   #9
Membre du Club
 
Inscription : décembre 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 95
Points : 44
Points : 44
Je comprend mieux maintenant les messages d'erreurs...

Je vais essayer le SQL, j'ai deja vu quelques exemples...

merci de votre aide !!!
BBert est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h58.


 
 
 
 
Partenaires

Hébergement Web