REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
Un truc de fou! Je lis un fichier "projet_participants" contenant deux matricules. Je lis le fichier "personnel" à partir de ces matricules pour remplir une table. Il me trouve bien mes deux enreg "personnel" mais il me rempli toute la table avec seulement le dernier enreg de ce fichier. Why ?
Voilà mon code :

TableSupprimeTout(Table1)
HLitRecherchePremier(PROJET_PARTICIPANTS,IDPROJET_ENTETE,IDPROJET_ENTETE)

TANTQUE HTrouve(PROJET_PARTICIPANTS)
HLitRecherchePremier(PERSONNEL,MATRICULE,PROJET_PARTICIPANTS.MATRICULE)

SI HTrouve(PERSONNEL) ALORS
Employé_e = PERSONNEL.NOMPRENOM
T_horaire = PERSONNEL.TAUX_HORAIRE
SINON
Employé_e = "???????????????"
T_horaire = 0
FIN

TableAjouteLigne(Table1,Employé_e,T_horaire)
HLitSuivant(PROJET_PARTICIPANTS)
FIN

Contribution le : 19/12/2005 09:05

Edité par mbsl sur 19/12/2005 16:26:40
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Animateur WDF
Inscrit:
17/05/2004 14:21
Post(s): 382
Essayez

TableSupprimeTout(Table1)

HLitRecherchePremier(PROJET_PARTICIPANTS,IDPROJET_ENTETE,IDPROJET_ENTETE)

TANTQUE HTrouve(PROJET_PARTICIPANTS)

 HLitRecherchePremier(PERSONNEL,MATRICULE,PROJET_PARTICIPANTS.MATRICULE)

 SI HTrouve(PERSONNEL) ALORS
  Employé_e = PERSONNEL.NOMPRENOM
  T_horaire = PERSONNEL.TAUX_HORAIRE
 SINON
  Employé_e = "???????????????"
  T_horaire = 0 
 FIN

 TableAjouteLigne(Table1,Employé_e,T_horaire)

 HLitSuivant(PROJET_PARTICIPANTS,IDPROJET_ENTETE)

FIN




Voir à réindexer si le problème persiste

Contribution le : 19/12/2005 09:48
_________________
Mbsl
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
Merci de la réponse, mais après modification du code et réindexation, toujours le même problème! Toute la table est remplie avec le dernier enregistrement lu!

Contribution le : 19/12/2005 10:09
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
je viens de refaire un essai en vidant complètement mes fichiers. J'ai essayé en mettant plus de deux enregistrements dans "PERSONNEL", et ce qui se passe, c'est qu'il m'écrase toujours la 1ère ligne de la table avec le dernier enregistrement qu'il lit.
Ainsi avec 5 enregistrements j'obtiens :
RAOUL 30 <-.
DUPOND 15 |
HENRI 20 |
DURAND 25 |
RAOUL 30 <-'

alors que le premier enregistrement est bien lu. Vraiment bizarre!!

Contribution le : 19/12/2005 10:42
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Animateur WDF
Inscrit:
17/05/2004 14:21
Post(s): 382
Dans ce cas passer votre code au débogueur.

Vérifier bien que votre table est de type mémoire.

Vérifier que vous passez correctement dans chaque boucle et surtout vérifier que PROJET_PARTICIPANTS.MATRICULE n'est pas identique sur chaque boucle.

Contribution le : 19/12/2005 10:47
_________________
Mbsl
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
Je craque!!!
Tout est correct. peut être le problème est-il dans mon code d'appel à l'initialisation de la fenêtre ?

SI HNbEnr(PROJET_ENTETE) <>0 ALORS
HLitPremier(PROJET_ENTETE)
FichierVersEcran()
Rempl_table()
TableAffiche(Table1)
FIN

Rempl_table() est la procédure décrite au début.

Franchement je ne vois pas. Il me lit tout correctement mais me refile le dernier enregistrement lu au début de la table.

Contribution le : 19/12/2005 11:35
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE

