PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Mise à jour multiple de table
Mise à jour multiple de table
Débuté par jp.bloch, 14 fév. 2006 10:08 - 3 réponses
Posté le 14 février 2006 - 10:08
J'ai une table alimentée par une requête en modification et un bouton qui traite les lignes sélectionnées.
Or seule la 1ère ligne de ma table est mise à jour dans le fichier.
Merci de votre aide.
Jean-Pierre

// Initialisation de Table
SI PAS HExécuteRequête(Requête_TB_RGLT_SELECT_BORDEREAU, hRequêteDéfaut+hModifieFichier) ALORS
Erreur("Erreur d’initialisation de la requête",HErreurInfo())
FIN
----------------------------
// Bouton
i est un entier
nNbSelectionne est un entier = TableSelectOccurrence(Table)
SI nNbSelectionne = 0 ALORS
Info("Aucun Contact sélectionné.")
SINON
POUR i = nNbSelectionne A 1 PAS -1
nResSelect est un entier = TableSelect(Table,i)
// Encaissement
Table.ID_BORDEREAU[nResSelect] = ID_BORDEREAU
TableEnregistre(Table)
TableSelectMoins(Table,nResSelect)
FIN
FIN
// Raffraichit la table
TableAffiche(Table,taDébut)
Posté le 14 février 2006 - 16:55
Bonjour,

J'ai une table alimentée par une requête en modification et un bouton
qui traite les lignes sélectionnées. Or seule la 1ère ligne de ma
table est mise à jour dans le fichier.
Merci de votre aide.
Jean-Pierre

// Initialisation de Table
SI PAS HExécuteRequête(Requête_TB_RGLT_SELECT_BORDEREAU,
hRequêteDéfaut+hModifieFichier) ALORS Erreur("Erreur d'initialisation
de la requête",HErreurInfo())
FIN
----------------------------
// Bouton
i est un entier
nNbSelectionne est un entier = TableSelectOccurrence(Table)
SI nNbSelectionne = 0 ALORS
Info("Aucun Contact sélectionné.")
SINON
POUR i = nNbSelectionne A 1 PAS -1
nResSelect est un entier = TableSelect(Table,i)
// Encaissement
Table.ID_BORDEREAU[nResSelect] = ID_BORDEREAU
TableEnregistre(Table)
TableSelectMoins(Table,nResSelect)
FIN
FIN
// Raffraichit la table
TableAffiche(Table,taDébut)


Voici ce que je ferais:
POUR i = 1 à nNbSelectionne
nResSelect est un entier = TableSelect(Table,1)
// Encaissement
Table.ID_BORDEREAU[nResSelect] = ID_BORDEREAU
TableEnregistre(Table)
TableSelectMoins(Table,1)
FIN

--
Erick Bavut, Fiduciaire informatique
erick.bavut@[nospam]lafidu.com

* enlevez [nospam] pour m'écrire directement
Posté le 14 février 2006 - 17:05
Voici ce que je ferais:
POUR i = 1 à nNbSelectionne
nResSelect est un entier = TableSelect(Table,1)
// Encaissement
Table.ID_BORDEREAU[nResSelect] = ID_BORDEREAU
TableEnregistre(Table)
TableSelectMoins(Table,nResSelect ) <============ l'erreur était là
FIN

--
Erick Bavut, Fiduciaire informatique
erick.bavut@[nospam]lafidu.com

* enlevez [nospam] pour m'écrire directement
Posté le 14 février 2006 - 18:45
Voici ce que je ferais:
POUR i = 1 à nNbSelectionne
nResSelect est un entier = TableSelect(Table,1) <============ ça marche ça ?
// Encaissement
Table.ID_BORDEREAU[nResSelect] = ID_BORDEREAU
TableEnregistre(Table)
TableSelectMoins(Table,nResSelect ) <============ l'erreur était là
FIN

La seule différence que je vois avec mon code c'est que tu parcours la sélection en croissant au lieu de décroissant.
En pratique, je l'avais testé mais il sautait une ligne sur 2.
La technique "en décroissant" est plutôt pour des suppressions.
Toujours est-il que ni l'une, ni l'autre ne fonctionne.

J'ai trouvé cela dans l'aide (TableEnregistre) :
"Dans le cas d'une table multi-sélections, seul le dernier enregistrement sélectionné est modifié (l'enregistrement correspondant à la dernière ligne en cours)."

.....