|
| HExécuteRequêteSQL et tâche parallèle |
| Iniciado por Chris, 28,dic. 2018 14:51 - 8 respuestas |
| |
| | | |
|
| |
Miembro registrado 81 mensajes |
|
| Publicado el 28,diciembre 2018 - 14:51 |
Bonjour,
J'essai d'exécuter une requête construite avec une chaine dans une tâche parallèle.
sdReq est une Source dede Données HExécuteRequêteSQL(sdReq,hRequêteDéfaut,pRequete)
ExécuteThreadPrincipal(RemplirTable)
PROCEDURE INTERNE RemplirTable() TABLE_Requete..FichierParcouru = sdReq ConstruitTableFichier(TABLE_Requete,sdReq,taRemplirTable) FIN
Mais j'ai l'erreur suivante :
Vous avez appelé la FONCTION ExécuteThreadPrincipal. L'élément 'sdReq' n'a pas été trouvé.
Si je fais mon HExécuteRequêteSQL hors de la tâche parallèle, ça passe ... Mais ça bloque l'application le temps d'exécution.
Avez-vous une idée de la raison de ce blocage ? |
| |
| |
| | | |
|
| | |
| |
| Publicado el 28,diciembre 2018 - 16:55 |
Bonjour
Et en déclarant la source de données en global ? (Fenêtre ou projet) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 81 mensajes |
|
| Publicado el 29,diciembre 2018 - 21:23 |
| Idem avec la variable "Source de données" déclarées dans le code global de la fenêtre. Et pareil si c'est une variable globale du projet. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 281 mensajes |
|
| Publicado el 29,diciembre 2018 - 23:59 |
Bonjour,
En l’a passant en paramètre à la procédure interne ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 81 mensajes |
|
| Publicado el 31,diciembre 2018 - 11:41 |
| Même chose en passant la variable "source de données" en paramètre d'une procédure interne exécutée en "ExécuteThreadPrincipal". |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 16 mensajes |
|
| Publicado el 07,enero 2019 - 20:11 |
sdReq est une Source dede Données HExécuteRequêteSQL(sdReq,hRequêteDéfaut,pRequete) ExécuteThreadPrincipal(remplir,sdReq) PROCEDURE INTERNE remplir(sdd) TABLE_1..FichierParcouru=sdd ConstruitTableFichier(TABLE_1,sdd,taRemplirTable) FIN
ca fonctionne tres bien |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 81 mensajes |
|
| Publicado el 08,enero 2019 - 08:59 |
FM a écrit : > ca fonctionne tres bien
Bonjour, J'aimerais savoir comment vous faites car moi ça ne fonctionne pas du tout. WinDev 23 (pas pu tester encore en 24).
Mon code est sur le clic d'un bouton :
TâcheParallèleExécute(ExecuterSQL,(sSQL),tpoCopieComplèteContexteHFSQL)
PROCEDURE INTERNE ExecuterSQL(pTexteSQL) sdRequete est une Source dede Données SI PAS HExécuteRequêteSQL(sdRequete,hRequêteDéfaut,pTexteSQL) ALORS ExécuteThreadPrincipal(DoAffichage,HErreurInfo()) RETOUR FIN ExécuteThreadPrincipal(RemplirTable,sdRequete) PROCEDURE INTERNE DoAffichage(pMessage) Info(pMessage) FIN PROCEDURE INTERNE RemplirTable(pDonnees) TABLE_Requete..FichierParcouru = pDonnees ConstruitTableFichier(TABLE_Requete,pDonnees,taRemplirTable) FIN FIN
La connexion aux fichiers est en HFSQL et est bien ouverte. La requête est écrite dans la variable sSQL. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 16 mensajes |
|
| Publicado el 08,enero 2019 - 15:16 |
Bonjour
Avec le code complet, c est différent Tu as un problème de contexte
Mais l 'intérêt de mettre à la fois l exécution de la requête et le remplissage de la table dans un traitement parallèle. Si tu sors l exécution de la requête de ton traitement parallèle, ça fonctionne ! |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 81 mensajes |
|
| Publicado el 08,enero 2019 - 16:04 |
FM a écrit : > Si tu sors l exécution de la requête de ton traitement parallèle, ça fonctionne !
Oui ça fonctionne mais ça bloque le logiciel, c'est bien ça l'intérêt de la tâche parallèle. |
| |
| |
| | | |
|
| | | | |
| | |
|