PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HCreeVue et les threads
HCreeVue et les threads
Débuté par Guillaume, 18 sep. 2017 17:19 - 12 réponses
Posté le 18 septembre 2017 - 17:19
Bonjour, mon problème est le suivant
Je tente de creer la vue d'une table d'une bdd mysql distante afin d'éviter les lenteurs réseau
Lorsque je la creer dans le chargement de mon projet, tout est ok
Mais dès lors que je la crée en differée ou dans un thread, ma vue est vide...

Avez vous une solution ? ai-je loupé une info ? :/
Membre enregistré
6 messages
Popularité : +1 (1 vote)
Posté le 18 septembre 2017 - 17:55
A contrario, en HF, tous se passe bien :/
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 18 septembre 2017 - 20:47
Coucou,

Deux idée au cas ou sa te serais au utiles ...

1) essaye avec threadexecute + threadCopieLégèreContexteHFSQL
2) tu geres ton HSurErreur avant l'appell de ton threadexecute ? - Et si oui, aucune erreur dans le fichier de trace ?
3) Tu peut faire un copier / coller de code ?

--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
Nasi Goreng en Indonesie ;-) - #oulouou
Char Kuey Tiao en Malaisie ;-) - #OKLM
Ratatouille en Provence ;-)
irc.freenode.net - ##pcsoft
Membre enregistré
6 messages
Popularité : +1 (1 vote)
Posté le 19 septembre 2017 - 09:09
Bonjour, merci pour cette réponse
J'utilise pas de HSurErreur :/ j'ai tester avec threadCopieLégèreContexteHFSQL mais le probleme persiste

Voici mon code

si je met le code dans le chargement du projet, et que tout ce passe bien
HCréeVue(VBureau,Bureau,"*","IDBureau","",hVueDéfaut)


si je creer la vue en differrée
//code du chargement du projet
HCréeVue(VBureau,Bureau,"*","IDBureau","",hVueDifférée)
ThreadExecute("CreeVue",threadNormal,CreeVue)

//code de la procedure globale "CreeVue"
HExécuteVue(VBureau)
Message modifié, 19 septembre 2017 - 09:10
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 19 septembre 2017 - 13:43
Coucou,

1)ThreadExecute et base de donnée => HSurErreur OBLIGATOIRE.
2) hVueDéfaut <> hVueDifférée
dans le code gerer pas hVueDifférée tu fais pas de HExécuteVue / HDétruitVue (https://doc.pcsoft.fr/?1000003044079&name=hexecutevue_exemple)

3) Bonus: ThreadExecute avec le parametre threadCopieLégèreContexteHFSQL ? (https://doc.pcsoft.fr/fr-FR/?3077024)

(J'avais fait une réponse plus simpas, mais elle c perdu dans le post désoler)

Jespere que sa te seras utile ;)

--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
Nasi Goreng en Indonesie ;-) - #oulouou
Char Kuey Tiao en Malaisie ;-) - #OKLM
Ratatouille en Provence ;-)
irc.freenode.net - ##pcsoft
Membre enregistré
6 messages
Popularité : +1 (1 vote)
Posté le 19 septembre 2017 - 14:14
Bonjour,
Merci de prendre sur ton temps pour me repondre :)
Pardon j'espérais que ce soit compréhensible je la refais

1er cas qui fonctionne
HCréeVue(VBureau1,Bureau,"*","IDBureau","",hVueDéfaut)


2eme cas, celui qui me pose probleme
//Code situé dans le chargement du projet
HCréeVue(VBureau2,Bureau,"*","IDBureau","",hVueDifférée)
ThreadExecute("CreeVue",threadNormal,CreeVue)
//Thread testé threadCopieLégèreContexteHFSQL lors de ta première réponse.

//Code situé dans la procédure locale "CreeVue"
Procedure CreeVue()
HExécuteVue(VBureau2)
//Traitement
HDétruitVue


je regarde du coté de HSurErreur, merci :)
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 19 septembre 2017 - 14:46
Coucou,

et si tu met ton HCréeVue(VBureau2,Bureau,"*","IDBureau","",hVueDifférée) dans CreeVue ?


Procedure CreeVue()

HCréeVue(VBureau2,Bureau,"*","IDBureau","",hVueDifférée)

HExécuteVue(VBureau2)
//Traitement
HDétruitVue


hVueDifférée La vue est créée, mais sera exécutée en différé avec la fonction HExécuteVue. Les données de la vue seront celles correspondant au moment de l'exécution de la vue.

il doit la pas trouver ^^

HSurErreur("*", hErrTout, "Trace")

