IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

[Windev 12] Probleme objet identique non voulu


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 74
    Points
    74
    Par défaut [Windev 12] Probleme objet identique non voulu
    Voici le problème :
    j'ai un premier objet "Abonnement" qui contient un tableau de "TranchHp", le seul problème c'est que l'objet "TranchHp" contient un tableau de 3 Consommation or tous les objets "TranchHp" contiennent tous exactement le même tableau de 3 consommations, si je change une des consommations pour une "TranchHp" alors toute les autres sont modifier aussi.

    Est ce que quelqu'un voit le problème ? et surtout la solution a y apporter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Abonnement est une classe
    PRIVÉE
    	Nom est une chaîne//nom de l'abonnement
    	Abo est un numérique//prix de l'abonnement unitaire
    	Abofix est un numérique//prix de l'abonnement forfaitaire
    	Tva_abo est un numérique//TVA sur l'abonnement
    	Tva_conso est un numérique//TVA sur la consommation
    	tranchesH est un tableau de 0 TranchHp//tranches horaires associées à l'abonnement
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    TranchHp est une classe
    PRIVÉE
    	Num est un numérique//numero de la tranche horaire dans la BD
    	Nom est une chaîne//nom de la tranche horaire
    	Coefred est un numérique//coefficient reducteur
    	Prixunit est un numérique//prix kwh/cents
    	tranches est un tableau de 0 TranchH//liste des tranches horaire associé
    	conso est un tableau dynamique//consommation par mois pour 3 années
    	moyenne est Consommation//moyenne de la consommation des 3 années
    FIN
    PROCEDURE Constructeur()
    :Num = 0
    :Nom = ""
    :Coefred = 0
    :Prixunit = 0
    :conso = allouer un tableau dynamique de 3 Consommation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Consommation est une classe
    PRIVÉE
    	nom est une chaîne//nom de la consommation
    	list_conso_mois est un tableau dynamique//liste des consommations sur l'année
    	total_kwh est un numérique//total de la consommation pour l'année
    	maxi_puiss est un numérique//puissance maximum
    FIN
    PROCEDURE Constructeur()
    :nom = ""
    :total_kwh = 0
    :maxi_puiss = 0
    :list_conso_mois = allouer un tableau dynamique de 12 Conso_mois

  2. #2
    Membre actif Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 273
    Points
    273
    Par défaut
    J'ai eu le même souci. Passe ton tableau en dynamique, ça devrait résoudre ton problème. Visiblement, sa taille n'est pas fixée au début, ça devrait donc pas gêner le reste du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tranchesH est un tableau dynamique de 0 TranchHp
    Ainsi, chaque tableau sera lié à l'objet et non plus à la classe.
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 74
    Points
    74
    Par défaut
    Même en rajoutant dynamique cela reste pareil.
    Cela provient peut être de mon remplissage des objets
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Numconnexion est un booléen //reussite connexion
    clTrancheptemp est TranchHp // Tranche horaire plus
    clTranchetemp est TranchH // Tranche Horaire
     
    Numconnexion = HExécuteRequête(REQ_TrancheH,hRequêteDéfaut,gnNum_abonnement)
    SI Numconnexion ALORS
    	//parcour du resultat
    	HLitPremier(REQ_TrancheH)
    	TANTQUE PAS HEnDehors()
    		clTrancheptemp:Ecrit_Coefred(REQ_TrancheH.COEFFICIENT_REDUCTEUR)
    		clTrancheptemp:Ecrit_Prixunit(REQ_TrancheH.PRIX_UNITAIRE)
    		clTrancheptemp:Ecrit_Nom(REQ_TrancheH.TRANCHE)
    		clTranchetemp:Ecrit_Nom(REQ_TrancheH.TRANCHE)
     
    		Numconnexion = HExécuteRequête(REQ_Tranche,hRequêteDéfaut,REQ_TrancheH.TRANCHE)
    		SI Numconnexion ALORS
    			//parcour du resultat
    			HLitPremier(REQ_Tranche)
    			TANTQUE PAS HEnDehors()
    				clTranchetemp:Ecrit_Tranche(REQ_Tranche.NOM)
    				clTranchetemp:Ecrit_hj(REQ_Tranche.Heure_Jour)
    				clTranchetemp:Ecrit_Moisdeb(REQ_Tranche.MOIS_DEBUT)
    				clTranchetemp:Ecrit_Moisfin(REQ_Tranche.MOIS_FIN)
    				HLitSuivant(REQ_Tranche)
    			FIN
    		SINON
    			Info("Probleme recuperation des données de tranche horaire")
    			// échec de l'execution de la requete : affichage d'un message explicatif
    			Erreur("La connexion à la source de données" + ComplèteRep(fRepExe())+"Bd\"+"tranche_horaire.xls" + HErreurInfo()+ " a échoué."+RC+ "Code erreur : " + SQL.Erreur +RC+ SQL.MesErreur)			
    		FIN
    		clTrancheptemp:Ecrit_tranches(clTranchetemp)
    		gclAbon:Ecrit_tranchesH(clTrancheptemp)
     
    		HLitSuivant(REQ_TrancheH)
    	FIN
     
    	gclEnerg:Ecrit_abo(FEN_Ajout_energ.gclAbon)
    	gclEnergS:Ecrit_energ(FEN_Ajout_energ.gclEnerg)
    	gclEnergS:Ecrit_libelle(FEN_Ajout_energ.SAI_Libelle)
    	gclEnergS:Ecrit_abo(FEN_Ajout_energ.gclAbon)
     
    	FEN_Projet.gclSit:Ecrit_energ(FEN_Ajout_energ.gclEnergS)
    	//liberation de la memoire
    	HAnnuleDéclaration(REQ_TrancheH)
    SINON
    	Info("Probleme recuperation des données de tranche horaire plus")
    	// échec de l'execution de la requete : affichage d'un message explicatif
    	Erreur("La connexion à la source de données" + ComplèteRep(fRepExe())+"Bd\"+"tranche_horaire_plus.xls" + HErreurInfo()+ " a échoué."+RC+ "Code erreur : " + SQL.Erreur +RC+ SQL.MesErreur)
    FIN
    FEN_Projet.FI_Menu_batiment.FI_Nouveau.TableEnergieSite()
    Ferme(FEN_Ajout_energ)

  4. #4
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 74
    Points
    74
    Par défaut
    Solution trouvée
    Il faut déclarer l'objet en tant que dynamique puis l'allouer au début de la boucle puis l'ajouter à ma liste et le libérer à la fin de la boucle.
    Ainsi chaque objet à une adresse différente à chaque boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clTranchetemp est TranchH dynamique // Tranche Horaire
    Pour tout ....
    clTranchetemp = allouer TranchH
    ......
    liberer clTranchetemp
    Fin boucle

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Doctrine] Probleme de jointure qui me retourne des données non voulues.
    Par Soullivaneuh dans le forum ORM
    Réponses: 5
    Dernier message: 20/04/2012, 13h03
  2. Probleme d'objet identique
    Par Ylias dans le forum JPA
    Réponses: 16
    Dernier message: 12/06/2008, 19h27
  3. Réponses: 2
    Dernier message: 17/01/2008, 11h47
  4. Réponses: 1
    Dernier message: 27/01/2007, 13h30
  5. probleme d'espace non voulu entre 2 bloc
    Par piff62 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo