IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème d'exécution de requête


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Par défaut Problème d'exécution de requête
    Bonjour tout le monde,

    Une petite question mais de gros problèmes pour moi! Je m'explique :

    Je développe sous Access avec une base de donnée SQL Server! De nuit et tous les jours depuis 6 mois le serveur exécute certaines requêtes et autres procédure stoquées et voilà que depuis qql temps des problèmes apparaissent!

    Il y a notamment un truc que je n'arrive pas à m'expliquer! Quand j'exécute certaines requêtes depuis access ou depuis le client SQL Server de mon poste de travail, pas de problème, tout se passe sans soucis et la vie est belle! Mais si je les exécute depuis le serveur, il me fait une erreur de conversion de type! Du coup ben les procédures de nuits qui utilisent cette maudite requête ne peuvent s'exécuter correctement!!! Je pète un plomb!

    L'erreur porte sur une conversion de Date que le serveur ne peut pus faire... je dois dire que je suis complètement dans les choux!

    Quelqu'un aurait-il une idée pour me sortir de là?

    Merci bien et bonne journée

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Pourrais-tu poster la requête qui pose problème ? En ce qui concerne la conversion de Date, es-tu certain que le champs que tu tentes de convertir en DateTime est correctement complété (p.e. un texte qui ne serait pas une date)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Par défaut
    Salut Cavo789,

    Merci de t'intéresser à mon problème,

    voici le code de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    SELECT     TOP (100) PERCENT dbo.rq_ges_heures_gestion_1.moba_semaine, 
                          SUM(CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          AS moba_ponc, SUM(CASE WHEN moba_absh = 0 THEN (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) 
                          + (CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          ELSE (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) END) AS moba_hjcp, SUM(dbo.rq_ges_heures_gestion_1.moba_absh) 
                          AS moba_absh, SUM(CASE WHEN moba_absh = 0 THEN (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) 
                          + (CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          ELSE (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) END - dbo.rq_ges_heures_gestion_1.moba_absh) AS moba_hp, 
                          SUM(CASE WHEN moba_noempl < 9000 THEN (CASE WHEN moba_absh = 0 THEN (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) 
                          + (CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          ELSE (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) END - dbo.rq_ges_heures_gestion_1.moba_absh) ELSE 0 END) 
                          AS moba_hptitu, 
                          SUM(CASE WHEN moba_noempl >= 9000 THEN (CASE WHEN moba_absh = 0 THEN (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) 
                          + (CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          ELSE (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) END - dbo.rq_ges_heures_gestion_1.moba_absh) ELSE 0 END) 
                          AS moba_hpstag, SUM((CASE WHEN moba_absh = 0 THEN (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) 
                          + (CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          ELSE (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) END - dbo.rq_ges_heures_gestion_1.moba_absh) 
                          * (CASE WHEN pdv_para_gestion_semaine_pourcent IS NOT NULL THEN pdv_para_gestion_semaine_pourcent ELSE pdv_para_ges_pourcent END) 
                          / 100) AS moba_hpfinal, 
                          SUM(CASE WHEN moba_noempl < 9000 THEN (CASE WHEN moba_absh = 0 THEN (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) 
                          + (CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          ELSE (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) END - dbo.rq_ges_heures_gestion_1.moba_absh) 
                          * (CASE WHEN pdv_para_gestion_semaine_pourcent IS NOT NULL THEN pdv_para_gestion_semaine_pourcent ELSE pdv_para_ges_pourcent END) 
                          / 100 ELSE 0 END) AS moba_hpfinaltitu, 
                          SUM(CASE WHEN moba_noempl >= 9000 THEN (CASE WHEN moba_absh = 0 THEN (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) 
                          + (CASE WHEN moba_jour_sem <= 5 THEN dbo.tb_pdv_para.pdv_para_pont * dbo.rq_ges_heures_gestion_1.moba_taux / 100 ELSE 0 END) 
                          ELSE (CASE WHEN moba_jour_sem <= 5 THEN moba_hjc ELSE 0 END) END - dbo.rq_ges_heures_gestion_1.moba_absh) 
                          * (CASE WHEN pdv_para_gestion_semaine_pourcent IS NOT NULL THEN pdv_para_gestion_semaine_pourcent ELSE pdv_para_ges_pourcent END) 
                          / 100 ELSE 0 END) AS moba_hpfinalstag, SUM(CASE WHEN moba_noempl >= 9000 THEN moba_hpres * moba_taux / 100 ELSE moba_hpres END) 
                          AS moba_hpresence, SUM(CASE WHEN moba_noempl >= 9000 THEN 0 ELSE moba_hpres END) AS moba_hpresence_titu, 
                          SUM(CASE WHEN moba_noempl >= 9000 THEN moba_hpres * moba_taux / 100 ELSE 0 END) AS moba_hpresence_stag, 
                          SUM(CASE WHEN moba_noempl >= 9000 THEN moba_hpres ELSE 0 END) AS moba_hpresence_stag100, 
                          SUM(dbo.rq_ges_heures_gestion_1.moba_ecart) AS moba_ecart, dbo.tb_pdv_para.pdv_para_ges_pourcent, 
                          CASE WHEN pdv_para_gestion_semaine_pourcent IS NOT NULL 
                          THEN pdv_para_gestion_semaine_pourcent ELSE pdv_para_ges_pourcent END AS pdv_para_ges_semaine_pourcent
    FROM         dbo.rq_ges_heures_gestion_1 INNER JOIN
                          dbo.tb_pdv_para ON dbo.rq_ges_heures_gestion_1.moba_annee = dbo.tb_pdv_para.annee LEFT OUTER JOIN
                          dbo.tb_pdv_gestion_pourcent ON dbo.rq_ges_heures_gestion_1.moba_semaine = dbo.tb_pdv_gestion_pourcent.pdv_para_gestion_semaine
    WHERE     (dbo.rq_ges_heures_gestion_1.moba_service < 15) AND (dbo.rq_ges_heures_gestion_1.moba_service > 0) AND 
                          (dbo.rq_ges_heures_gestion_1.moba_datum >= dbo.rq_ges_heures_gestion_1.moba_dentree) AND 
                          (dbo.rq_ges_heures_gestion_1.moba_datum <= dbo.rq_ges_heures_gestion_1.moba_dsortie)
    GROUP BY dbo.rq_ges_heures_gestion_1.moba_semaine, dbo.tb_pdv_para.pdv_para_ges_pourcent, 
                          CASE WHEN pdv_para_gestion_semaine_pourcent IS NOT NULL 
                          THEN pdv_para_gestion_semaine_pourcent ELSE pdv_para_ges_pourcent END
    ORDER BY dbo.rq_ges_heures_gestion_1.moba_semaine
    Dsl je te la donne un peu en fouilli comme ça mais si il te la faut un peu plus "sobre" je le ferai cet aprèm!

    Sinon ce qui me tarraude le ciboulo c'est qu'elle a marché pendant 6 mois et que maintenant que pouic!

    Mes paramètres n'ont pas changé, j'ai vérifier et revérifier!

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Oups... Impossible de t'aider comme cela sans devoir y passer trop de temps.

    Tu parles d'une erreur de conversion de type ==> as-tu isolé le champs qui provoque cette erreur ? Il me semble qu'il faudrait commencer par là non ?

    Vérifie un peu le type des champs
    • dbo.rq_ges_heures_gestion_1.moba_datum
    • dbo.rq_ges_heures_gestion_1.moba_dentree
    • dbo.rq_ges_heures_gestion_1.moba_datum
    • dbo.rq_ges_heures_gestion_1.moba_dsortie
    sont-ce des DateTime ?

    Un truc qui me chipote : SELECT TOP 100 PERCENT... En gros tout veux tout non ? Alors pourquoi "TOP 100 PERCENT" ?

    (tu t'y retrouves dans ton code ? Ca doit être galère pour modifier quelque chose non ? Ne peux-tu pas créer p.e. des user-defined functions pour rendre plus simple la maintenance ?)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Par défaut
    dsl j'ai pas pu répondre j'étais super à la bourre cet aprèm et là je dois me sauver.. merci pour ton aide et bonne soirée.... je reviens demain!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Par défaut
    voili j'ai un peu plus de temps maintenant (quoi que).

    Alors oui les champs que tu sites sont tous au bon format, des dates! Je ne sais pas encore lequel pose problème, ... j'y travaille. Mais bon il me semble que je fais plus de boulot dans le vide! Maintenant je ne sais pas si le format de date ou je ne sais quoi utilisé par les OS peuvent empêcher des requêtes de bien s'exécuter! Par exemple si le fomat de date du serveur sur lequel est installé SQL Server est différent du format de date que j'ai sur mon poste de travail!

    Franchement je pige vraiment pas pourquoi je peux exécuter cette requête depuis mon poste sans problème et que dès que je me mets sur le serveur ça commence à pétouiller et ne pas marcher!! ARG

    Sinon ben oui je m'y retrouve dans mon code (bon c'est vrai y'a des fois suis un peu coince mais de façon générale je m'en sors)... , je m'efforce au maximum de respecter les règles de l'indentation... Seulement là je sais pas pourquoi il a collé ma requête en bloc!!

    Tu parles des user-defined functions... connais pas ça moi! Je ne doute pas un instant que ça me rendrait bien service mais j'ignore complètement ce que je pourrais faire avec et comment je dois le faire... Je tâcherai de me renseigner.

    C'est encore vrai quand tu dis que je n'ai pas besoin du "TOP 100 PERCENT"! Je ne l'utilise jamais en règle générale mais souvent SQL Server me le rajoute au moment ou je sauve mes requêtes (mais vu que ça ne change en rien mes résultats je dois dire que je m'en contre-fou).

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2007, 00h18
  2. [MySQL] Problème d'exécution de requête
    Par hedgehog dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/02/2007, 15h29
  3. Problème d'exécution de requête
    Par Juanito-Toto dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/10/2006, 10h14
  4. problème d'exécution de requête sous VBA?
    Par jessy212 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/08/2006, 18h48
  5. [STRUTS/HIBERNATE] Problème d'exécution de requête
    Par mc_chicken dans le forum Hibernate
    Réponses: 5
    Dernier message: 21/10/2005, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo