[WD11] Affectation champs valeurs de l'objet

Le
Fredo G-MDI
Bonjour à tous,

soit une classe cSociete où les membres correspondent aux champs de ma table
société. J'ai une méthode Get(iIDSociete) dans la classe cSocieteControleur
(classe permettant l'ajout, la modif et la suppression) qui me remplit
l'objet en faisant un SELECT sur l'ID, cette méthode me retourne un objet
cSociete remplit, lorsque j'affecte mes champs de saisie membre à membre
seuls les champs de type numériques se remplissent, tous les champs de type
chaine sont retournés à blanc. Lorsque j'exécute pas à pas ma méthode mon
objet est bien remplit avec les bonnes valeurs, c'est lorsque je fais
GoSociete = GoSocieteControleur.Get(SAI_ID_SOCIETE) que les valeurs
disparaissent !!

Des idées ?

Merci pour vos réponses
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
I.G.LOG
Le #14497491
"Fredo G-MDI" 4860b27e$0$17508$
Bonjour à tous,

soit une classe cSociete où les membres correspondent aux champs de ma
table société. J'ai une méthode Get(iIDSociete) dans la classe
cSocieteControleur (classe permettant l'ajout, la modif et la suppression)
qui me remplit l'objet en faisant un SELECT sur l'ID, cette méthode me
retourne un objet cSociete remplit, lorsque j'affecte mes champs de saisie
membre à membre seuls les champs de type numériques se remplissent, tous
les champs de type chaine sont retournés à blanc. Lorsque j'exécute pas à
pas ma méthode mon objet est bien remplit avec les bonnes valeurs, c'est
lorsque je fais GoSociete = GoSocieteControleur.Get(SAI_ID_SOCIETE) que
les valeurs disparaissent !!

Des idées ?

Merci pour vos réponses




Bonjour,
Pourquoi ne pas instancier tout simplement l'objet cSocieteControleur avec

GoSociete est un cSocieteControleur
GoSociete:Get(SAI_ID_SOCIETE)

Les champs de GoSociete seront bien remplis normallement ?!
Fredo G-MDI
Le #14497441
Merci pour ta réponse mais même combat :-s

"I.G.LOG" 4861004c$0$866$

"Fredo G-MDI" 4860b27e$0$17508$
Bonjour à tous,

soit une classe cSociete où les membres correspondent aux champs de ma
table société. J'ai une méthode Get(iIDSociete) dans la classe
cSocieteControleur (classe permettant l'ajout, la modif et la
suppression) qui me remplit l'objet en faisant un SELECT sur l'ID, cette
méthode me retourne un objet cSociete remplit, lorsque j'affecte mes
champs de saisie membre à membre seuls les champs de type numériques se
remplissent, tous les champs de type chaine sont retournés à blanc.
Lorsque j'exécute pas à pas ma méthode mon objet est bien remplit avec
les bonnes valeurs, c'est lorsque je fais GoSociete =
GoSocieteControleur.Get(SAI_ID_SOCIETE) que les valeurs disparaissent !!

Des idées ?

Merci pour vos réponses




Bonjour,
Pourquoi ne pas instancier tout simplement l'objet cSocieteControleur avec

GoSociete est un cSocieteControleur
GoSociete:Get(SAI_ID_SOCIETE)

Les champs de GoSociete seront bien remplis normallement ?!



I.G.LOG
Le #14497431
> Merci pour ta réponse mais même combat :-s




alors le problème est ailleurs. J'ai une classe qui fait à peu près la même
chose et qui fonctionnait correctement sous WD11 (suis en 12 aujourd'hui).
Il faudrait le code de déclaration de la classe mère pour y voir plus clair.
Fredo G-MDI
Le #14497411
"I.G.LOG" 48615df2$0$857$
Merci pour ta réponse mais même combat :-s




alors le problème est ailleurs. J'ai une classe qui fait à peu près la
même chose et qui fonctionnait correctement sous WD11 (suis en 12
aujourd'hui). Il faudrait le code de déclaration de la classe mère pour y
voir plus clair.



cSociete est une classe

id est un entier sur 8 octets

FK_id_type_societe est un entier sur 8 octets

FK_id_pays est un entier sur 8 octets

image est une chaîne

nom est une chaîne

siret est une chaîne

ape est une chaîne

capital_social est un monétaire

numero_TVA est une chaîne

numero_accise est une chaîne

gencod est une chaîne

adresse est une chaîne

code_postal est une chaîne

ville est une chaîne

cedex est une chaîne

commentaires est une chaîne

page_web est une chaîne

date_creation est une DateHeure

utilisateur_creation est une chaîne

date_modification est une DateHeure

utilisateur_modification est une chaîne

un objet cSQL

FIN
I.G.LOG
Le #14497401
Pas de problème dans la déclaration.
Je ne sais pas comment tu as programmé la methode Get...
Si j'ai bien compris, c'est cette methode qui effectue un SELECT et qui
affecte les membres.
Ca devrait marcher, je n'ai pas rencontré de problème d'affectation sous
aucune version de WD

Est-ce que ton code ressemble à celui-ci ?

// Lecture
GoSociete:Get(SAI_ID_SOC)

// Methode cSociete:Get()
hExecuteRequeteSQL(MaSourceDonnees,"select GENCOD from SOCIETE where ID_SOC
= " + SAI_ID_SOC)
:gencod = MaSource.GENCOD
Fredo G-MDI
Le #14497391
"I.G.LOG" 48620939$0$899$
Pas de problème dans la déclaration.
Je ne sais pas comment tu as programmé la methode Get...
Si j'ai bien compris, c'est cette methode qui effectue un SELECT et qui
affecte les membres.
Ca devrait marcher, je n'ai pas rencontré de problème d'affectation sous
aucune version de WD

Est-ce que ton code ressemble à celui-ci ?

// Lecture
GoSociete:Get(SAI_ID_SOC)

// Methode cSociete:Get()
hExecuteRequeteSQL(MaSourceDonnees,"select GENCOD from SOCIETE where
ID_SOC = " + SAI_ID_SOC)
:gencod = MaSource.GENCOD




J'utilise des clauses SQLExec mais dans le principe c'est la même chose :
FONCTION Get(iID est un entier sur 8 octets)

sRequete est une chaîne

sNomRequete est une chaîne = DonneIdentifiant()

oSociete est objet cSociete

i est un entier = 1

sRequete = "SELECT "+...

"erp_societe.id,"+...

"erp_societe.FK_id_erp_type_societe,"+...

"erp_societe.FK_id_erp_pays,"+...

"erp_societe.image,"+...

"erp_societe.nom,"+...

"erp_societe.siret,"+...

"erp_societe.ape,"+...

"erp_societe.capital_social,"+...

"erp_societe.numero_TVA,"+...

"erp_societe.numero_accise,"+...

"erp_societe.gencod,"+...

"erp_societe.adresse,"+...

"erp_societe.code_postal,"+...

"erp_societe.ville,"+...

"erp_societe.cedex,"+...

"erp_societe.commentaires,"+...

"erp_societe.page_web,"+...

"erp_societe.date_creation,"+...

"erp_societe.utilisateur_creation,"+...

"erp_societe.date_modification,"+...

"erp_societe.utilisateur_modification "+...

"FROM erp_societe "+...

"WHERE erp_societe.id = "+iID

SI SQLExec(sRequete,sNomRequete) ALORS

TANTQUE SQLAvance(sNomRequete) = 0

oSociete:id = SQLLitCol(sNomRequete,i);i++

oSociete:FK_id_erp_type_societe = SQLLitCol(sNomRequete,i);i++

oSociete:FK_id_erp_pays = SQLLitCol(sNomRequete,i);i++

oSociete:image = SQLLitMémo(sNomRequete,i);i++

oSociete:nom = SQLLitCol(sNomRequete,i);i++

oSociete:siret = SQLLitCol(sNomRequete,i);i++

oSociete:ape = SQLLitCol(sNomRequete,i);i++

oSociete:capital_social = SQLLitCol(sNomRequete,i);i++

oSociete:numero_TVA = SQLLitCol(sNomRequete,i);i++

oSociete:numero_accise = SQLLitCol(sNomRequete,i);i++

oSociete:gencod = SQLLitCol(sNomRequete,i);i++

oSociete:adresse = SQLLitCol(sNomRequete,i);i++

oSociete:code_postal = SQLLitCol(sNomRequete,i);i++

oSociete:ville = SQLLitCol(sNomRequete,i);i++

oSociete:cedex = SQLLitCol(sNomRequete,i);i++

oSociete:commentaires = SQLLitCol(sNomRequete,i);i++

oSociete:page_web = SQLLitCol(sNomRequete,i);i++

oSociete:date_creation = SQLLitCol(sNomRequete,i);i++

oSociete:utilisateur_creation = SQLLitCol(sNomRequete,i);i++

oSociete:date_modification = SQLLitCol(sNomRequete,i);i++

oSociete:utilisateur_modification = SQLLitCol(sNomRequete,i);i++

FIN

SQLFerme(sNomRequete)

FIN

RENVOYER oSociete
Fredo G-MDI
Le #14497381
"Fredo G-MDI" 486238fd$0$13039$
"I.G.LOG" 48620939$0$899$
Pas de problème dans la déclaration.
Je ne sais pas comment tu as programmé la methode Get...
Si j'ai bien compris, c'est cette methode qui effectue un SELECT et qui
affecte les membres.
Ca devrait marcher, je n'ai pas rencontré de problème d'affectation sous
aucune version de WD

Est-ce que ton code ressemble à celui-ci ?

// Lecture
GoSociete:Get(SAI_ID_SOC)

// Methode cSociete:Get()
hExecuteRequeteSQL(MaSourceDonnees,"select GENCOD from SOCIETE where
ID_SOC = " + SAI_ID_SOC)
:gencod = MaSource.GENCOD




J'utilise des clauses SQLExec mais dans le principe c'est la même chose :
FONCTION Get(iID est un entier sur 8 octets)

sRequete est une chaîne

sNomRequete est une chaîne = DonneIdentifiant()

oSociete est objet cSociete

i est un entier = 1

sRequete = "SELECT "+...

"erp_societe.id,"+...

"erp_societe.FK_id_erp_type_societe,"+...

"erp_societe.FK_id_erp_pays,"+...

"erp_societe.image,"+...

"erp_societe.nom,"+...

"erp_societe.siret,"+...

"erp_societe.ape,"+...

"erp_societe.capital_social,"+...

"erp_societe.numero_TVA,"+...

"erp_societe.numero_accise,"+...

"erp_societe.gencod,"+...

"erp_societe.adresse,"+...

"erp_societe.code_postal,"+...

"erp_societe.ville,"+...

"erp_societe.cedex,"+...

"erp_societe.commentaires,"+...

"erp_societe.page_web,"+...

"erp_societe.date_creation,"+...

"erp_societe.utilisateur_creation,"+...

"erp_societe.date_modification,"+...

"erp_societe.utilisateur_modification "+...

"FROM erp_societe "+...

"WHERE erp_societe.id = "+iID

SI SQLExec(sRequete,sNomRequete) ALORS

TANTQUE SQLAvance(sNomRequete) = 0

oSociete:id = SQLLitCol(sNomRequete,i);i++

oSociete:FK_id_erp_type_societe = SQLLitCol(sNomRequete,i);i++

oSociete:FK_id_erp_pays = SQLLitCol(sNomRequete,i);i++

oSociete:image = SQLLitMémo(sNomRequete,i);i++

oSociete:nom = SQLLitCol(sNomRequete,i);i++

oSociete:siret = SQLLitCol(sNomRequete,i);i++

oSociete:ape = SQLLitCol(sNomRequete,i);i++

oSociete:capital_social = SQLLitCol(sNomRequete,i);i++

oSociete:numero_TVA = SQLLitCol(sNomRequete,i);i++

oSociete:numero_accise = SQLLitCol(sNomRequete,i);i++

oSociete:gencod = SQLLitCol(sNomRequete,i);i++

oSociete:adresse = SQLLitCol(sNomRequete,i);i++

oSociete:code_postal = SQLLitCol(sNomRequete,i);i++

oSociete:ville = SQLLitCol(sNomRequete,i);i++

oSociete:cedex = SQLLitCol(sNomRequete,i);i++

oSociete:commentaires = SQLLitCol(sNomRequete,i);i++

oSociete:page_web = SQLLitCol(sNomRequete,i);i++

oSociete:date_creation = SQLLitCol(sNomRequete,i);i++

oSociete:utilisateur_creation = SQLLitCol(sNomRequete,i);i++

oSociete:date_modification = SQLLitCol(sNomRequete,i);i++

oSociete:utilisateur_modification = SQLLitCol(sNomRequete,i);i++

FIN

SQLFerme(sNomRequete)

FIN

RENVOYER oSociete




Bizarrement jusqu'à RENVOYER oSociete, mon objet oSociete est bien remplit,
je peux le voir dans le déboggueur, dès que je fais l'affectation l'objet se
vide !!
GoSociete = GoSociete:Get(1), GoSociete est vide !!
I.G.LOG
Le #14497361
Normal qu'il se vide !
oSociete est déclaré local à la méthode :Get(), il sera détruit à la fin de
la fonction !!!
C'est pour ça que je te disais d'instancier directement la classe mère:

GoSociete:Get("SAI_ID_SOC)

// Méthode get
FUNCTION Get(iID est un entier sur 8 octets)

sRequete est une chaîne
sNomRequete est une chaîne = DonneIdentifiant()

// oSociete est objet cSociete // Ne pas passer par cet objet, il est
local !!!
i est un entier = 1
sRequete = "SELECT "+...
"erp_societe.id,"+...
"erp_societe.FK_id_erp_type_societe,"+...
...
"FROM erp_societe "+...
"WHERE erp_societe.id = "+iID
SI SQLExec(sRequete,sNomRequete) ALORS
TANTQUE SQLAvance(sNomRequete) = 0
:id = SQLLitCol(sNomRequete,i);i++
...
FIN
FIN
SQLFerme(sNomRequete)
RENVOYER vrai // ou faux par exemple
Fredo G-MDI
Le #14497351
"I.G.LOG" 48620939$0$899$
Pas de problème dans la déclaration.
Je ne sais pas comment tu as programmé la methode Get...
Si j'ai bien compris, c'est cette methode qui effectue un SELECT et qui
affecte les membres.
Ca devrait marcher, je n'ai pas rencontré de problème d'affectation sous
aucune version de WD

Est-ce que ton code ressemble à celui-ci ?

// Lecture
GoSociete:Get(SAI_ID_SOC)

// Methode cSociete:Get()
hExecuteRequeteSQL(MaSourceDonnees,"select GENCOD from SOCIETE where
ID_SOC = " + SAI_ID_SOC)
:gencod = MaSource.GENCOD




J'ai fais un autre test qui lui marche mais je ne comprends pas pourquoi
celui là fonctionne et pas l'autre !
PROCEDURE Get(oSociete est objet cSociete, id est entier sur 8 octets)
C'est la même chose que l'autre Get sauf que ça ne renvoie rien.
GoSociete:Get(GoSociete,1)
Info(GoSociete:nom) m'affiche bien la valeur !!
JeAn-PhI
Le #14497341
Fredo G-MDI a présenté l'énoncé suivant :
"Fredo G-MDI" 486238fd$0$13039$
"I.G.LOG" 48620939$0$899$
Pas de problème dans la déclaration.
Je ne sais pas comment tu as programmé la methode Get...
Si j'ai bien compris, c'est cette methode qui effectue un SELECT et qui
affecte les membres.
Ca devrait marcher, je n'ai pas rencontré de problème d'affectation sous
aucune version de WD

Est-ce que ton code ressemble à celui-ci ?

// Lecture
GoSociete:Get(SAI_ID_SOC)

// Methode cSociete:Get()
hExecuteRequeteSQL(MaSourceDonnees,"select GENCOD from SOCIETE where
ID_SOC = " + SAI_ID_SOC)
:gencod = MaSource.GENCOD




J'utilise des clauses SQLExec mais dans le principe c'est la même chose :
FONCTION Get(iID est un entier sur 8 octets)

sRequete est une chaîne

sNomRequete est une chaîne = DonneIdentifiant()

oSociete est objet cSociete

i est un entier = 1

sRequete = "SELECT "+...

"erp_societe.id,"+...

"erp_societe.FK_id_erp_type_societe,"+...

"erp_societe.FK_id_erp_pays,"+...

"erp_societe.image,"+...

"erp_societe.nom,"+...

"erp_societe.siret,"+...

"erp_societe.ape,"+...

"erp_societe.capital_social,"+...

"erp_societe.numero_TVA,"+...

"erp_societe.numero_accise,"+...

"erp_societe.gencod,"+...

"erp_societe.adresse,"+...

"erp_societe.code_postal,"+...

"erp_societe.ville,"+...

"erp_societe.cedex,"+...

"erp_societe.commentaires,"+...

"erp_societe.page_web,"+...

"erp_societe.date_creation,"+...

"erp_societe.utilisateur_creation,"+...

"erp_societe.date_modification,"+...

"erp_societe.utilisateur_modification "+...

"FROM erp_societe "+...

"WHERE erp_societe.id = "+iID

SI SQLExec(sRequete,sNomRequete) ALORS

TANTQUE SQLAvance(sNomRequete) = 0

oSociete:id = SQLLitCol(sNomRequete,i);i++

oSociete:FK_id_erp_type_societe = SQLLitCol(sNomRequete,i);i++

oSociete:FK_id_erp_pays = SQLLitCol(sNomRequete,i);i++

oSociete:image = SQLLitMémo(sNomRequete,i);i++

oSociete:nom = SQLLitCol(sNomRequete,i);i++

oSociete:siret = SQLLitCol(sNomRequete,i);i++

oSociete:ape = SQLLitCol(sNomRequete,i);i++

oSociete:capital_social = SQLLitCol(sNomRequete,i);i++

oSociete:numero_TVA = SQLLitCol(sNomRequete,i);i++

oSociete:numero_accise = SQLLitCol(sNomRequete,i);i++

oSociete:gencod = SQLLitCol(sNomRequete,i);i++

oSociete:adresse = SQLLitCol(sNomRequete,i);i++

oSociete:code_postal = SQLLitCol(sNomRequete,i);i++

oSociete:ville = SQLLitCol(sNomRequete,i);i++

oSociete:cedex = SQLLitCol(sNomRequete,i);i++

oSociete:commentaires = SQLLitCol(sNomRequete,i);i++

oSociete:page_web = SQLLitCol(sNomRequete,i);i++

oSociete:date_creation = SQLLitCol(sNomRequete,i);i++

oSociete:utilisateur_creation = SQLLitCol(sNomRequete,i);i++

oSociete:date_modification = SQLLitCol(sNomRequete,i);i++

oSociete:utilisateur_modification = SQLLitCol(sNomRequete,i);i++

FIN

SQLFerme(sNomRequete)

FIN

RENVOYER oSociete




Bizarrement jusqu'à RENVOYER oSociete, mon objet oSociete est bien remplit,
je peux le voir dans le déboggueur, dès que je fais l'affectation l'objet se
vide !!
GoSociete = GoSociete:Get(1), GoSociete est vide !!



attention à la destruction de votre objet en sortie car vous faites la
déclaration dans la fonction donc en sortie l'objet est détruit

--
Cordialement JeAn-PhI
Publicité
Poster une réponse
Anonyme