OVH Cloud OVH Cloud

Rafraichir une table

2 réponses
Avatar
Marco
Bonjour,

Dans tout mon projet, j'utilise des tables fichier chargées depuis une
requete.

Prenons par exemple le fichier CLIENTS.
Je double-clique sur un client, la fiche de ce dernier s'ouvre. J'effectue
les modifications de ce client. Quand je ferme la fiche, je réactualise la
table dans le code PRISE DE FOCUS de la fenetre contenant la table :

HExecuteRequete(NomReq,Hrequetedefaut)
TableAffiche(MaTable,TaCourantBandeau)


Le problème c'est que la ligne sélectionnée change. Autrement dit, à chaque
fois, l'utilisateur doit rechercher la ligne sur laquelle il était
positionné avant d'ouvrir la fiche client.

Ma question est donc de savoir comment éviter cet écueil ???

Merci de votre réponse.

2 réponses

Avatar
Fredo MT
Marco a écrit :
Bonjour,

Dans tout mon projet, j'utilise des tables fichier chargées depuis une
requete.

Prenons par exemple le fichier CLIENTS.
Je double-clique sur un client, la fiche de ce dernier s'ouvre. J'effectue
les modifications de ce client. Quand je ferme la fiche, je réactualise la
table dans le code PRISE DE FOCUS de la fenetre contenant la table :

HExecuteRequete(NomReq,Hrequetedefaut)
TableAffiche(MaTable,TaCourantBandeau)


Le problème c'est que la ligne sélectionnée change. Autrement dit, à chaque
fois, l'utilisateur doit rechercher la ligne sur laquelle il était
positionné avant d'ouvrir la fiche client.

Ma question est donc de savoir comment éviter cet écueil ???

Merci de votre réponse.





Bonjour,

Pour être plus propre au niveau de la réinitialisation de ton tableau je
ferai comme ça :
Lorsque tu doubles clique sur la fiche pour la modifier et que tu ouvres
la fenêtre tu mets en paramètre d'ouverture l'identifiant du client.

S'il y a eu modif dans la fiche lorsque tu fermes ta fenêtre tu la ferme
avec comme paramètre de fermeture l'identifiant de ton client que tu
viens de modifier ou 0 si tu n'as rien modifier. Si 0 alors pas de
réinitialisation, si autre tu cherches dans ton tableau l'identifiant
que tu étais en train de modifier et tu te positionnes dessus.

Exemple de code :

ent_Id_Client est entier = Ouvre(MODIF_CLIENT,TBM_CLIENT.COL_ID_CLIENT)
SI ent_Id_Client <> 0 alors
ExecuteTraitement(TBM_CLIENT,trtInit)
ent_Res est entier =
TableCherche(TBM_CLIENT.COL_ID_CLIENT,ent_Id_Client,Vrai)
SI ent_Res <> -1 ALORS
TableSelectPlus(TBM_CLIENT,ent_Res)
Fin

FIN

// Code dans ta fenêtre Windev MODIF_CLIENT
// Déclarations Globales
PROCEDURE MODIF_CLIENT (ent_IDClient)

// Code Validation
--> Traitement
Ferme(MODIF_CLIENT,ent_IDClient)

// Code Annulation ou Fermeture sans modif
Ferme(MODIF_CLIENT,0)

En espérant t'avoir aidé.
Avatar
Marco
Effectivitement ta solution est intéressante.
Je vais la mettre en place...

Merci ;)

"Fredo MT" a écrit dans le message de news:
452cc3ed$0$30355$
Marco a écrit :
Bonjour,

Dans tout mon projet, j'utilise des tables fichier chargées depuis une
requete.

Prenons par exemple le fichier CLIENTS.
Je double-clique sur un client, la fiche de ce dernier s'ouvre.
J'effectue les modifications de ce client. Quand je ferme la fiche, je
réactualise la table dans le code PRISE DE FOCUS de la fenetre contenant
la table :

HExecuteRequete(NomReq,Hrequetedefaut)
TableAffiche(MaTable,TaCourantBandeau)


Le problème c'est que la ligne sélectionnée change. Autrement dit, à
chaque fois, l'utilisateur doit rechercher la ligne sur laquelle il était
positionné avant d'ouvrir la fiche client.

Ma question est donc de savoir comment éviter cet écueil ???

Merci de votre réponse.





Bonjour,

Pour être plus propre au niveau de la réinitialisation de ton tableau je
ferai comme ça :
Lorsque tu doubles clique sur la fiche pour la modifier et que tu ouvres
la fenêtre tu mets en paramètre d'ouverture l'identifiant du client.

S'il y a eu modif dans la fiche lorsque tu fermes ta fenêtre tu la ferme
avec comme paramètre de fermeture l'identifiant de ton client que tu viens
de modifier ou 0 si tu n'as rien modifier. Si 0 alors pas de
réinitialisation, si autre tu cherches dans ton tableau l'identifiant que
tu étais en train de modifier et tu te positionnes dessus.

Exemple de code :

ent_Id_Client est entier = Ouvre(MODIF_CLIENT,TBM_CLIENT.COL_ID_CLIENT) SI
ent_Id_Client <> 0 alors
ExecuteTraitement(TBM_CLIENT,trtInit)
ent_Res est entier =
TableCherche(TBM_CLIENT.COL_ID_CLIENT,ent_Id_Client,Vrai)
SI ent_Res <> -1 ALORS
TableSelectPlus(TBM_CLIENT,ent_Res)
Fin

FIN

// Code dans ta fenêtre Windev MODIF_CLIENT
// Déclarations Globales
PROCEDURE MODIF_CLIENT (ent_IDClient)

// Code Validation
--> Traitement
Ferme(MODIF_CLIENT,ent_IDClient)

// Code Annulation ou Fermeture sans modif
Ferme(MODIF_CLIENT,0)

En espérant t'avoir aidé.