PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Table sur classe
Table sur classe
Iniciado por Benjamin L., 26,ago. 2020 10:42 - 15 respuestas
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 10:42
Bonjour a tous,
Je suis en train de m'entrainer à utiliser les classes, j'ai créer une table binder à ma classe, jusque la pas de souci.

Ma classe facture contient un tableau de LigneFacture qui est une autre classe.
La table se rempli correctement, mais j'aimerais faire des modifications sur l'objet sur par la suite l'utilisateur final décide de modifier la qte par exemple.
Ma question est la suivante : est-il possible de savoir l'objet cLigneFacture que je modifie à l'entré dans une ligne de la table ?

Merci a vous pour vos réponse, Benjamin L.
Publicado el 26,agosto 2020 - 11:08
Salut Benjamin, oui bien-sûr, dans le contenu de la table sélectionne comme variable mémorisée "<Elément courant>" ainsi lorsque tu accéderas à la ligne i de ta table elle te retournera ton objet
exemple:
i est un entier = TableSelect(MaTable) # Pour récupère l'indice de la ligne en cours sur la table
MaLigneFacture est une cLigneFacture dynamique <- MaTable[i]

Ensuite comme l'objet est dynamique il pointe directement sur ton objet du tableau, en gros toutes les modifications sur cet objet auront un impact direct sur l'objet de qui se trouve dans ton tableau
n'hésite pas si tu as besoin d'autres informations ou si tu as du mal à comprendre

--
Il n'y a pas de mystère en informatique.
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 11:21
Tous d'abord merci pour ta réponse aussi rapide.
C'est ce que j'avais fait au début mais je me retrouve face a un mur.
J'ai adapter ton exemple a mon cas de figure et ajouter celui-ci dans le code de selection de ligne.




Publicado el 26,agosto 2020 - 11:29
Ensuite tu peux par programmation dans le code de sortie du champs faire toi même les affections
Exemple:
Sortie colonne qte
i est un entier = TableSelect(MaTable)
MaLigneFacture est une cLigneFacture dynamique <- MaTable[i]
MaLigneFacture.Qte = MaTable[i].Qte

et faire tous les autres traitements que tu souhaiterai faire.
D'ailleurs je peux te proposer de mettre des propriété sur tes membres pour automatiser tes calculs, par exemple sur le membre quantité où tu recalculera automatiquement les Totaux (HT, TTC)
Si tu ne connais pas la notion de propriété hésite pas :D

--
Il n'y a pas de mystère en informatique.
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 11:41
J'ai oublié de te mettre l'erreur pour que tu puisse y voir plus clair :
On ne peut pas affecter à un objet autre chose qu'un objet de la même classe.

Pile des appels :
PROCEDURE INTERNE SelectLigne (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.PROCEDURE.GestionTableArticle), ligne 231
Procedure locale GestionTableArticle (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.PROCEDURE.GestionTableArticle), ligne 27
Sélection d'une ligne de TABLE_M_tabProduitsClassiques (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.FI_Volet_Fiche_Saisie_Facture_NOUVEAU.TABLE_M_tabProduitsClassiques), ligne 1

Date : 26/08/2020 11:40:56
Projet : Texam

Informations supplémentaires :
Code Erreur : 2407
Module : 'wd250vm.dll (01F250089f - 25.0.480.3)
EIT_TYPE_WDFILE : <8>
EIT_IDCODE : <458752>
Miembro registrado
296 mensajes
Publicado el 26,agosto 2020 - 11:45
Benjamin LECOMTE a écrit :
J'ai oublié de te mettre l'erreur pour que tu puisse y voir plus clair :
On ne peut pas affecter à un objet autre chose qu'un objet de la même classe.

Pile des appels :
Procédure interne SelectLigne (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.PROCEDURE.GestionTableArticle), ligne 231
Procédure locale GestionTableArticle (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.PROCEDURE.GestionTableArticle), ligne 27
Sélection d'une ligne de TABLE_M_tabProduitsClassiques (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.FI_Volet_Fiche_Saisie_Facture_NOUVEAU.TABLE_M_tabProduitsClassiques), ligne 1

