|
| Inicio → WINDEV 2025 → Champs table mémoire (par programmation) enregistrement des données modifiées |
| Champs table mémoire (par programmation) enregistrement des données modifiées |
| Iniciado por JVE, 23,ene. 2020 11:17 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 48 mensajes |
|
| Publicado el 23,enero 2020 - 11:17 |
Bonjour
Je rempli un champs table à l'aide d'une requête en validant sur un bouton (l'utilisateur à la possibilité de faire une recherches sur plusieurs parametre) :
SI HExécuteRequête(REQ_CoutMAJ)=Vrai ET HNbEnr(REQ_CoutMAJ)>0 ALORS POUR TOUT REQ_CoutMAJ TableAjouteLigne(TABLE_CoutMAJ, REQ_CoutMAJ.NumSection,REQ_CoutMAJ.NumItem,REQ_CoutMAJ.NumNAF,REQ_CoutMAJ.SectionCout,REQ_CoutMAJ.CoutBudget,REQ_CoutMAJ.CoutEngage,REQ_CoutMAJ.CoutRealise,REQ_CoutMAJ.CoutRestant,REQ_CoutMAJ.DateModif) FIN SINON Info("Pas de Données ou N° Projet à saisir") FIN Ensuite l'utilisateur a la possibilité de modifier les valeurs dans une colonne en validant sur un bouton. j est un entier =0 SI OuiNon("Voulez enregistrer les données saisies?") ALORS POUR i=1 À TableOccurrence(TABLE_CoutMAJ) HLitRecherchePremier(INDICATEUR_BUDGET,NumNAF,TABLE_CoutMAJ.COL_NumNAF[i]) HLitRecherchePremier(INDICATEUR_BUDGET,DateModif,TABLE_CoutMAJ.COL_DateModif[i]) SI TABLE_CoutMAJ.COL_CoutRestant[i]<>INDICATEUR_BUDGET.CoutRestant ALORS INDICATEUR_BUDGET.CoutRestant=TABLE_CoutMAJ.COL_CoutRestant[i] j+=1 FIN FIN Info("Mise à jour terminée.",j+" valeurs ont été traitées sur les "+TableOccurrence(TABLE_CoutMAJ)+" lignes du tableau.") SINON RETOUR FIN
Je n'arrive pas à trouver ce qui coince. Les enregistrements ne sont pas mis à jour dans le fichier de la BDD.
Merci pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 491 mensajes |
|
| Publicado el 23,enero 2020 - 11:24 |
Bonjour
Ne vous manque t'il pas un ecranversfichier et Henregistre ?
Cordialement
DG |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 23,enero 2020 - 11:31 |
Bonjour, Dans un premier temps, tu fais 2 recherches consécutives sur ta table INDICATEUR_BUDGET la première est écrasée par la 2°, si tu veux faire une recherche sur 2 critères il faut soit passer par une requête, soit passer par une clé composée.
Que fait tu si ton HLitRecherchePremier ne renvoie rien ou lève une erreur ? HLitRecherchePremier recherche le premier enregistrement remplissant la condition, que faire s'il y en a plusieurs ? L'enregistrement concerné est peut être dans les enregistrement suivant ? Je n'ai pas regardé la suite du code, mais c'est déjà bloquant.
-- Il y a peut être plus simple, mais, ça tourneMensaje modificado, 23,enero 2020 - 11:41 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 48 mensajes |
|
| Publicado el 31,enero 2020 - 14:14 |
Bonjour Merci. J'ai corrigé la double recherche en rajoutant dans la table (remplie par requête l'identifiant unique du fichier) et le fait que le HLitRecherchePremier ne renvoie qu'un seul enregistrement. Et rajouter le HEnregistre
j est un entier =0 SI OuiNon("Voulez enregistrer les données saisies?") ALORS POUR i=1 À TableOccurrence(TABLE_CoutMAJ) HLitRecherchePremier(INDICATEUR_BUDGET,IDINDICATEUR_BUDGET,TABLE_CoutMAJ.COL_ID[i]) SI TABLE_CoutMAJ.COL_CoutRestant[i]<>INDICATEUR_BUDGET.CoutRestant ALORS INDICATEUR_BUDGET.CoutRestant=TABLE_CoutMAJ.COL_CoutRestant[i] j+=1 HEnregistre(INDICATEUR_BUDGET) FIN FIN Info("Mise à jour terminée.",j+" valeurs ont été traitées sur les "+TableOccurrence(TABLE_CoutMAJ)+" lignes du tableau.") SINON RETOUR FIN |
| |
| |
| | | |
|
| | | | |
| | |
|