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

Requêtes MySQL Discussion :

Transposition code VBA en SQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2005
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2005
    Messages : 164
    Par défaut Transposition code VBA en SQL
    Bonjour,
    Je voudrais transposer ces conditions VBA ci-dessous dans une requête SQL access 2003
    Les champs suivants sont utilisés: CoéfCharge, QuotePart,NbMoiset Franchise.
    Le champ CoéfCharge est le champ qui doit recevoir le résultat.
    Merci de votre aide


    La requête a modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Facturation.CoéfCharge, T_Facturation.Franchise, T_Facturation.NbMois, T_Facturation.IdChif, T_Facturation.N°Fam, T_Facturation.Code, T_Facturation.[Dégradations imputables], T_Facturation.PrixUni, T_Facturation.Quantité, T_Facturation.Unité, T_Facturation.PctMens, T_Facturation.TVA, T_Facturation.Vetuste, T_Facturation.QuotePart, Nz([Quantité]*[PrixUni]) AS [Prix HT], Nz([MontantHt]*(1+[TVA])) AS [Prix TTC], T_Facturation.Observations, T_Facturation.MontantHt
    FROM T_Facturation
    Le code VBA


    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If NbMois > Vetuste Then 
    CoéfCharge = QuotePart 
    End If 
    If NbMois < Franchise Then 
    CoéfCharge = 100 
    End If 
    CoéfCharge = 100 - ((NbMois - Franchise) * PctMens)

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par castours Voir le message
    Je voudrais transposer ces conditions VBA ci-dessous dans une requête SQL access 2003
    C'est le forum MySQL ici ! Erreur de forum ou erreur dans ton message ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 711
    Par défaut
    En Access, regardes du coté de IIF()

    et en Mysql, du coté de IF() ou mieux du CASE qui lui est plus portable

  4. #4
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If NbMois > Vetuste Then 
    CoéfCharge = QuotePart 
    End If 
    If NbMois < Franchise Then 
    CoéfCharge = 100 
    End If 
    CoéfCharge = 100 - ((NbMois - Franchise) * PctMens)
    me parait suspect ...
    En effet dans tous les cas, vous vous trouvez avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CoéfCharge = 100 - ((NbMois - Franchise) * PctMens)
    Ce qui rend vos 2 blocs if inutiles et donc code mort ...

    Bon courage

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut, yanika a raison:

    tu exécutes 2 if mais de manière systématique tu applique ta formule, le bon code serait:

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IF NbMois > Vetuste Then 
    CoéfCharge = QuotePart
    ELSE 
    IF NbMois < Franchise Then 
    CoéfCharge = 100 
    else
    CoéfCharge = 100 - (NbMois - Franchise) * PctMens
    End IF
    End IF

    ce qui donnerait en sql procédural:
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IF NbMois > Vetuste Then 
    set CoéfCharge = QuotePart
    ELSE 
    IF NbMois < Franchise Then 
    set CoéfCharge = 100 
    else
    set CoéfCharge = 100 - (NbMois - Franchise) * PctMens
    End IF
    End IF

    ou en sql pour un select:
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(NbMois > Vetuste, QuotePart, IF(NbMois < Franchise, 100, 100 - (NbMois - Franchise) * PctMens))

    ou une autre version procédurale:
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    set CoéfCharge = IF(NbMois > Vetuste, QuotePart, IF(NbMois < Franchise, 100, 100 - (NbMois - Franchise) * PctMens))

Discussions similaires

  1. Adaptation d'un code VBA en SQL
    Par kiki.gaby dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/12/2008, 15h35
  2. Problème SQL dans code VBA
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 15/05/2007, 13h22
  3. [VBA][SQL] code pour requete sql update en vba
    Par titocv723 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 24/10/2006, 17h45
  4. Réponses: 6
    Dernier message: 09/06/2006, 00h19
  5. probleme code vba ne s'execute pas apres instruction sql
    Par arnogef dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/12/2005, 12h34

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