Insertion de ligne dans une table fichier
Anonyme
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

Contribution le : 12/11/2004 17:39
Créer un fichier PDF de la contribution Imprimer


Re: Insertion de ligne dans une table fichier
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour Fred,

Je n'ai même pas lu ton post jusqu'à la fin tellement le début me parraît absurde comme procédé.

Bien que je comprenne que tu veuilles Insérer une ligne il faut savoir que le fichier ne peut et ne doit dans cette idée refleter ce procéder, surtout sur une rubrique Id Auto.

Une clé est affecté en incrémentation automatique à chaque enregistrement ajouté au fichier.
Cette enregistrement ne s'insère pas dans le fichier,mais s'ajoute.

Pour afficher des données dans un ordre spécifique il faut créer un index sur une rubrique du fichier

Dans votre cas NumLigne

Puisque vous savez quelle n° deligne vous désirez insérezil vous suffit simplement de parcourir apès avoir filtré les enregistrements sur Num_Acte_Item avec comme clé le n° de ligne

Idée de code
PROCEDURE Insertion(NumLigne)
Ind est un entier

HLitDernier(Item,Num_Acte_Item)
TANTQUE pas HEndehors()
 Si Item.Num_Acte_Item = NumLigne ALORS
  //Ajout de l'enregistrement
  RETOUR  // On sort de la procédure
 FIN
 Ind = Item.Num_Acte_Item  
 Item.Num_Acte_Item = ind+1  // Pour le décalage
 HModifie(Item)
 HLitPrecedent(Item,Num_ActeItem)
FIN

Contribution le : 12/11/2004 21:44
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
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