Inscrit:
19/11/2002 12:20
Post(s): 390
Citation :

Raf1 a écrit:
Je craque!!!
Tout est correct. peut être le problème est-il dans mon code d'appel à l'initialisation de la fenêtre ?

SI HNbEnr(PROJET_ENTETE) <>0 ALORS
HLitPremier(PROJET_ENTETE)
FichierVersEcran()
Rempl_table()
TableAffiche(Table1)
FIN

Rempl_table() est la procédure décrite au début.

Franchement je ne vois pas. Il me lit tout correctement mais me refile le dernier enregistrement lu au début de la table.


Euh une ou deux questions:
1°) Je suppose que Table1 est une table mémoire?
2°) Je ne crois pas que TableAffiche soit nécessaire pour une table mémoire ;)

Contribution le : 19/12/2005 11:40
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
effectivement tu as raison!
Je l'ai viré, mais j'ai toujours mon problème quand même!! Glup!

Contribution le : 19/12/2005 11:42
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Animateur WDF
Inscrit:
05/06/2003 14:23
De Québec
Post(s): 511
Salut,

A prioris quand j'ai lu ton code il y a quelque chose qui manque...

Je vois que tu lis un premier fichier qui s'appelle PROJET_ENTETE.

Quand tu affiches ta table tu fais un HLitRecherchePremier(PROJET_PARTICIPANTS,IDPROJET_ENTETE,IDPROJET_ENTETE)

la je me dis il y a un probleme ou est charge IDPROJET_ENTETE ??? ...

met plutot comme ceci :

HLitRecherchePremier(PROJET_PARTICIPANTS,IDPROJET_ENTETE,PROJET_ENTETE.IDPROJET_ENTETE)

pour etre sur d'avoir le bon identifiant sinon tu risques afficher des enregistrements n'appartenant pas au projet que tu viens de lire d'ou l'explication de certaines lignes qui apparraissent en double

a+++

Contribution le : 19/12/2005 14:37
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
Ca ne change toujours rien! Le IDPROJET_ENTETE je le récupère pendant l'init. Ce n'est pas la cause du problème.

Je m'arrache les cheveux avec ce truc là!

J'ai refait la même fenetre en RAD et ça marche donc j'ai un problème de code!!

