Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11] Affectation champs valeurs de l'objet

11 réponses
Avatar
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

10 réponses

1 2
Avatar
I.G.LOG
"Fredo G-MDI" a écrit dans le message de news:
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 ?!
Avatar
Fredo G-MDI
Merci pour ta réponse mais même combat :-s

"I.G.LOG" a écrit dans le message de news:
4861004c$0$866$

"Fredo G-MDI" a écrit dans le message de news:
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 ?!



Avatar
I.G.LOG
> 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.
Avatar
Fredo G-MDI
"I.G.LOG" a écrit dans le message de news:
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
Avatar
I.G.LOG
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
Avatar
Fredo G-MDI
"I.G.LOG" a écrit dans le message de news:
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
Avatar
Fredo G-MDI
"Fredo G-MDI" a écrit dans le message de news:
486238fd$0$13039$
"I.G.LOG" a écrit dans le message de news:
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 !!
Avatar
I.G.LOG
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
Avatar
Fredo G-MDI
"I.G.LOG" a écrit dans le message de news:
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 !!
Avatar
JeAn-PhI
Fredo G-MDI a présenté l'énoncé suivant :
"Fredo G-MDI" a écrit dans le message de news:
486238fd$0$13039$
"I.G.LOG" a écrit dans le message de news:
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
1 2