Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/07/2011, 09h07   #1
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 103
Points : 39
Points : 39
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 :
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 :
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)
castours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 14h54   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h02   #3
Candidat au titre de Membre du Club
 
Homme
Développeur J2EE
Inscription : octobre 2007
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur J2EE

Informations forums :
Inscription : octobre 2007
Messages : 10
Points : 11
Points : 11
En Access, regardes du coté de IIF()

et en Mysql, du coté de IF() ou mieux du CASE qui lui est plus portable
ddoumeche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h10   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Votre code
Code :
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 :
CoéfCharge = 100 - ((NbMois - Franchise) * PctMens)
Ce qui rend vos 2 blocs if inutiles et donc code mort ...

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 16h44   #5
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
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 : 853
Points : 1 332
Points : 1 332
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 :
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 :
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 :
IF(NbMois > Vetuste, QuotePart, IF(NbMois < Franchise, 100, 100 - (NbMois - Franchise) * PctMens))

ou une autre version procédurale:
Code vba :
set CoéfCharge = IF(NbMois > Vetuste, QuotePart, IF(NbMois < Franchise, 100, 100 - (NbMois - Franchise) * PctMens))
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h16.


 
 
 
 
Partenaires

Hébergement Web