procedure global trace
Trace(HErreurinfo(errcomplet)) // un truc dans le genre (jai pas finit les ***** de mise a jour de windev, mon ordi a laché hier ...)

--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
Nasi Goreng en Indonesie ;-) - #oulouou
Char Kuey Tiao en Malaisie ;-) - #OKLM
Ratatouille en Provence ;-)
irc.freenode.net - ##pcsoft
Message modifié, 19 septembre 2017 - 14:48
Membre enregistré
6 messages
Popularité : +1 (1 vote)
Posté le 19 septembre 2017 - 15:45
Alors,
pour ce qui est de faire ceci :
Procedure CreeVue()

HCréeVue(VBureau2,Bureau,"*","IDBureau","",hVueDifférée)

HExécuteVue(VBureau2)
//Traitement
HDétruitVue


dès que je tente d'acceder a la vue, il plante, "VBureau" n'est pas initialisée :/

Quand HsurErreur ci dessous
HSurErreur("*", hErrTout)
Trace(HErreurInfo(hErrComplet))

Testé dans tous les cas cités dans ce fil de discussion ^^
Renvoi a chaque fois
Code erreur : 0<\r><\n>Niveau : pas d'erreur<\r><\n>


Je crois bien que je vais abandonner l'idée du thread ou de la création depuis une autre fenêtre ^^
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 19 septembre 2017 - 16:14
Coucou,

Allez si on va y arriver :p

Dans ton code d'initialisation de project

HSurErreur("*", hErrTout, GHSurErreur)


Dans une collection de procedure
Procedure PUBLIC GHSurErreur()
// Trace
Trace(HErreurInfo(errComplet))


// HCréeVue(VBureau2,Bureau,"*","IDBureau","",hVueDifférée)
// ThreadExecute("CreeVue",threadNormal,CreeVue)

ThreadExecute("CreeVue",threadNormal,CreeVue, VBureau2)

Procedure CreeVue(_sdDataSource)

HExécuteVue(sdDataSource)
//Traitement
HDétruitVue(sdDataSource)


--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
Nasi Goreng en Indonesie ;-) - #oulouou
Char Kuey Tiao en Malaisie ;-) - #OKLM
Ratatouille en Provence ;-)
irc.freenode.net - ##pcsoft
Membre enregistré
6 messages
Popularité : +1 (1 vote)
Posté le 20 septembre 2017 - 09:45
Bonjour,

J'ai tout fait comme tu m'as indiqué, HExecuteVue vaut Vrai, mais ma vue reste vide ^^
En faite je pense que je peux pas creer de vue sur une source de données globale au projet dans une autre fenetre que celle de l'initialisation, quand je suis sur un serveur MySQL
Membre enregistré
6 messages
Popularité : +1 (1 vote)
Posté le 20 septembre 2017 - 17:22
A n'y rien comprendre, mon problème est résolu alors que je n'ai rien changé depuis ce matin ^^

Merci de ton aide
Posté le 23 septembre 2017 - 08:21
Bonjour,
Je me permet de vous répondre car je cherche à me connecter à une base MySQL et je n'y arrive pas.
Depuis Windev, j'ai bien alimenté tous les champs pour permettre la connexion mais rien n'y fait.
Ai-je oublié un paramètre dans le code suivant ?

MaConnexion est une Connexion
MaConnexion..Utilisateur = SAI_UTILISATEURMySQL
MaConnexion..MotDePasse = SAI_MOTDEPASSEMySQL
MaConnexion..Serveur = SAI_SERVEURMySQL
MaConnexion..BaseDeDonnées = SAI_BASEDONNEESMySQL
MaConnexion..Provider = hAccèsNatifMySQL
MaConnexion..Accès = hOLectureEcriture
MaConnexion..InfosEtendues = "Server Port : 35152"
MaConnexion..OptionsCurseur = hCurseurClient
SI PAS HOuvreConnexion(MaConnexion) ALORS
Info("Erreur de connexion au serveur MySQL !"+RC+HErreurInfo())
SINON
Info("Connexion au serveur MySQL réussie !")
FIN

Merci pour votre aide.
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 23 septembre 2017 - 21:29
Coucou,

Quelle erreur te revoie HErreurinfo() ?

Et au hazard
MaConnexion..InfosEtendues = "Server Port : 35152" // Tu devrais pas mettre un ';' ? "Server Port : 35152;"


--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
Nasi Goreng en Indonesie ;-) - #oulouou
Char Kuey Tiao en Malaisie ;-) - #OKLM
Ratatouille en Provence ;-)
irc.freenode.net - ##pcsoft
Message modifié, 23 septembre 2017 - 21:30