Insertion de ligne dans une table fichier

Posté par Anonyme le 12/11/2004 17:39:38
Bonjour,

je cherche à insérer une ligne dans une table fichier qui est parcourue dans
l'ordre de la cle primaire (Numéro auto)
ca fonctionne sur l'affichage du tableau mais pas dans le fichier HF car la ligne ajoutee est systematiquement en derniere position dans le fichier

j'ai essayé de faire 2 tableaux dynamiques :

1 pour la partie supérieure du tableau (au dessus de la ligne à insérer)
1 pour la partie inférieure du tableau (au dessous de la ligne à insérer)

j'efface mon fichier hyperfile et je le reconstruit en creant :

1°) reinscription tu tableau 1
2°)insertion ligne vide
3°) reinscription tableau2

Mais ca ne fonctionne pas, ya pleins de bugs et de tte facon la solution me
semble bien plus compliquée qu'elle ne doit l'être réellement
voici mon code :

============================================================================
===========

// session_acte = Numéro de l'acte en cours (filtre) cf : logiciel de
facturation
// g fait un hfiltre sur mon fichier HF pour récupérer les bonnes lignes de
ma facture
// table_item est a table contenant les lignes de facturation


PROCEDURE Insertion(NumLigne)
//Numligne = numéro de la ligne selectionnée avant laquelle jedois inserer
une ligne vide

Tableau1,Tableau2 sont des tableaux dynamiques de 0 par 5 chaînes

i est un entier = 0
//creation du tableau contenant les lignes AVANT la ligne d'insertion
POUR i = 1 A NumLigne - 1

Dimension(Tableau1,i,5)
Tableau1[i,1] = Table_Item.Num_Acte_Item
Tableau1[i,2] = Table_Item.Description_Item
Tableau1[i,3] = Table_Item.Qte_Item
Tableau1[i,4] = Table_Item.TVA_Item
Tableau1[i,5] = Table_Item.HT_Item
FIN

//creation du tableau contenant les lignes APRES la ligne d'insertion

POUR i = NumLigne A Table_Item..Occurrence

Dimension(Tableau2,i,5)
Tableau2[i,1] = Table_Item.Num_Acte_Item
Tableau2[i,2] = Table_Item.Description_Item
Tableau2[i,3] = Table_Item.Qte_Item
Tableau2[i,4] = Table_Item.TVA_Item
Tableau2[i,5] = Table_Item.HT_Item

//trace(Tableau2[i,1],Tableau2[i,2],Tableau2[i,3],Tableau2[i,4],Tableau2[i,5
])
FIN

//============================
//Mise à jour de la table
//============================

//suppression des enregistrements

HLitRecherchePremier(Item,Num_Acte_Item,session_acte)
TANTQUE HTrouve
HSupprime(Item)
HLitSuivant(Item)
FIN

//Partie supérieure
POUR i = 1 A TableauInfo(Tableau1,tiDimension)

Item.Num_Acte_Item = Tableau1[i,1]
Item.Description_Item = Tableau1[i,2]
Item.Qte_Item = Tableau1[i,3]
Item.TVA_Item = Tableau1[i,4]
Item.HT_Item = Tableau1[i,5]

HAjoute(Item)

FIN


//insertion de la ligne

TableSelectMoins(Table_Item)
TableInsèreLigne(Table_Item,Table_Item..Occurrence + 1)
TableSelectPlus(Table_Item,Table_Item..Occurrence+1)
Table_Item.Num_Acte_Item = session_acte
Table_Item.Description_Item = "test insertion" // verif de l'ériture de la
clé
TableEnregistre(Table_Item)

//Partie Inferieure

POUR i = 1 A TableauInfo(Tableau2,tiDimension)

Item.Num_Acte_Item = Tableau2[i,1]
Item.Description_Item = Tableau2[i,2]
Item.Qte_Item = Tableau2[i,3]
Item.TVA_Item = Tableau2[i,4]
Item.HT_Item = Tableau2[i,5]

HAjoute(Item)

FIN

TableAffiche(Table_Item,taCourantBandeau)
===================================================

Voila !!!

J'ai essayé de faire ca proprement , mais ca ne marche pas comme je voudrais

QUI A UNE SOLUTION ---SIMPLE--- ET ---FIABLE--- ?

Merci de votre aide !
Fred

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=12&topic_id=1463&post_id=6003