PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → La source de données n'est plus valide...
La source de données n'est plus valide...
Débuté par Laurent Petr, 30 sep. 2016 09:15 - 7 réponses
Membre enregistré
12 messages
Posté le 30 septembre 2016 - 09:15
Bonjour,

J'ai un message d'erreur à l'ouverture d'une fenêtre qui contient une table affichant le résultat d'une requête.
J'ai un HExécuteRequête lié à cette requête en initialisation de la table.
Le message d'erreur, qui s'affiche dès l'ouverture e la fenêtre est :
"La source de données <nom de ma requete> du champ <nom de ma table> n'est plus valide.
- si vous avez déclaré une source de données locale, déplacez cette déclaration en global
- si vous avez appelé HExecuteRequete(), appelez ListeAffiche, TableAffiche ou Zone RépétéeAffiche() ensuite"

Cette table fonctionne pourtant exactement de la même façon que des dizaines d'autres dans mon logiciel.
J'ai essayé de la supprimer et de la recréer et cela n'a pas réglé le problème.

Je suis en BDD HFSQL et Windev 18.

Une idée ? Merci !

Bonne journée
Laurent
Membre enregistré
199 messages
Popularité : +14 (16 votes)
Posté le 30 septembre 2016 - 10:58
Bonjour,

Si votre table est lié à la requête, il ne faut pas de HExécuteRequête dans le code d'initialisation de la table.

--
Bon développement

Pierre Devillers
Membre enregistré
12 messages
Posté le 30 septembre 2016 - 15:04
Bonjour,

Merci pour la réponse !
J'ai fait ça car il faut passer une variable à la requête.
De plus, le contenu de la table est parfois réaffiché (ajout ou suppression d'un élément) et du coup, le HExécuteRequête a pour paramètre tainit.
je procède de la même façon avec de nombreuses autres tables et ça fonctionne sans pb.

Bonne journée
Laurent
Membre enregistré
199 messages
Popularité : +14 (16 votes)
Posté le 30 septembre 2016 - 16:40
Re,

J'entends bien, mais en fait ce qui me parait le plus bizarre, c'est que cela fonctionne.
Je peux me tromper, mais il me semble que la bonne façon de procéder avec une table basée sur une requête est :
Dans le code d'initialisation:
MaSource.Parametre1=MonParametre
MaSource.Parametre2= MonAutreParametre
......

Quant à la façon de réactualiser la table:
TableAffiche(MaTable, TaInit) ou TableAffiche(MaTable, TaReexecuteRequete)

--
Bon développement

Pierre Devillers
Membre enregistré
12 messages
Posté le 03 octobre 2016 - 18:21
Bonjour,

Merci.
Ok. Il me semble qu'à une époque la requête n'était pas réexécutée si on ne mettait pas le HExécuteRequête dans l'initialisation.

J'ai fait des tests, et même en supprimant le HExécuteRequête dans l'initialisation, j'ai la même erreur...

Bonne fin de journée
Laurent
Posté le 03 octobre 2016 - 18:41
Conseil : Supprimes ceci
MaSource.Parametre1=MonParametre
MaSource.Parametre2= MonAutreParametre


Et éxcutes toi même ta requête.
Membre enregistré
199 messages
Popularité : +14 (16 votes)
Posté le 04 octobre 2016 - 12:02
Bonjour,

Petite question pour Ralph :
Qu'est-ce qui motive le fait de ne pas faire des tables basées sur une requête ? Peux-tu nous faire partager ton expérience sur le sujet ?

Pour Laurent :
As-tu essayé en mettant l'initialisation de ta requête dans l'initialisation de la fenêtre ?
As-tu essayé de faire une requête intégrée à ta table ?
As-tu bien vérifié que le nom de ta requête est bien celle renseignée dans ta table ?

--
Bon développement

Pierre Devillers
Membre enregistré
12 messages
Posté le 12 octobre 2016 - 11:47
Bonjour,

Merci pour les réponses.

Exécuter la requête dans l'initialisation de la fenêtre ne règle pas le problème.
A noter que l'erreur ne se produit que si la requête renvoie des enregistrements.

Finalement, j'ai créé une nouvelle requête avec le même code SQL et cela semble régler le pb...

Bonne journée
Laurent