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 complexe [WD12]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Requête SQL complexe
    Bonjour à tous,

    Voilà mon problème,
    Je souhaite gérer des "vues" pour un tableau affichant des données de plusieurs tables (via une base de données externe).
    Je récupère donc des données d'une table nommée "SysVues" qui comporte, entre autre, des requêtes SQL permettant l'affichage des différentes vues.
    Ces requêtes ont étés éprouvées dans d'autres programmes de l'entreprise et ne semblent pas contenir d'erreurs. Néanmoins quand j'utilise la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HExécuteRequêteSQL(ReqSou,hRequêteDéfaut,sReq)
    Windev me renvoi l'erreur suivante "Erreur d'initialisation de la requête. Erreur dans le code SQL de la requête <ReqSou>. Initialisation de la requête impossible. Mot SELECT inattendu."

    Voilà la requête SQL en question (un sacré paquet :/ ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sReq = "SELECT Article.Code AS Code, Article.Nom AS Libelle, Article.Pamp AS PAMP, Article.StockPhyGen AS StockPhys, (SELECT Stock.SeuilSecu FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DP"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS MiniDP," +...
    "(SELECT Stock.StockPhy FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DPT"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS DPT, (SELECT Stock.RelCli FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DPT"" ORDER BY " +...
    "Stock.CodeArticle,Stock.CodeDepot) AS CliDPT, (SELECT Stock.RelFour FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DPT"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS FourDPT,(SELECT Stock.SeuilSecu FROM Stock WHERE Stock.CodeArticle = Article.Code " + ...
    "AND Stock.CodeDepot = ""DPT"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS MiniDPT, (SELECT Stock.SeuilSecu FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DPTEB"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS MiniDPTEB, (SELECT Stock.SeuilSecu " + ...
    "FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DPTXB"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS MiniDPTXB, (SELECT Stock.SeuilSecu FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DPTAL"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) " + ...
    "AS MiniDPTAL, (SELECT Stock.StockPhy FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DN"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS DPN, (SELECT Stock.RelCli FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DN"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) " + ...
    "AS CliDPN, (SELECT Stock.RelFour FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DN"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS FourDPN,(SELECT Stock.SeuilSecu FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DN"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) " + ...
    "AS MiniDPN, (SELECT Stock.SeuilSecu FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DNEB"" ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS MiniDPNEB, (SELECT Stock.SeuilSecu FROM Stock WHERE Stock.CodeArticle = Article.Code AND Stock.CodeDepot = ""DNXB"" " + ...
    "ORDER BY Stock.CodeArticle,Stock.CodeDepot) AS MiniDPNXB, Article.NombreParColis AS NbParColis, Article.StockMinGen AS StockMini FROM [Article] WHERE Article.Sommeil = 0 ORDER BY Article.Code"
    Je l'ai intégrée dans mon code Windev afin de la modifier et de la vérifier, mais logiquement je la récupère sur la table SysVues. Le problème vient apparemment des (SELECT ...) qui parsèment la requête.

    Merci pour vos réponses.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 323
    Points : 128
    Points
    128
    Par défaut
    Si cela ne vient pas de ta requête (car déjà testé auparavant), ca peut venir seulement de ton traitement. As tu testé la requete dans l'analyse ? Il te donne la même erreur ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Non la requête fonctionne, mais il a fallu faire un léger travail pour l'adapter (modifier les "" en simple ") à du code SQL pur.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HExécuteRequêteSQL(ReqSou, MaConnexion, hRequêteSansCorrection,sReq)
    la requête semble passée, je ne marque pas tout de suite le sujet en résolu car je vérifie son résultat ^^"

  5. #5
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Bonjour,

    As tu essayer hrequetesanscorrection en précisant la connexion ?

    N_Ron

    M.... ! Trop lent encore une fois!!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Oui, manifestement ça marche très bien comme ça, je ne suis pas contre une explication mais je marque le sujet en "résolu", merci pour vos réponses rapides

  7. #7
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Points : 124
    Points
    124
    Par défaut
    Si je dis des bêtises je ne demande qu'à être corrigé :

    je crois que la vérification de syntaxe de WinDev vérifie pour une base HyperFile. Si ton SGBD à des syntaxes différentes, il la voit comme une erreur. Hrequetesanscorrection ne corrige rien et laisse ton SGBD gérer les hypotétiques erreurs.

    Enfin si j'ai bien compris...

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Visiblement, tu te connectes à une BdD autre que celle proposée par Windev, ce qui implique des différences au niveau de la syntaxe SQL.
    L'option hRequêteSansCorrection te permet d'exécuter du SQL sans que Windev y mette ses petits doigts pour que ça marche chez lui.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    D'accord, je me doutais d'un truc de ce genre en regardant l'aide, mais je ne voyais pas bien quelles "corrections" pouvait apporter windev.

    Merci en tout cas

  10. #10
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    D'accord, je me doutais d'un truc de ce genre en regardant l'aide, mais je ne voyais pas bien quelles "corrections" pouvait apporter windev.
    Ce ne sont que des corrections, si on ne met pas hRequêteSansCorrection la requête doit avoir une syntaxe compatible avec le sql Hyperfile, qui est vite limité ...

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

Discussions similaires

  1. requête sql complexe
    Par julien_d dans le forum SQL
    Réponses: 7
    Dernier message: 01/05/2007, 17h03
  2. Requète SQL complexe
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 01/08/2006, 10h10
  3. Requête sql complexe
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/01/2006, 11h55
  4. Requête SQL Complexe
    Par zut94 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/11/2005, 20h53
  5. Requête SQL complexe. Comment faire ....
    Par BilTCD dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/11/2004, 16h18

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