|
[WD8 URGENT] Insertion ligne dans table fichier |
Iniciado por netmaster2, 12,nov. 2004 18:45 - 3 respuestas |
| |
| | | |
|
| |
Publicado el 12,noviembre 2004 - 18:45 |
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 |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,noviembre 2004 - 19:22 |
Bonjour,
voici le code qui permet d'insérer une ligne dans une table fichier "TABLE" qui contient les legnes d'une facture avec une clé sur numéro de ligne "LG_LIG" //début code
LOCAL n est un entier=0 // ne fait rien si aucun enregistrement sélectionné dans la table fichier "TABLE" liée aux lignes de factures avec une clé sur numéro de ligne de facture SI TableSelect(TABLE)=-1 ALORS Info("Sélectionner d'abord la ligne ou il faut insérer !") RETOUR FIN // Si c'est la ligne de saisie/sélection, on ne peut pas la supprimer SI TableSelect(TABLE)>TableOccurrence(TABLE) ALORS Info("La ligne sélectionnée permet la saisie directe dans la table","Cette ligne ne peut être modifiée") RETOUR FIN // rafraichissement de la table avant la modification // dans le cas où une modification à été faite sur un autre poste TableAffiche(TABLE,taCourantBandeau) n=TableSelect(TABLE) SAV_LIG=LG_LIG // LG_LIG est lié à la rubrique LG.LG_LIG du fichier lignes des factures qui est la clé qui contient le numéro de la ligne TableSelectPlus(TABLE,TableOccurrence(TABLE)) TANTQUE TableSelect(TABLE)>=n SI LG_LIG>"0001" ALORS LG_LIG=NumériqueVersChaine(Val(LG_LIG)+1,"04d") TableEnregistre(TABLE) TableSelectPlus(TABLE,TableSelect(TABLE)-1) SINON LG_LIG=NumériqueVersChaine(Val(LG_LIG)+1,"04d") TableEnregistre(TABLE) SORTIR FIN FIN TableInsèreLigne(TABLE,n,SAV_LIG) TableEnregistre(TABLE) // rafraichissement de la table TableSelectPlus(TABLE,n) RepriseSaisie(AR_CODE)
//fin code
Bon courage
"Fred.S" <netmaster2@wanadoo.fr> a écrit dans le message de news:4194def2$1@news.pcsoft.fr...
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
|
| |
| |
| | | |
|
| | |
| |
Publicado el 12,noviembre 2004 - 22:11 |
Je ne sais pas ce que tu veux faire, mais l'insertion ne veut pas dire grand chose. Tu dois ajouter ton enreg, toujours en fin de fichier. Ce qui compte ensuite c'est la rubrique de parcours utilisé.
Antoine
Fred.S wrote:
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 |
| |
| |
| | | |
|
| | |
| |
Publicado el 13,noviembre 2004 - 01:04 |
Bonjour,
D'abord puisque la clé est auto tu peux normalement pas la gérer! Cela dit je pense qu'en desactivant temporairement la gestion de l'id auto tu peux arriver a decaler tous les les id et faire un trou pour inserer ta ligne!
Bon sinon heureusement il y a pour moi une solution plus simple tu dois rajouter une cle avec doublon ou même unique dans ta table et le gérer comme index d'affichage et cl" de parcours et la tu t'amuses a decaler tous les index pour rajouter ta ligne en premier, pas terrible mais ça marche. Sinon tu peux créer une table annexe contenant uniquement les identifiants dans l'ordre que tu veux les afficher pour inserer en premier tu rajoutes une ligne (c.a.d à la fin) et tu y colles le 1er id, puis ton id à ajouter tu le mets en première que tu modifie. Pour l'affichage t'as plus qu'a rajouter un order by tblordre.id dans ta requête en modifiant les clauses select et from.
En espérant que cela puisse t'aider.
Guillaume |
| |
| |
| | | |
|
| | | | |
| | |
|