Bonjour, Nouveau problème pour les spécialistes POO / WD9 (90028m). J'ai 4 objets: 1/ __Enreg est un objet generique pour stocker les tuples (avec sauvegarde valeurs ini) 2/ _Client: classe de base décrivant le fichier client 3/ Client: classe de manipulation 4/ Tiers: "surclasse" de client Je veux pouvoir mémoriser les valeurs des rubriques dans la fonction :Init(). Le probleme est que ca plante a l'execution dans la fonction __Enreg::mSetRequeteValeurs a la ligne :mSetValeur(lCh,QLLitCol(pReq,x)) : Erreur systeme n° 1020 dans WD90VM.DLL !!! Apres multiples recherches, je me suis apercu que le pb survient quand l'objet client a 2 heritages comme dans l'exemple (Tiers et _Client). Si il n'herite que de _Client je n'ai plus le defaut. D'ou peut venir ce probleme ? Ai-je oublie qq chose ?
Une nouvelle fois merci pour vos reponses. Phil
PS: desole le code est un peu long Re-PS: je suis oblige d'utiliser la "surclasse" Tiers !
Classe __Enreg IDENT est un entier _NOMFIC est une chaîne _NOMID est une chaîne MODE est une chaîne FLAG est un entier sur 1 octet _Champs est un tableau dynamique _Init est un objet dynamique
Fin
PROCEDURE __Enreg::mSetRequeteValeurs(pReq="")
lCh est une chaîne lRub est une chaîne x est un entier y est un entier
// Lecture des champs de la requete POUR x = 1 A y lCh = ":"+:_Champs[x] :mSetValeur(lCh,SQLLitCol(pReq,x)) <- CA PLANTE A L'EXEC: erreur 1020 :_Init:mSetValeur(lCh,{lCh}) FIN RETOUR
PROCEDURE __Enreg::mSetValeur(pMembre,pValeur="")
{pMembre} = pValeur RETOUR
Classe _Client Herite de __Enreg RAISON est une chaine ... Fin
PROCEDURE _Client::Constructeur()
:_NOMFIC = "CLIENT" :_NOMID = "IDDOCUM" Dimension(:_Champs,14) :_Champs[1] = "RAISON" ... RETOUR
PROCEDURE VIRTUELLE _Client::Init(pIdent)
lReq est une chaîne y est un entier = dimension(:_Champs)
// Lecture SI Fichier:SQLExecute(:mSelect("IDDOCUM = " + pIdent),lReq) ALORS SI SQLFetch(lReq) = 0 ALORS // Mémorise :IDENT = pIdent :_Init = allouer un _Client :_Init:IDENT = :IDENT :_Init:_NOMFIC = :_NOMFIC :_Init:_NOMID = :_NOMID :_Init:FLAG = :FLAG :mSetRequeteValeurs(lReq) // Pour mémoriser les champs <--- CA PLANTE A L'EXEC: // // Si j'utilise les lignes suivantes plutot que :mSetRequeteValeurs() ca marche !???!! // POUR x = 1 A y // lCh = ":"+:_Champs[x] // {lCh} = SQLLitCol(lReq,x) // :_Init:mSetValeur(lCh,{lCh}) // FIN fin fin SQLFerme(lReq) RETOUR
Classe Tiers RUB1 est une chaine ... Fin
Classe Client Herite de Tiers // NOTA: si j'enleve cet heritage, plus de probleme !?! Herite de _Client ... Fin
PROCEDURE VIRTUELLE Client::Init(pIdent=0)
// Init SI PAS :_Client::Init(pIdent) ALORS Erreur("Procedure Client::Init(), Fichier CLIENT, index IDDOCUM","pIdent -> " + pIdent + " non trouvé !!!") RENVOYER Faux FIN ... RENVOYER vrai |