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

WinDev Discussion :

requête sql non exécutée ou incompléte [WD15]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Qatar

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2012
    Messages : 31
    Par défaut requête sql non exécutée ou incompléte
    Bonjour,
    je dispose d'une base de données bien alimentée et j'ai utilisé l'assistant pour créer mes requêtes mais à l'exécution, j'ai soit "pas d'enregistrement" ou un résultat incomplet c-à-d pas tous les enregistrements pour chacune des requétes suivantes.
    req 1 :
    Code sql : 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
     
    SELECT 
       Commande.dateCom AS Période,	
       Marketeur.designationMark AS Client,	
       Produit.libProd AS Nature,	
       Produit.IDProd AS Prod,
       Détails.livréDetails AS Ok,	
       Détails.remqDetails AS Remarque,	
       Détails.volA15Details AS Volume,	
       Détails.poidsDetails AS Poids,
       Détails.IDDetails AS detailsId
    FROM 
       Marketeur,	
       Commande,	
       Détails,	
       Produit
    WHERE 
       Commande.IDMarkCom=Marketeur.IDMark
       AND	Détails.IDComDetails=Commande.IDCom
       AND	Détails.IDProdDetails=Produit.IDProd
       AND
       (
        Commande.IDCom = {Param1}
       )
    ORDER BY 
       Produit.libProd ASC

    req 2 :
    Code sql : 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
     
    SELECT 
       Commande.IDCom AS Com,	
       Commande.dateCom AS DATE,	
       Marketeur.designationMark AS Requérant,	
       COUNT(Détails.IDProdDetails) AS Article,	
       Commande.qtiteTotaleCom AS Cumul
    FROM 
       Marketeur,	
       Commande,	
       Détails
    WHERE 
       Commande.IDMarkCom	=	Marketeur.IDMark
       AND	Détails.IDComDetails	=	Commande.IDCom
       AND
       (
        Commande.dateCom BETWEEN {Param1} AND {Param2}
       )
    GROUP BY 
       Commande.dateCom,	
       Commande.qtiteTotaleCom,	
       Marketeur.designationMark,	
       Commande.IDCom
    ORDER BY 
       DATE DESC

    Merci de bien m'éclairer.

  2. #2
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    A première vue, sans connaître ton contexte, tes requêtes semblent bonnes.

    Comment passes tu les paramètres de tes requêtes ?
    Et comment tu les exécutes ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Qatar

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2012
    Messages : 31
    Par défaut
    le passage des paramatres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Req_AfficheDetailsCommande.Param1 = sai_numCom
    HExécuteRequête(Req_AfficheDetailsCommande,hRequêteDéfaut)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Req_ListeCmd.Param1 = Val(DateVersChaîne(sai_dat1,"AAAAMMJJ"))
    Req_ListeCmd.Param2 = Val(DateVersChaîne(sai_dat2,"AAAAMMJJ"))	
    HExécuteRequête(Req_ListeCmd,hRequêteDéfaut)
    je rappelle que ça marche une fois sur deux et que quand ça marche je n'ai pas toujours tous les détails d'une commande ou le nombre d'articles n'est pas correct.

  4. #4
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Sur la 1ère requête je ne voit rien de particulier.

    Sur la 2ème je m'interroge
    La rubrique Commande.dateCom est de quel type ? Date ou numérique ?

    je dispose d'une base de données bien alimentée et j'ai utilisé l'assistant pour créer mes requêtes mais à l'exécution, j'ai soit "pas d'enregistrement" ou un résultat incomplet c-à-d pas tous les enregistrements pour chacune des requétes suivantes.
    Précision les requêtes telle qu'elles sont faites ne retourne que les lignes qui respectent toutes les liaisons entre les fichiers.

    Si tu veux que des lignes soient incluses même si certaines liaisons ne sont pas respectées, double clique sur l'image qui symbolise les jointures. Une fenêtre s'ouvre, il suffit de cocher les cas où les lignes sont à inclure...

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Par défaut
    Bonjour,

    je m'interroge également sur le type de la colonne Commande.dateCom car tu transformes ta date en valeur numérique et donc le test between ne peut plus marcher.

    à bientôt,

    Nicolas

  6. #6
    Membre chevronné
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 256
    Par défaut
    Bonjour,

    Dans la 1ere requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND	Détails.IDProdDetails=Produit.IDProd
    perso, j'aurais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND	Produit.IDProd=Détails.IDProdDetails
    Mais je ne sais pas si Windev est très malin à ce niveau là...

    PS: Utilisant très peu les requêtes, je préfère la syntaxe JOIN ou LEFT JOIN pour les jointures...

    Ce qui donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    "SELECT Co.dateCom Période,Mk.designationMark Client,Pr.libProd Nature,Pr.IDProd Prod,De.livréDetails OK,De.remqDetails Remarque,De.volA15Details Volume,De.poidsDetails Poids,De.IDDetails detailsId "+...
    "FROM Commande co "+...
    "JOIN Marketeur mk ON mk.IDMark=co.IDMarkCom and co.IDCom="+SAI_NUMCOM+" "+...
    "JOIN Détails de ON de.IDComDetails=co.IDCom "+...
    "JOIN Produit pr ON pr.IDProd=de.IDProdDetails "+...
    "ORDER BY Pr.libProd "
    Pour tester si des jointures ne se font pas, vous pouvez temporairement utiliser LEFT JOIN et la fonction NVL(<rubrique>,"???") dans le select...
    (dans le cas d'un LEFT JOIN entre commande et marketeur, ne faites pas la sélection du n° de commande dans la jointure, mais dans le where car ce cas ne fonctionne que depuis les dernières versions 17)

    Pour la 2ème requête, je confirme: passez la date sans conversion.

    Patrick

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/09/2009, 12h03
  2. Réponses: 6
    Dernier message: 15/09/2009, 11h18
  3. Requête SQL s'exécute deux fois
    Par brazilia28 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 06/05/2008, 11h55
  4. Réponses: 1
    Dernier message: 08/08/2007, 11h26
  5. [SQL] Requête SQL non prise en compte
    Par Petit bateau dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/07/2007, 10h43

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