Y'a-t-il au moins un moyen de vérifier le contenu de la table pendant le déboguage ? Je ne vois pas quand est ce qu'il peut me réécrire cet enregistrement vu que toutes les fois qu(il passe sur le tableajouteligne le nom affiché est correct!!

Un truc de ouf!!

Contribution le : 19/12/2005 15:01
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE

Inscrit:
19/11/2002 12:20
Post(s): 390
Citation :

Raf1 a écrit:
Ca ne change toujours rien! Le IDPROJET_ENTETE je le récupère pendant l'init. Ce n'est pas la cause du problème.

Je m'arrache les cheveux avec ce truc là!

J'ai refait la même fenetre en RAD et ça marche donc j'ai un problème de code!!

Y'a-t-il au moins un moyen de vérifier le contenu de la table pendant le déboguage ? Je ne vois pas quand est ce qu'il peut me réécrire cet enregistrement vu que toutes les fois qu(il passe sur le tableajouteligne le nom affiché est correct!!

Un truc de ouf!!


Avant de faire le TableAjouteLigne, fais un Trace() pour afficher tes données dans la fenêtre de trace, tu verras si tu as un soucis dans le parcours du fichier (un seul record lu) ou dans la table...

Contribution le : 19/12/2005 15:14
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Animateur WDF
Inscrit:
05/06/2003 14:23
De Québec
Post(s): 511
Salut,

Pendant le deboguage tu peux suivre au pas a pas ce que fait ta procedure rempl_table et verifier que le tableajouteligne se fait bien et verifier en meme temps les donnees qui lui sont envoyes.

Si en sortie de ta boucle, tout parrait normal continue en mode debug et peut etre qu'il y a un autre traitement qui se ferait ailleur. verifier que ta table est bien une table memoire aussi.

a+++

Contribution le : 19/12/2005 15:19
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
Merci pour les infos pour le trace().
Après examen, voilà ce qui se passe :
A la lecture du 1er enregistrement la zone Employé (après le HTROUVE(PERSONNEL)) est bien trouvée avec la bonne valeur par contre cette valeur dans tableajoute ligne est à blanc (Elle n'est donc pas créée dans la table qui a pour valeur -1 à ce moment là). La table est bien une table mémoire.

TableSupprimeTout(Table1)
HLitRecherchePremier(PROJET_PARTICIPANTS,IDPROJET_ENTETE,IDPROJET_ENTETE)

TANTQUE HTrouve(PROJET_PARTICIPANTS)

HLitRecherchePremier(PERSONNEL,MATRICULE,PROJET_PARTICIPANTS.MATRICULE)

SI HTrouve(PERSONNEL) ALORS
Employé = PERSONNEL.NOMPRENOM // <<< ici correct
T_horaire = PERSONNEL.TAUX_HORAIRE
SINON
Employé = "???????????????"
T_horaire = 0
FIN

TableAjouteLigne(Table1, Employé, T_horaire, D_formation, F_formation, Nbre_heures, Frais) // ici à blanc
Trace(Table1.Employé)

HLitSuivant(PROJET_PARTICIPANTS,IDPROJET_ENTETE)

Contribution le : 19/12/2005 15:40
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Animateur WDF
Inscrit:
17/05/2004 14:21
Post(s): 382

TableSupprimeTout(Table1)
HLitRecherchePremier(PROJET_PARTICIPANTS,IDPROJET_ENTETE,IDPROJET_ENTETE)

TANTQUE HTrouve(PROJET_PARTICIPANTS)

HLitRecherchePremier(PERSONNEL,MATRICULE,PROJET_PARTICIPANTS.MATRICULE)

SI HTrouve(PERSONNEL) ALORS
Employé = PERSONNEL.NOMPRENOM // <<< ici correct
T_horaire = PERSONNEL.TAUX_HORAIRE
SINON
Employé = "???????????????"
T_horaire = 0
FIN

Trace("Avant : " + Employé)
TableAjouteLigne(Table1, Employé, T_horaire, D_formation, F_formation, Nbre_heures, Frais) // ici à blanc
Trace("Après : " + Table1.Employé)

HLitSuivant(PROJET_PARTICIPANTS,IDPROJET_ENTETE)



Vérifier la trace sinon essayer de renommer votre variable chaine "Employé" pour que la syntaxe soit différente avec le nom de votre colonne. Vérifier bien que la colonne Employé est en première position...

Contribution le : 19/12/2005 15:49
_________________
Mbsl
Créer un fichier PDF de la contribution Imprimer


Re: REMPLISSAGE D'UNE TABLE
Stagiaire WDF
Inscrit:
04/11/2005 11:11
Post(s): 34
OUUUUAAAAAIIIIIIIII !!!!!!!
Félicitations!! C'était ça !!!
Passer par des variables et non pas par le libellé de la table!!

rub01 est une chaîne
rub02 est un numérique

TableSupprimeTout(Table1)
HLitRecherchePremier(PROJET_PARTICIPANTS,IDPROJET_ENTETE,IDPROJET_ENTETE)

TANTQUE HTrouve(PROJET_PARTICIPANTS)
HLitRecherchePremier(PERSONNEL,MATRICULE,PROJET_PARTICIPANTS.MATRICULE)

SI HTrouve(PERSONNEL) ALORS
rub01 = PERSONNEL.NOMPRENOM
rub02 = PERSONNEL.TAUX_HORAIRE
SINON
rub01 = "???????????????"
rub02 = 0
FIN

TableAjouteLigne(Table1, rub01, rub02)

HLitSuivant(PROJET_PARTICIPANTS,IDPROJET_ENTETE)

FIN


Et ben!!!! Mille fois merci parce que là vraiment!! J'y perdais le latin que je n'ai jamais appris!!!

Contribution le : 19/12/2005 16:01
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2