|
suppression dans base de donnée HP7 |
Iniciado por johann.riviere, 14,oct. 2004 14:54 - 6 respuestas |
| |
| | | |
|
| |
Publicado el 14,octubre 2004 - 14:54 |
bonjour,
j'ai un petit probleme pour une de mes application, en fait je ne sais pas comment faire pour supprimer deux données de la base de donnée... Je vous donne le code, si quelqu'un pourrais me dire pourquoi rien ne se passe lorsqu'il s'execute, ca a l'air de tourner en boucle sans rien faire.
montant est un monétaire libelle est un chaîne date est une chaîne resnumenr est un entier
HLitPremier(TXACH,BDC) TANTQUE PAS HEnDehors() montant = TXACH.MONTANT_A montant = -montant date = TXACH.DATE_A libelle=TXACH.LIBELLE_A resnumenr=HNumEnr(TXACH) HLitRecherche(TXACH,MONTANT_A,montant) SI HTrouve() ET date=TXACH.DATE_A ET libelle=TXACH.LIBELLE_A ALORS HSupprime(TXACH) HSupprime(TXACH,resnumenr) FIN HLitSuivant(TXACH,BDC) FIN
je vous remerci d'avance.
Johann. |
| |
| |
| | | |
|
| | |
| |
Publicado el 14,octubre 2004 - 15:36 |
Le fait que tu lises 2 fois le même fichier, tu es forcément dépositionné lorsque tu fais le hLitSuivant
Avant le HLitRecherche, fais un hSauvePosition puis un hRetourPosition avant de faire le hSupprime du premier enregistrement
Ensuite fais le hLitSuivant
Dis moi si ca marche mieux
Bye |
| |
| |
| | | |
|
| | |
| |
Publicado el 14,octubre 2004 - 16:26 |
Salut,
Le fait de lire deux fois ton fichier dans une même boucle a pour effet d'affoler le compteur du fichier (c'est valable dans tous les langages).
La solution consiste en la création d'une ou plusieurs varaibles correspondant au(x) critère(s) de tri de l'élément à effacer, de préférence en début de boucle.
Ca peut être long à l'exécution si le nombre d'enregistrements est élevé, mais ça marche.
bon courage. |
| |
| |
| | | |
|
| | |
| |
Publicado el 15,octubre 2004 - 00:48 |
Essais de relire ton enreg apres la suppression su premier, mais je pense que ton parcours de fichier sera completement faussé. Il faudrat certainement que tu sauve ta position en cours d eparcours pour revenir au bon endroit.
HLitPremier(TXACH,BDC) TANTQUE PAS HEnDehors() montant = TXACH.MONTANT_A montant = -montant date = TXACH.DATE_A libelle=TXACH.LIBELLE_A resnumenr=HNumEnr(TXACH) HLitRecherche(TXACH,MONTANT_A,montant) SI HTrouve() ET date=TXACH.DATE_A ET libelle=TXACH.LIBELLE_A ALORS HSupprime(TXACH) HLit(TXACH,resnumenr) HSupprime(TXACH) FIN HLitSuivant(TXACH,BDC) FIN
johann wrote:
bonjour,
j'ai un petit probleme pour une de mes application, en fait je ne sais pas comment faire pour supprimer deux données de la base de donnée... Je vous donne le code, si quelqu'un pourrais me dire pourquoi rien ne se passe lorsqu'il s'execute, ca a l'air de tourner en boucle sans rien faire.
montant est un monétaire libelle est un chaîne date est une chaîne resnumenr est un entier
HLitPremier(TXACH,BDC) TANTQUE PAS HEnDehors() montant = TXACH.MONTANT_A montant = -montant date = TXACH.DATE_A libelle=TXACH.LIBELLE_A resnumenr=HNumEnr(TXACH) HLitRecherche(TXACH,MONTANT_A,montant) SI HTrouve() ET date=TXACH.DATE_A ET libelle=TXACH.LIBELLE_A ALORS HSupprime(TXACH) HSupprime(TXACH,resnumenr) FIN HLitSuivant(TXACH,BDC) FIN
je vous remerci d'avance.
Johann. |
| |
| |
| | | |
|
| | |
| |
Publicado el 15,octubre 2004 - 11:32 |
je vous remerci, mais rien ne fonctionne la, rien n'est supprimé de ma base de donnée, je vous donnes le code maintenant tel qu'il est aprés les modif :
montant est un monétaire libelle est un chaîne date est une chaîne resnumenr est un entier
HLitPremier(TXACH,BDC) TANTQUE PAS HEnDehors() montant = TXACH.MONTANT_A montant = -montant date = TXACH.DATE_A libelle=TXACH.LIBELLE_A resnumenr=HSauvePosition(TXACH,BDC) HLitRecherche(TXACH,MONTANT_A,montant) SI HTrouve() ET date=TXACH.DATE_A ET libelle=TXACH.LIBELLE_A ALORS HSupprime(TXACH) HRetourPosition(resnumenr) HSupprime(TXACH) FIN HLitSuivant(TXACH,BDC) FIN
Voila, en esperant que quelqu'un pourra m'aider |
| |
| |
| | | |
|
| | |
| |
Publicado el 15,octubre 2004 - 18:55 |
bonjour,
il faut tester le cas où tu ne rentres pas dans ta condition du hTrouve pour faire un hRetourPosition dans ce cas là également
Bye |
| |
| |
| | | |
|
| | |
| |
Publicado el 18,octubre 2004 - 16:03 |
Merci a tous pour votre aide, j'ai enfin reussi a faire ce que je voulais, et ce grace a tous vos conseil, je depose le code au cas ou quelqu'un voudrais faire la meme chose ...
HLitPremier(TXACH,BDC) TANTQUE PAS HEnDehors() montant = TXACH.MONTANT_A montant = -montant date = TXACH.DATE_A libelle=TXACH.BDC resnumenr=HSauvePosition(TXACH,BDC) HLitRecherche(TXACH,MONTANT_A,montant) SI HTrouve() ET date=TXACH.DATE_A ET libelle=TXACH.BDC ALORS HSupprime(TXACH) croise=1 FIN HRetourPosition(resnumenr) SI croise = 1 ALORS HSupprime(TXACH) croise=0 FIN HLitSuivant(TXACH,BDC) FIN
il ne vous reste plus qu'a mettre les bon noms de fichier HP7 pour pouvoir l'utiliser.
encore merci.
Johann |
| |
| |
| | | |
|
| | | | |
| | |
|