Convertir sql en vba [Résolu]

Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
- - Dernière réponse : begounou
Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
- 14 oct. 2019 à 12:33
Bonjour,

après mainte tentative sans succès à vouloir convertir cette instruction sql en vba qui m'a d'ailleurs été fourni sur ce forum , j'ai décidé de le poster en espérant trouver la solution

SELECT Sum([taux]*(IIf([salaire]>[fin_tranche],[fin_tranche],[salaire])-[debut_tranche])) AS IUTS
FROM taux_impot
WHERE (((taux_impot.salaire)>=[debut_tranche]));


Configuration: Windows / Chrome 77.0.3865.90
Afficher la suite 

2 réponses

Messages postés
8708
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2019
435
0
Merci
bonjour, qu'as-tu essayé? que veux-tu obtenir, dans quel contexte?
D'accord pour le champs IUTS mais vous ne m' expliquez aussi la procédure d'utilisation du code
yg_be
Messages postés
8708
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2019
435 > Begounou -
pour commencer, tu peux l'associer au bouton de ton formulaire.
pour que nous puissions mieux t'aider, n'hésite pas à expliquer ce que tu connais, et ce que tu es en train d'apprendre.
nous ne pouvons pas deviner cela.
pour commencer j'ai 3 tables t-employé, t-paie et taux-impots
dans la t-table-employé j'enregistre les informations de l'employé à partir d'un formulaire f-employé. certaines informations sont fournis par des listes déroulante comme le nombre de charge de famille qui se limite à 7 charges chaque charge a son pourcentage l'utilisateur voit seulement les chiffres mais c'est le taux de pourcentage qui est stocké dans le champs par exemple 3 charges est de 12 pourcent donc est egale à 0,12
la table t-paie est liée à la t-table-employé par le champs code employé la source du formulaire de saisie de salaire est réalisée grâce à un générateur de requête qui prend en compte la table t-employé et t-paie
des champs calcul sont ajoutés au formulaire comme les calculs des heures supplémentaires et le salaire brut imposable qui permettent de calculer le RNI qui est la rémunération net imposable qui s'obtient avec SBGI salaire brut global imposable -(le SBGI*charge de famille) tout ceci après déduction des cotisations salarié dont le taux est inscrit par défaut à 5,25 pourcent. en réalité c'est à partir du RNI qu'on calcul l'impôt unique sur le traitement des salaires IUTS le calcul de cette retenue est basé sur la table taux-impots qui n'est liée à aucun de mes tables le calcul est réalisé par le code SQL que vous m'avez fourni le champs salaire est alimenté par une requête d'ajout et de mise à jour collées à un bouton nommé enregistré de mon formulaire
yg_be
Messages postés
8708
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2019
435 > Begounou -
as-tu essayé d'associer le code proposé en #3 à un bouton de ton formulaire?
begounou
Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
-
je l'ai adapté comme cela
Private Sub Bn_Calculer_Click()
Dim rstaux As DAO.Recordset, sql As String, rsiuts As Recordset, IUTS As Single

sql = "SELECT Sum([taux]*(IIf( " + CStr(Me.RNI) + " >[fin_tranche],[fin_tranche],[RNI])-[debut_tranche])) AS IUTS " _
+ " FROM taux_impot " _
+ " WHERE (( " + CStr(Me.RNI) + " >=[debut_tranche]))"
Set rstaux = CurrentDb.OpenRecordset(sql)
IUTS = rstaux!IUTS
Set rsiuts = CurrentDb.OpenRecordset("Paie_temporaire", dbOpenDynaset)
rsiuts.AddNew
rsiuts!IUTS = IUTS
rsiuts!RNI = Me.RNI
rsiuts.Update
End Sub

le RNI désigne le salaire
mais je reçois un message d'erreur comme ça : erreur d’exécution '3061'
trop peu de paramétré. 1 attendu
Commenter la réponse de yg_be
Messages postés
8708
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2019
435
0
Merci
peux-tu utiliser les balises de code quand tu postes du code?
peux-tu indiquer à quelle ligne se produit l'erreur?
peux-tu examiner ce que contient la variable sql et la tester comme source d'une requête?
begounou
Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
-
a force de tâtonner j'ai trouvé, enfaite il suffisait juste de changer les virgules par des point virgule. surtout merci de m'avoir poussé a rendre plus rationnelle ma base de donnée. au passage j'ai aussi détecté une faille au niveau du total des heures supplémentaires au quelle j'ai remédié avec la fonction Nz . merci
yg_be
Messages postés
8708
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2019
435 > begounou
Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
-
comment ce fait-il alors que tu as partage en #17 une requête avec des virgules?
begounou
Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
-
Je vous enverrez le lien du ficher corrigé demain peut-être que j'ai du modifier autre chose sans le savoir.
yg_be
Messages postés
8708
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2019
435 > begounou
Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
-
chez moi il voulait des points virgules, j'ai envoyé avec virgules pour suivre la logique de ce que tu avais envoyé...
begounou
Messages postés
32
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
14 octobre 2019
-
je ne sais pas comme sa se passe chez moi, mais en tout cas ça marche très bien avec les points virgules. merci
Commenter la réponse de yg_be