| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 04 mars 2014 - 19:39 |
Hello,
Depuis la màj avec la version WD19, je rencontre un problème avec des requêtes avec date
Exemple : SELECT SUM(Heures.NbrHeures) AS SommeNbrHeures FROM Heures WHERE Heures.IDEmployés = {rqIdEmployé} AND Heures.TypeHeure = {rqTypeHeure} AND LEFT(Heures.DateHeureDu ,{rqModeDate} ) = {rqPériode}
Cette requête fait la somme des heures pour une période donnée (Ex : rqModeDate = 6 et rqPériode = 201402) permettait d'obtenir un résultat par Année, Année & mois, ainsi qu'une date.
Avec les version WDx antérieur aucun problème, mais depuis la WD19, la requête fonctionne anormalement 201401 OK seulement le mois de janvier 201402 ? février et mars !!! 201403 ok seulement mars
fait le test avec 201302 et là j'ai les données de février à septembre 2013
J'ai refais les tests avec la WD18 & HFSQL 18, et la miracle tout est correct
Je suis ouvert à toute suggestion, j'ai plusieurs requêtes sûr ce principe, mais depuis la màj chez clients, c'est le bord.. et comme c'est les heures de timbrages ça gue... dans les chaumières ...
Merci d'avance, @+ Phil
-- BonDev, @+ Phil |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 936 messages Popularité : +53 (65 votes) |
|
Posté le 04 mars 2014 - 19:55 |
Bonjour,
Je suggère de créer une requête "détail" en rajoutant LEFT(Heures.DateHeureDu ,{rqModeDate} ) et Heures.DateHeureDu dans le résultat de votre requête pour comprendre pourquoi ces enregistrements sont sélectionnés.
-- Bon dev. Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 04 mars 2014 - 20:14 |
Hello Jean-Pierre,
Merci pour votre réponse, j'ai déjà tester la(es) requêtes en affichant le détail, et c'est là que j'ai constaté les dates aberrantes en résultat Je vais passer ma nuit à modifier mes requêtes ~25 et refaire un test projet complet ...
Avec des BETWEEN, cette méthode fonctionne, mais elle est beaucoup plus lente
SELECT SUM(Heures.NbrHeures) AS SommeNbrHeures FROM Heures WHERE Heures.IDEmployés = {rqIdEmployé} AND Heures.TypeHeure = {rqTypeHeure} AND Heures.DateHeureDu BETWEEN {rqDateDu} AND {rqDateAu}
Encore merci, et bonne fin de soirée.
-- BonDev, @+ Phil |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +1 (1 vote) |
|
Posté le 23 avril 2014 - 16:32 |
J'ai un souci identique (ou presque) sur une requête de même type...
La requête fonctionne très bien sauf pour les derniers jours de chaque mois... Si je passe le 29 avril en paramètre pas de soucis, mais le 30 avril me fais obtenir toutes les dates supérieures ou égales au 30 avril. Ci-après le résultat de la requête (Colonne 1 le paramètre passé Colonne 2 les enregistrements obtenus) En passant une date différente du dernier jour du mois : 20140425 - 20140425 20140425 - 20140425 En passant une date égale au dernier jour d'un mois (car identique pour tous les derniers jours du mois) 20140430 - 20140607 20140430 - 20140518 20140430 - 20140510 20140430 - 20140525 20140430 - 20140512 20140430 - 20140608 20140430 - 20140517 20140430 - 20140519 20140430 - 20140615 20140430 - 20140607 20140430 - 20140618 20140430 - 20140721 20140430 - 20140816 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 940 messages Popularité : +66 (68 votes) |
|
Posté le 23 avril 2014 - 16:50 |
Bonjour,
essayer la fonction SUBSTR() plutôt que LEFT()
SELECT Sum(Heures.NbrHeures) AS SommeNbrHeures FROM Heures WHERE Heures.IDEmployés = {rqIdEmployé} AND Heures.TypeHeure = {rqTypeHeure} AND SUBSTR(Heures.DateHeureDu ,1,{rqModeDate} ) = {rqPériode}
bon dèv |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 940 messages Popularité : +66 (68 votes) |
|
Posté le 23 avril 2014 - 18:04 |
mais c'est quand même un gros soucis que la fonction Left ne fonctionne pas correctement sur une rubrique de type DateHeure :'(
je viens d'envoyer une requete au ST on verra.... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 940 messages Popularité : +66 (68 votes) |
|
Posté le 23 avril 2014 - 18:41 |
re bonjour,
donc voici la réponse du ST.
//.... Je vous tiens informé dès que je dispose de leur retour. Dans l'immédiat, l'utilisation de WL.Gauche à la place du LEFT peut également constituer un paliatif.
Référence à rappeler pour tout contact à ce sujet : 86 808/204382. //.... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 18 messages Popularité : +1 (1 vote) |
|
Posté le 24 avril 2014 - 08:29 |
Hello Christophe,
Merci pour vos démarches auprès du ST.
Ce problème m'a fait apparaître d'autres cas, et j'ai dû tout reprendre mes requêtes et les tester 1 à 1 Mes clients ont eu de la peine à croire à ce type de problème ... qui à comme résultat de faire n'importe quoi dans les calculs, et à créé une perte de confiance dans les résultats calculés
BonDev @+ Phil
-- BonDev, @+ Phil |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +1 (1 vote) |
|
Posté le 24 avril 2014 - 22:32 |
J'avais également fait une requête au ST. Et ils viennent de sortir un correctif : incident 86808/366356. Merci pour leur réactivité. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 576 messages Popularité : +17 (25 votes) |
|
Posté le 25 avril 2014 - 15:45 |
Bonjour,
Le correctif apporté par notre équipe Développement a été ajouté dans les ressources pratiques (lien "Liste des modules correctifs disponibles de WINDEV, WEBDEV, WINDEV Mobile") : http://www.pcsoft.fr/st/nouveautes-st.html
Il concerne exclusivement l'utilisation du type dateheure, dans une commande LEFT d'une clause WHERE d'une requête SQL.
Veuillez nous excuser pour le contretemps occasionné.
-- Guillaume Bayle (Twitter : @GuillaumeBayle) Support Technique PC SOFT http://www.pcsoft.fr/st/index.html |
| |
| |
| | | |
|
| | |