|
| Home → WINDEV 2025 → Remplir une table associé à un tableau de Classe en executant une requête asynchrone avec affichage progressif |
| Remplir une table associé à un tableau de Classe en executant une requête asynchrone avec affichage progressif |
| Started by Ralph IGCI, Nov., 07 2025 5:40 PM - 3 replies |
| |
| | | |
|
| |
Registered member 521 messages |
|
| Posted on November, 07 2025 - 5:40 PM |
Je veux Remplir une table associé à un tableau de Classe en executant une requête asynchrone avec affichage progressif J'ai ce code:
REQ_TousProduits.ExécuteRequêteAsynchrone( NouvelleDonnée,FinRecupération)
PROCEDURE INTERNE NouvelleDonnée(NouvelEnregistrement est un Enregistrement de REQ_TousProduits) Table_client.AjouteLigne(NouvelEnregistrement.Libellé,NouvelEnregistrement.Description ) RENVOYER Vrai FIN
PROCEDURE INTERNE FinRecupération(nEtat est un entier) SELON nEtat CAS heraOK : Info("Traitement terminé") CAS heraAnnulée : Info("Traitement annulé") AUTRE CAS : Erreur("Une erreur est survenue", HErreurInfo()) FIN FIN
Il remplie très bien la table au fur et à mesure.
Mais, si le champ table_Client est associé à un tableau Tabclient de la classe MCLIENT, il faut utiliser tableaffiche à la fin de la récupération dans heraOK.
Comment faire dans ce cas pour afficher au fur et à Mesure que les lignes s'ajoutente ?
J'ai ce code: [code:wl] Tabclient est un tableau de MCLIENT
REQ_TousProduits.ExécuteRequêteAsynchrone( NouvelleDonnée,FinRecupération)
PROCEDURE INTERNE NouvelleDonnée(NouvelEnregistrement est un Enregistrement de REQ_TousProduits) monclient est un MCLIENT<-NouvelleDonnée Tabclient.ajoute(monclient) RENVOYER Vrai FIN
PROCEDURE INTERNE FinRecupération(nEtat est un entier) SELON nEtat CAS heraOK : Table_client.affiche() CAS heraAnnulée : Info("Traitement annulé") AUTRE CAS : Erreur("Une erreur est survenue", HErreurInfo()) FIN FIN
Le problème c'est qu'il attend la fin pour exécuter Table_client.affiche() |
| |
| |
| | | |
|
| | |
| |
Registered member 4,303 messages |
|
| Posted on November, 07 2025 - 6:21 PM |
Bonjour, As tu tenté de remplacer
monclient est un MCLIENT<-NouvelleDonnée
Tabclient.ajoute(monclient) Par
FichierVersTableau(tabClient,REQ_TousProduits) TableAffiche(TABLE_Client)
-- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFM |
| |
| |
| | | |
|
| | |
| |
Registered member 521 messages |
|
| Posted on November, 08 2025 - 9:59 AM |
Bonjour, Dans une procédure asynchrone, on ne peut le faire qu'à la fin dans FinRecupération( La vraie question comment remplir une table de façon asynchrone si c'est un tableau de variable? |
| |
| |
| | | |
|
| | |
| |
Registered member 51 messages |
|
| Posted on November, 10 2025 - 12:13 PM |
Bonjour,
A mon avis, le rafraichissement de la table lors du chargement nécessite des ressources qu'il convient d'économiser pour augmenter les performances. Une progressbar devrait suffire pour faire patienter l'utilisateur.
Néanmoins, pour répondre à ton besoin, si nous avons une table CLIENT contenant IDCLIENT, NOM, ADRESSE lié sur une CLASSE MCLIENT et une fenêtre contenant une variable de type tableau de MCLIENT lié à la table TABLE_TabClients:
sdClients est Source dede Données
sSql est chaîne = "SELECT IDCLIENT, NOM, ADRESSE FROM CLIENT"
SI PAS HExécuteRequêteSQLAsynchrone(sdClients, hRequêteInterruptible, sSql, TraiteChaqueEnregistrement, FinDuChargement) ALORS Erreur("Echec!", HErreurInfo(hErrComplet)) FIN
Trace("I'm asynchrone")
PROCEDURE INTERNE TraiteChaqueEnregistrement(enreg est un Enregistrement de CLIENT) MonClient est un MCLIENT MonClient = enreg tabClients.Ajoute(MonClient) TableAffiche(TABLE_TabClients) FenRepeint(FEN_Table_Client) FIN
PROCEDURE INTERNE FinDuChargement() Trace("Fin") TableAffiche(TABLE_TabClients) FIN
A noter que l'exécution de la requête ne bloque pas. Tu peux ajouter des traitements métiers qui ne doivent pas considérer que la table est complètement remplie.
En espérant avoir un peu aidé.
-- La complexité d'une solution doit être adaptée à la complexité du problème qu'elle essaye de résoudre. |
| |
| |
| | | |
|
| | | | |
| | |
|