PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Buffer utilisé par une requête
Buffer utilisé par une requête
Iniciado por Sauveur CONSALVI, 20,abr. 2020 10:43 - 4 respuestas
Miembro registrado
402 mensajes
Publicado el 20,abril 2020 - 10:43
Bonjour,
Lors de la mise à jour d'un enregistrement, je doit en modifier un autre

Exemple
Je lit l'enregistrement 15
Je modifie l'enregistrement 16
Je continue le traitement sur l'enregistrement 15, puis je le met à jour

Pour ne pas "perdre" le buffer de l'enregistrement 15, la modification du 16 se fait par une requête
gbOK = HExécuteRequête(REQ_PayeurVrai,hRequêteDéfaut+hAvecTransaction+hVérifieDoublon+hVérifieIntégrité,SAI_PayeurRefMembre) // Passage a payeur


La requête
UPDATE
tabMembre
SET
RefMembre = {ParamRefMembre},
PayeurEtat = 1
WHERE
tabMembre.RefMembre = {ParamRefMembre}


A ce moment, je m’aperçoit que je ne "suis plus sur l'enregistrement " 15, mais sur celui du 16
Du coup, si je lance la modification, j'ai une erreur d'intégrité

J'effectue la modification via une requête, pensant que ce serait un buffer différent ...
Qu'elle est mon erreur ?
Cordialement
SC

--
Cordialement
SC
Miembro registrado
1.640 mensajes
Publicado el 20,abril 2020 - 10:59
Hello

Normalement oui ca devrait fonctionner. Sauf qu'il nous manque une partie du code pour comprendre.
Par contre la requete update ne devrait pas marcher dans l'etat actuel :

REQ_PayeurVrai,hRequêteDéfaut+hAvecTransaction+hVérifieDoublon+hVérifieIntégrité,SAI_PayeurRefMembre
C'est une requete de type update donc il faut remplacer hRequêteDéfaut par hmodifieFichier
ET on dirait bien qu'il manque un parametre ?
Miembro registrado
4.362 mensajes
Publicado el 20,abril 2020 - 11:02
Bonjour,
Ton pointeur se place sur le tuple sur lequel tu travailles, en l'occurence l'enregistrement 16.
-Solution 1 : Utiliser une variable du type enregistrement
-Solution 2 : Travailler avec HSauvePosition

--
Il y a peut être plus simple, mais, ça tourne
Publicado el 20,abril 2020 - 11:25
bonjour

ajouter dans le where de l'update l'id unique du fichier et idem pour se repositionner sur l'enregistrement suivant utiliser un where avec l'id unique de l'enregistrement suivant

ne pas faire de hsauveposition et de hretourposition cela ralentit fortement les traitements, n'utiliser que des requêtes en général

bon dev
Miembro registrado
402 mensajes
Publicado el 21,abril 2020 - 08:24
Bonjour,
Merci bien tout le monde
Ma requête a surement besoin d'être corrigée Je l'ai fait

Mon problème vient est de ce que je croyait qu'atteindre un fichier par des requêtes différentes était comme si l'on lisait des fichiers différents
Présenté d'une manière plus simpliste, il y avait un buffer par requête

Encore merci
Cordialement
SC

--
Cordialement
SC