Date : 26/08/2020 11:40:56
Projet : Texam

Informations supplémentaires :
Code erreur : 2407
Module : 'wd250vm.dll (01F250089f - 25.0.480.3)
EIT_TYPE_WDFILE : <8>
EIT_IDCODE : <458752>



Possible de voir la ligne 1 de ta sélection de ligne de TABLE_M_tabProduitsClassiques
Montre le code

--
Les innocents sont toujours accusé à tord.
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 11:45
D'ailleur j'ai la même erreur en sortie de ligne

On ne peut pas affecter à un objet autre chose qu'un objet de la même classe.

Pile des appels :
PROCEDURE INTERNE SortieLigne (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.PROCEDURE.GestionTableArticle), ligne 221
Procedure locale GestionTableArticle (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.PROCEDURE.GestionTableArticle), ligne 26
Sortie d'une ligne de TABLE_M_tabProduitsClassiques (FI_Volet_Fiche_Saisie_Facture_NOUVEAU.FI_Volet_Fiche_Saisie_Facture_NOUVEAU.TABLE_M_tabProduitsClassiques), ligne 1

Date : 26/08/2020 11:44:08
Projet : Texam

Informations supplémentaires :
Code Erreur : 2407
Module : 'wd250vm.dll (01F250089f - 25.0.480.3)
EIT_TYPE_WDFILE : <8>
EIT_IDCODE : <458752>
Miembro registrado
296 mensajes
Publicado el 26,agosto 2020 - 11:46
Cette erreur est très simple tu affectes a ton objet un objet d'une autre classe fait juste voir ton bout de code

--
Les innocents sont toujours accusé à tord.
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 11:50
Il n'y a que le code que tu m'a fournis



Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 11:52
Ninja CODEUR a écrit :
Cette erreur est très simple tu affectes a ton objet un objet d'une autre classe fait juste voir ton bout de code

--
Les innocents sont toujours accusé à tord.


C'est la ou je bloque, car mon tableau retourne un élement de type cLigneFact comme l'indique la photo plus haut dans le poste.
Ensuite j'affecte cet élement a ma variable de type cLigneFacture.
Miembro registrado
296 mensajes
Publicado el 26,agosto 2020 - 11:54
Vérifie la valeur de ton IdLigneSelect stp

--
Les innocents sont toujours accusé à tord.
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 11:56
Tout me semble correct, sauf erreur de ma part


Miembro registrado
296 mensajes
Publicado el 26,agosto 2020 - 12:01
Très bizarre tu es sûr que tu as bien coché renvoyer l’élément courant et qu'il est de classe CligneFacture ?
Sinon met un point d'arret avant MaLigneFacture est une ..... et teste dans le debogeur l'expression MaTable[i]

--
Les innocents sont toujours accusé à tord.
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 12:05
Je viens de faire le test dans une autre fenêtre, en effet ton code fonctionne bien, j'applique la même chose a ma table visé dans ma fenetre principale, l'erreur ressort x)
Imcompréhensible... Je continu d'investiger sur ce problème et revien vers toi dés que j'ai du nouveau.
Encore merci pour ton aide
Miembro registrado
31 mensajes
Publicado el 26,agosto 2020 - 12:09
Je crois avoir identifier le probleme, et cela me paraît logique.
Quand la ligne est vide, il n'y a pas encore d'ojet d'initialisé et donc une erreur se produit.
La modification de l'objet ne peut se faire que quand j'ai quitté une premiere fois la ligne.
Miembro registrado
296 mensajes
Publicado el 26,agosto 2020 - 12:36
hahahaha bah oui c'est logique si ton tableau est vide la ligne vide ne renvoi rien xD

--
Les innocents sont toujours accusé à tord.