PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Source de données passée en paramètre
Source de données passée en paramètre
Iniciado por Philippe, 02,ago. 2020 17:15 - 8 respuestas
Miembro registrado
132 mensajes
Publicado el 02,agosto 2020 - 17:15
Bonjour,

je déclare une source de données et j'aimerais appeler une procédure locale et utiliser à l'intérieur de celle-ci cette source de données.
J'ai essayé de passer en paramètre la source de données, mais ça ne marche pas.
Voici mon code:

SQL_Fichier est une Source de Données
ChaineSQLFichier est une chaine

ChaineSQLFichier = "SELECT * FROM MonFichier WHERE IDKey = " + WId
SI HExécuteRequêteSQL(SQL_ReqFichier,hRequêteDéfaut, ChaineSQLFichier) ALORS
HLitPremier(SQL_ReqFichier)
TANTQUE PAS HEnDehors(SQL_ReqFichier)
AppelProcedure(SQL_ReqFichier)
HLitSuivant(SQL_ReqFichier)
FIN
Fin

PROCEDURE AppelProcedure(SQL_ReqFichier)

HLitRecherchePremier(FichierA,KeyTab,[SQL_ReqFichier.ChampsA])

Quelqu'un a-t-il une solution?

Merci de votre aide.

--
Cordialement

Philippe T.
Miembro registrado
2.323 mensajes
Publicado el 03,agosto 2020 - 16:14
Bonjour,

Passez le nom de la source de données sous forme de texte, puis utilisez les indirections dans votre procédure.

--
Bon dev,
Jean-Pierre
Miembro registrado
132 mensajes
Publicado el 03,agosto 2020 - 17:21
Merci Jean-Pierre pour votre réponse.

Mais cela ne marche pas. Même si je tape l'expression SQL_ReqFichier.ChampsA dans le débug pour avoir le résultat, il ne reconnait pas cette expression.
Voici mon nouveau code mais qui ne marche donc pas mieux:

AppelProcedure("SQL_ReqFichier")

PROCEDURE AppelProcedure(SQL_ReqFichier)

HLitRecherchePremier(FichierA,KeyTab,[{SQL_ReqFichier + ".ChampsA"}])

--
Cordialement

Philippe T.
Miembro registrado
4.363 mensajes
Publicado el 03,agosto 2020 - 19:41
Bonjour,
Pourquoi ne pas simplement modifier ta procédure en lui passant le résultat de la requête ?

Procedure AppelProcédure(sNomChamp est chaîne)
HLitRecherchePremier(FichierA,KeyTab,[sNomChamp,IndiChamp])

Lappel se faisant comme suit
SQL_Fichier est une Source dede Données
ChaineSQLFichier est une chaîne

ChaineSQLFichier = "SELECT * FROM MonFichier WHERE IDKey = " + WId
SI HExécuteRequêteSQL(SQL_ReqFichier,hRequêteDéfaut, ChaineSQLFichier) ALORS
HLitPremier(SQL_ReqFichier)
TANTQUE PAS HEnDehors(SQL_ReqFichier)
AppelProcedure(SQL_ReqFichier.ChampA)
HLitSuivant(SQL_ReqFichier)
FIN
FIN


--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
1.173 mensajes
Publicado el 03,agosto 2020 - 20:14
Bonsoir,
pour que cela fonctionne il faut typer le paramètre dans la déclaration de la procédure
Procedure AppelProcedure(SQL_ReqFichier est une Source dede Données)


--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Publicado el 03,agosto 2020 - 23:33
Philippe a écrit :
Bonjour,

je déclare une source de données et j'aimerais appeler une procédure locale et utiliser à l'intérieur de celle-ci cette source de données.
J'ai essayé de passer en paramètre la source de données, mais ça ne marche pas.
Voici mon code:

SQL_Fichier est une Source de Données
ChaineSQLFichier est une chaine

ChaineSQLFichier = "SELECT * FROM MonFichier WHERE IDKey = " + WId
SI HExécuteRequêteSQL(SQL_ReqFichier,hRequêteDéfaut, ChaineSQLFichier) ALORS
HLitPremier(SQL_ReqFichier)
TANTQUE PAS HEnDehors(SQL_ReqFichier)
AppelProcedure(SQL_ReqFichier)
HLitSuivant(SQL_ReqFichier)
FIN
Fin

PROCEDURE AppelProcedure(SQL_ReqFichier)

HLitRecherchePremier(FichierA,KeyTab,[SQL_ReqFichier.ChampsA])

Quelqu'un a-t-il une solution?

Merci de votre aide.

--
Cordialement

Philippe T.


Bonjour Philippe,

+1 avec THIERRY TILLIER
Miembro registrado
132 mensajes
Publicado el 05,agosto 2020 - 08:05
Merci Thierry pour ta réponse, mais ça ne marche pas mieux avec mon code adapté:

SQL_Fichier est une Source de Données
ChaineSQLFichier est une chaine

ChaineSQLFichier = "SELECT * FROM MonFichier WHERE IDKey = " + WId
SI HExécuteRequêteSQL(SQL_ReqFichier,hRequêteDéfaut, ChaineSQLFichier) ALORS
HLitPremier(SQL_ReqFichier)
TANTQUE PAS HEnDehors(SQL_ReqFichier)
AppelProcedure(SQL_ReqFichier)
HLitSuivant(SQL_ReqFichier)
FIN
Fin

PROCEDURE AppelProcedure(SQL_ReqFichier est une Source de Données)

HLitRecherchePremier(FichierA,KeyTab,[SQL_ReqFichier.ChampsA])

L'erreur donne:
<ChampsA> n'est ni une rubrique ni un paramètre de la requête <SQL_Req>. De nouveaux paramètres ne doivent pas être déclarés après la préparation d'une requête. Vérifier également qu'il n'y a pas d'erreur de syntaxe dans le nom de la rubrique ou du paramètre.

Merci pour votre aide.

--
Cordialement

Philippe T.
Miembro registrado
132 mensajes
Publicado el 05,agosto 2020 - 08:08
Pardon Thierry !!!! ça marche !!!
J'avais mal tapé le code de ma procédure appelante. A vouloir traduire le code pour mettre des noms génériques pour mon exemple ci-dessus, je me suis trompé de syntaxe.

Merci encore et bonne journée.

--
Cordialement

Philippe T.
Miembro registrado
1.173 mensajes
Publicado el 05,agosto 2020 - 08:10
Avec plaisir

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net