|
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
|
|
|
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
|
|
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
|
|
|
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
|
|
|
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
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
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
|
|
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
|
|
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.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|