|
| Champs liés non mise à jour à la lecture |
| Iniciado por Anthony, 07,mar. 2019 11:32 - 8 respuestas |
| |
| | | |
|
| |
Miembro registrado 108 mensajes |
|
| Publicado el 07,marzo 2019 - 11:32 |
Bonjour à tous,
Débutant avec Windev, je me retrouve dans une impasse, enfin, un comportement que je n'explique pas... J'ai une fenêtre principale comportant une table liée à des enregistrements, en sélectionnant une ligne j'ouvre une fenêtre interne comportant différents champs (Date, combo, saisi,...) ainsi qu'un champ onglet lui-même comportant différents champs (date,combo, saisi,...).
à l'ouverture (double clic sur une ligne tableau de ma fenêtre principale), ma fenêtre interne s'ouvre, les champs (liés) qui se trouve en dehors du champ onglet sont mise à jour suivant les enregistrements correspondants sans problème. Cependant, les champs (eux aussi liés) se trouvant dans le champ onglet se retrouvent avec des enregistrements de données dans la base mais ne correspondant pas à la ligne sélectionnée initialement ! si je sélectionne une autre ligne, les données restent les mêmes... J'ai vérifié les propriétés des champs, "mémorisé la valeur" n'est pas cochée.
Mon code est simple (enfin je pense) :
Quand je débogue, gNumero récupère bien mon numéro de dossier que j'ai sélectionné (double clic) dans ma table, je ne comprends pas !!!!
Dois-je spécifier quelque chose pour les champs faisant parties du champ onglet dans ma fenêtre interne ?
Merci de votre aide !
Procedure MaFenêtre(gNumero=0) SI gNumero=0 ALORS HRAZ(dossier) SINON HLitRecherchePremier(dossier,NUMERO,gNumero) SI HTrouve() = Faux ALORS Erreur ("Le dossier n'a pas été trouvé") SINON FichierVersEcran() FIN FIN
|
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 07,marzo 2019 - 12:58 |
Hello,
Comment rafraichit tu ta fenêtre interne ? Je pense qu'il faudrait creer une procédure globale dans cette fentetre
Procedure RefreshData(gNumero) HLitRecherchePremier(dossier,NUMERO,gNumero) SI HTrouve() = Faux ALORS Erreur ("Le dossier n'a pas été trouvé") SINON FichierVersEcran() FIN FIN
Et tu appelles cette procédure a chaque nouveau clic |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 108 mensajes |
|
| Publicado el 07,marzo 2019 - 14:03 |
Bonjour François,
Merci pour ta réponse, je ne rafraîchi pas la fenêtre... je vais essayer de voir selon tes conseils. Je te tiens au courant des résultats. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 108 mensajes |
|
| Publicado el 07,marzo 2019 - 14:26 |
Pour info voici le code qui est exécuté lors d'un double clic sur une ligne de ma table :
SI TABLE_Dossier = -1 ALORS Erreur("Vous devez sélectionner une ligne !") FIN
soit numDossier=COL_NUMERO[TABLE_Dossier] sAlias est une chaîne="ALIAS_"+numDossier Val_temp est une chaîne
SI sAlias=""_OU_ OngletEtat(ONG_ListeDossiers,sAlias)=voletInexistant ALORS Val_temp=OngletOuvre(ONG_ListeDossiers,"Dossier N° [%COL_NUMERO[TABLE_Dossier]%]",FI_DOSSIERS,numDossier) ONG_ListeDossiers[Val_temp]..Alias="ALIAS_"+numDossier SINON ToastAffiche("Le dossier est déjà ouvert !",toastCourt,cvMilieu,chCentre) ONG_ListeDossiers=sAlias FIN
|
| |
| |
| | | |
|
| | |
| |
Miembro registrado 299 mensajes |
|
| Publicado el 07,marzo 2019 - 14:27 |
L'idée de la procédure RefreshData(gNumero) a l'avantage de factoriser le traitement d 'affichage.
Je ne vois pas ce qu'il va changer au résultat.
J'ai remarqué que FichierVersEcran et EcranVersFichier réagissent mal avec des champs texte long. J'ai mis cela sur le comte d'un type de champ. Cela dit ces champs étaient aussi inclus dans un onglet. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 108 mensajes |
|
| Publicado el 07,marzo 2019 - 14:53 |
Salut Michel,
En effet, la procédure ne change pas le résultat; Je viens d'essayer autre chose, dans les déclarations globales de ma fenêtre interne j'ai garde ce code (en cas de création de dossier) : Procedure MaFenêtre(gNumero=0) SI gNumero=0 ALORS HRAZ(dossier) FIN
Dans quelques champs (Champ en dehors de mon champ onglet et dans mon champ onglet) de ma fenêtre interne j'ai directement lié mes champs sans passé par la description, comme ceci : SAI_Référence=dossier.REF_CIE si je fais ça pour chaque champ ça fonctionne bien... s'il faut que je code en dur chaque champ....
Concernant l'enregistrement, si les champs ne sont pas lié par la description, les modifications ne sont pas prises en compte, là c'est le contraire. Il y a donc un souci avec les lecture fichierversecran .... Je n'y comprends plus rien.Mensaje modificado, 07,marzo 2019 - 15:17 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 07,marzo 2019 - 16:06 |
| Ta fenetre interne n'aurait pas coché "Contexte HFSQL indépenant" ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 108 mensajes |
|
| Publicado el 07,marzo 2019 - 17:12 |
si... (j'ai lu que c'était conseillé pour éviter un déphasage avec la base de données)  Mensaje modificado, 07,marzo 2019 - 17:13 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 108 mensajes |
|
| Publicado el 11,marzo 2019 - 10:05 |
François C. a écrit : > Ta fenetre interne n'aurait pas coché "Contexte HFSQL indépenant" ?
Bonjour François,
C'est bien ça, quand je désactive le "context HFSQL indépendant", cela fonctionne normalement, on devrait donc coder différemment dans ce type de configuration. En tous les cas j'ai lié mes champs en dur pour le moment ça fonctionne comme ça, je regarderai plus tard pourquoi fichierversecran ne fonctionne pas en ayant mes champs lié "normalement" et en contexte HFSQL indépendant.
Merci encore ! |
| |
| |
| | | |
|
| | | | |
| | |
|