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

Macros et VBA Excel Discussion :

Problème de calcul dans une requête SQL [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Août 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 12
    Par défaut Problème de calcul dans une requête SQL
    Bonjour,

    J'ai un soucis dans une requête SQL que j'ai inséré dans mon fichier Excel. Cette requête a pour but d'aller rechercher des informations dans 3 tables différentes et de faire un filtre sur différents champs. Selon le filtre, un calcul doit être effectué.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Commissions
    Commissions = "SELECT A.ad_societe as Société, A.ad_nom as Nom, A.ad_prenom as Prénom,  " & _
                " D.do_nodoc as Numéro, D.do_type as Type, D.do_date1 as Date, dt.dl_compte, " & _
                " (IIF(dt.dl_tva_inc<>1, dt.dl_montant, dt.dl_montant - dt.dl_tva_mnt)) as Mnt" & _
                " FROM ((adresses AS A " & _
                " INNER JOIN  document As D ON A.ad_numero = D.do_adr1 )" & _
                " INNER JOIN  detail As DT ON D.do_numero= dt.dl_numero )" & _
                " WHERE ((D.do_type=17) OR (D.do_type=20)) AND (D.do_paye<>1) AND (D.do_period<>1) AND (dt.dl_compte Like '3000.%')" & _
                " ORDER BY dt.dl_tva_inc " & _
    Cependant, le calcul ne s'effectue pas et la colonne MNT reste toujours vide. Pouvez-vous m'aider ?

    Merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu te connecte sur quelle type de base de données, Access,Sql serveur ,Oracle?

    tu fais ta connexion Via ADO ou DAO?

    dt.dl_compte est un champ numérique ou texte?

  3. #3
    Membre habitué
    Femme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Août 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 12
    Par défaut
    Je me connecte via une liaison ado et je fais une connexion sur des fichiers DBF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub conNect()
        Set cN = New ADODB.Connection
        dbPath = Path
            cN.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=d:\2015;Exclusive=No;"
        cN.Open
    End Sub
    dt.dl_compte est un champ texte.

    Merci pour ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    je ne voie rien qui cloche dans ta requête!
    enlève quand c'est possible les parenthèse inutile pour la lisibilités!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Commissions = "SELECT A.ad_societe as Société, A.ad_nom as Nom, A.ad_prenom as Prénom,  " & _
                " D.do_nodoc as Numéro, D.do_type as Type, D.do_date1 as Date, dt.dl_compte, " & _
                " IIF(dt.dl_tva_inc<>1, dt.dl_montant, dt.dl_montant - dt.dl_tva_mnt) as Mnt" & _
                " FROM ((adresses AS A " & _
                " INNER JOIN  document As D ON A.ad_numero = D.do_adr1 )" & _
                " INNER JOIN  detail As DT ON D.do_numero= dt.dl_numero )" & _
                " WHERE (D.do_type=17 OR D.do_type=20) AND D.do_paye<>1 AND D.do_period<>1 AND dt.dl_compte Like '3000.%'"  & _
                " ORDER BY dt.dl_tva_inc "
    dégraisse ta close Where pour voir ou ça cloche:
    Code Exemple : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Commissions = "SELECT A.ad_societe as Société, A.ad_nom as Nom, A.ad_prenom as Prénom,  " & _
                " D.do_nodoc as Numéro, D.do_type as Type, D.do_date1 as Date, dt.dl_compte, " & _
                " IIF(dt.dl_tva_inc<>1, dt.dl_montant, dt.dl_montant - dt.dl_tva_mnt) as Mnt" & _
                " FROM ((adresses AS A " & _
                " INNER JOIN  document As D ON A.ad_numero = D.do_adr1 )" & _
                " INNER JOIN  detail As DT ON D.do_numero= dt.dl_numero )" & _
                " WHERE (D.do_type=17 OR D.do_type=20) AND dt.dl_compte Like '3000.%'"   & _
                " ORDER BY dt.dl_tva_inc "
    tu dis que colonne MNT reste toujours vide! test avec un left join!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     " LEFT JOIN  document As D ON A.ad_numero = D.do_adr1 )" & _
                " LEFT JOIN  detail As DT ON D.do_numero= dt.dl_numero )" & _
    Dernière modification par Invité ; 26/08/2015 à 09h41.

  5. #5
    Membre habitué
    Femme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Août 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 12
    Par défaut
    J'ai fait ce que tu m'as dit, mais aucun changement.
    Ce calcul dt.dl_montant - dt.dl_tva_mnt) as Mnt ne se fait pas. la colonne est vide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    et comme ça! (on teste le IIF)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Commissions = "SELECT A.ad_societe as Société, A.ad_nom as Nom, A.ad_prenom as Prénom,  " & _
                " D.do_nodoc as Numéro, D.do_type as Type, D.do_date1 as Date, dt.dl_compte, " & _
                " dt.dl_montant - dt.dl_tva_mnt as Mnt" & _
                " FROM ((adresses AS A " & _
                " INNER JOIN  document As D ON A.ad_numero = D.do_adr1 )" & _
                " INNER JOIN  detail As DT ON D.do_numero= dt.dl_numero )" & _
                " WHERE (D.do_type=17 OR D.do_type=20) AND D.do_paye<>1 AND D.do_period<>1 AND dt.dl_compte Like '3000.%'"  & _
                " ORDER BY dt.dl_tva_inc "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Commissions = "SELECT A.ad_societe as Société, A.ad_nom as Nom, A.ad_prenom as Prénom,  " & _
                " D.do_nodoc as Numéro, D.do_type as Type, D.do_date1 as Date, dt.dl_compte, " & _
                " IIF(dt.dl_tva_inc<>1, 'Y', 'N') as Mnt" & _
                " FROM ((adresses AS A " & _
                " INNER JOIN  document As D ON A.ad_numero = D.do_adr1 )" & _
                " INNER JOIN  detail As DT ON D.do_numero= dt.dl_numero )" & _
                " WHERE (D.do_type=17 OR D.do_type=20) AND D.do_paye<>1 AND D.do_period<>1 AND dt.dl_compte Like '3000.%'"  & _
                " ORDER BY dt.dl_tva_inc "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Commissions = "SELECT A.ad_societe as Société, A.ad_nom as Nom, A.ad_prenom as Prénom,  " & _
                " D.do_nodoc as Numéro, D.do_type as Type, D.do_date1 as Date, dt.dl_compte, " & _
                " dt.dl_tva_in, dt.dl_montant, dt.dl_tva_mnt as Mnt" & _
                " FROM ((adresses AS A " & _
                " INNER JOIN  document As D ON A.ad_numero = D.do_adr1 )" & _
                " INNER JOIN  detail As DT ON D.do_numero= dt.dl_numero )" & _
                " WHERE (D.do_type=17 OR D.do_type=20) AND D.do_paye<>1 AND D.do_period<>1 AND dt.dl_compte Like '3000.%'"  & _
                " ORDER BY dt.dl_tva_inc "

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

Discussions similaires

  1. Récupérer une variable calculée dans une requête SQL
    Par nanar1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/01/2009, 11h45
  2. Problème d'espaces dans une requête SQL
    Par Wonesek dans le forum SQL
    Réponses: 9
    Dernier message: 22/04/2008, 16h46
  3. Problème de cumul dans une requête SQL
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 13/09/2007, 05h56
  4. Problème avec like dans une requête SQL
    Par Boublou dans le forum SQL
    Réponses: 2
    Dernier message: 16/08/2007, 15h46
  5. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29

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