pourquoi ma requête marche chez moi, mais ne marche pas chez le client ?
Le
JC
Bonjour
Je lance ici une discussion que jai entamée à la fin dune autre s=
ans
rapport, ceci afin que tout le monde puisse la voir (et y
répondre :-) ).
Jai une application qui sinstalle chez mon client dans « mes
documents » car il na pas de droit admin. Jai fait généré
linstallation par windev avec le framework contenant les DLL
nécessaires à lappli (proposée par wd) intégré à lexécu=
table (jai
essayé aussi avec le framework à part, mais le problème reste le
même).
Une fois installée, mon appli fonctionne très bien à 95%: les fichier=
s
sont créés parfaitement, leurs mises à jour se passent sans problèm=
e
(quand j'ouvre les fichiers, leurs contenus sont nikel), mais
certaines fenêtres qui utilisent des requêtes non intégrées pour
afficher mes fichiers ne renvoient aucun résultat. Après de nombreux
tests, il savère que le problème est uniquement sur les requêtes a=
vec
deux jointures (je ne sais pas si cest le bon terme, excusez-moi ).
Celles avec une seule jointure fonctionnent très bien chez le client
et chez moi. Je précise que les fichiers de données sont au bon
endroit chez le client, et que leurs contenus sont ceux attendus. Il
ne faut donc pas chercher a piori sur un problème de contenu ou de
localisation de fichier (le fichier REP est Ok, les propriétés
Répertoire aussi).
Pour en revenir aux requêtes à double jointure, la requête ci-dessous
par exemple ne donne aucun résultat chez le client (et le
HExecuteRequête renvoie vrai), mais fonctionne très bien chez moi :
SELECT
Diapositive.Numéro AS Numéro,
Diapositive.Titre AS Titre,
Diapositive_MotClé.UnMot AS UnMot,
Diapositive_MotClé.Numéro_Diapositive AS Numéro_Diapositive,
MotClé.UnMotClé AS UnMotClé
FROM
MotClé,
Diapositive_MotClé,
Diapositive
WHERE
Diapositive_MotClé.UnMot =
MotClé.UnMotClé
AND Diapositive_MotClé.Numéro_Diapositive =
Diapositive.Numéro
AND
(
MotClé.UnMotClé IN ('voiture', 'rouge', 'maison')
)
Alors que celle-ci fonctionne très bien chez le client et chez moi :
SELECT
Diapositive.Numéro AS Numéro,
Diapositive.Titre AS Titre,
Diapositive_MotClé.UnMot AS UnMot,
Diapositive_MotClé.Numéro_Diapositive AS Numéro_Diapositive
FROM
Diapositive,
Diapositive_MotClé
WHERE
Diapositive_MotClé.Numéro_Diapositive =
Diapositive.Numéro
AND
(
Diapositive_MotClé.UnMot IN ('voiture', 'rouge',
'maison')
)
Pour info, jai créé mes requêtes avec lassistant Windev, et aus=
si
directement en SQL. Ensuite je les ai testées directement depuis WDMAP
(pas de problème, elles fonctionnent toutes chez moi), puis je les ai
reliées à des tables dans des fenêtres, et ça fonctionne très bie=
n
chez moi.
Est-ce que cest moi qui fais une erreur dans les requêtes, dans
linstallation ou est-ce un bug Windev ?
JC
Je lance ici une discussion que jai entamée à la fin dune autre s=
ans
rapport, ceci afin que tout le monde puisse la voir (et y
répondre :-) ).
Jai une application qui sinstalle chez mon client dans « mes
documents » car il na pas de droit admin. Jai fait généré
linstallation par windev avec le framework contenant les DLL
nécessaires à lappli (proposée par wd) intégré à lexécu=
table (jai
essayé aussi avec le framework à part, mais le problème reste le
même).
Une fois installée, mon appli fonctionne très bien à 95%: les fichier=
s
sont créés parfaitement, leurs mises à jour se passent sans problèm=
e
(quand j'ouvre les fichiers, leurs contenus sont nikel), mais
certaines fenêtres qui utilisent des requêtes non intégrées pour
afficher mes fichiers ne renvoient aucun résultat. Après de nombreux
tests, il savère que le problème est uniquement sur les requêtes a=
vec
deux jointures (je ne sais pas si cest le bon terme, excusez-moi ).
Celles avec une seule jointure fonctionnent très bien chez le client
et chez moi. Je précise que les fichiers de données sont au bon
endroit chez le client, et que leurs contenus sont ceux attendus. Il
ne faut donc pas chercher a piori sur un problème de contenu ou de
localisation de fichier (le fichier REP est Ok, les propriétés
Répertoire aussi).
Pour en revenir aux requêtes à double jointure, la requête ci-dessous
par exemple ne donne aucun résultat chez le client (et le
HExecuteRequête renvoie vrai), mais fonctionne très bien chez moi :
SELECT
Diapositive.Numéro AS Numéro,
Diapositive.Titre AS Titre,
Diapositive_MotClé.UnMot AS UnMot,
Diapositive_MotClé.Numéro_Diapositive AS Numéro_Diapositive,
MotClé.UnMotClé AS UnMotClé
FROM
MotClé,
Diapositive_MotClé,
Diapositive
WHERE
Diapositive_MotClé.UnMot =
MotClé.UnMotClé
AND Diapositive_MotClé.Numéro_Diapositive =
Diapositive.Numéro
AND
(
MotClé.UnMotClé IN ('voiture', 'rouge', 'maison')
)
Alors que celle-ci fonctionne très bien chez le client et chez moi :
SELECT
Diapositive.Numéro AS Numéro,
Diapositive.Titre AS Titre,
Diapositive_MotClé.UnMot AS UnMot,
Diapositive_MotClé.Numéro_Diapositive AS Numéro_Diapositive
FROM
Diapositive,
Diapositive_MotClé
WHERE
Diapositive_MotClé.Numéro_Diapositive =
Diapositive.Numéro
AND
(
Diapositive_MotClé.UnMot IN ('voiture', 'rouge',
'maison')
)
Pour info, jai créé mes requêtes avec lassistant Windev, et aus=
si
directement en SQL. Ensuite je les ai testées directement depuis WDMAP
(pas de problème, elles fonctionnent toutes chez moi), puis je les ai
reliées à des tables dans des fenêtres, et ça fonctionne très bie=
n
chez moi.
Est-ce que cest moi qui fais une erreur dans les requêtes, dans
linstallation ou est-ce un bug Windev ?
JC

Poser une question


Es-tu sûr que tes fichiers de données et ceux de ton client
contiennent les mêmes enregistrements ? Que le fichier, dans ton
exemple, MotClé n'est pas vide chez le client ? Car je ne vois à
priori pas d'autres explications, tes requêtes sont correctes (prouvé
par le fait que le HExecuteRequete renvoie vrai)
Yannick
Oui, je suis sûr que les fichiers chez le client sont bons, car j'ai
fait des fenêtres qui affichent leurs contenus sans aucun traitement,
et tout est OK à l'écran.
Ca me rassure que la requête soit OK (je ne suis pas pro en SQL). Peut-
être est-ce dans l'installation que je fait quelque chose de mal ?
JC
et avec 2 jonture mais sur les 2 premieres tables ?
FROM
MotClé,
Diapositive_MotClé
est ce que cela fonctionne chez les 2 ? car la requete qui fonctionne chez
les 2 n'utilise pas la table MotCle
sinon essayez cette requete qui est la meme que la votre sur les 3 tables
SELECT
Diapositive.Numéro AS Numéro,
Diapositive.Titre AS Titre,
Diapositive_MotClé.UnMot AS UnMot,
Diapositive_MotClé.Numéro_Diapositive AS Numéro_Diapositive,
MotClé.UnMotClé AS UnMotClé
FROM
MotClé
JOIN Diapositive_MotClé ON Diapositive_MotClé.UnMot =MotClé.UnMotClé
JOIN Diapositive ON Diapositive_MotClé.Numéro_Diapositive =
Diapositive.Numéro
WHERE
MotClé.UnMotClé IN ('voiture', 'rouge', 'maison')
PS je fais des requetes en HF sur des jointure allant sur 5 ou 6 tables sans
problemes
ne pas oubliez dans le Exexcute de mettre HsansCorrection
Bon dev
@+
"JC"
Bonjour
Oui, je suis sûr que les fichiers chez le client sont bons, car j'ai
fait des fenêtres qui affichent leurs contenus sans aucun traitement,
et tout est OK à l'écran.
Ca me rassure que la requête soit OK (je ne suis pas pro en SQL). Peut-
être est-ce dans l'installation que je fait quelque chose de mal ?
JC
J'ai suivi un peu ton problème .
Il y a une chose que je ne comprends pas .
Pourquoi dans un premier , n'installes-tu pas ton logiciel en tant
qu'admin sur le poste de ton client.
Tu verras bien si cela fonctionne.
Je comprends que tu souhaites résoudre le problème, mais cela peut
venir ensuite.
Bon dev.
Gilles
JC a présenté l'énoncé suivant :
je ne vois pas comment faire ça vu mon analyse. A priori, je n'ai pas
les champs et tables nécessaires. SI vous voulez, je peux vous donner
le détail de l'analyse; elle est très très simple je vous rassure.
j'ai essayé votre requête. Elle ne marche pas chez mon client, mais
marche très bien chez moi.
j'en suis convaincu, et c'est une des raisons qui m'a fait acheter WD.
je fais Hexecute avec HrequeteDefaut, ce n'est pas bon ?
JC