Bonjour,

Je rencontre quelques problèmes pour convertir une requête Access en Procédure stockée (projet Access).

Voici le code SQL de la requête Access:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SELECT Outil.N°Service, Service.[Nom Service], Affectation.N°Monteur, Monteur.[Nom Monteur], Affectation.N°affaire, Affectation.N°outil, Outil.[nom outil], Outil.N°Marque, Marque.[Nom Marque], Outil.[date achat], Outil.[date controle], Outil.commentaire, Affectation.[date affectation], Outil.N°Groupe, Groupe.[Nom Groupe], Affectation.N°Affectation, Outil.type, Outil.N°Etat, Etat.[Nom Etat], Affectation.N°outil, Outil.controle
FROM Service INNER JOIN ((Marque INNER JOIN (Groupe INNER JOIN (Etat INNER JOIN Outil ON Etat.N°Etat = Outil.N°Etat) ON Groupe.N°Groupe = Outil.N°Groupe) ON Marque.N°Marque = Outil.N°Marque) INNER JOIN (Monteur INNER JOIN (Affaire RIGHT JOIN Affectation ON Affaire.[nom affaire] = Affectation.N°affaire) ON Monteur.N°Monteur = Affectation.N°Monteur) ON Outil.N°Outil = Affectation.[num outil]) ON Service.N°Service = Outil.N°Service
WHERE (((Outil.N°Service) Like [Formulaires]![Formulaire Affectation Outil IPR]![NumService]) AND ((Outil.N°Etat) Like [Formulaires]![Formulaire Affectation Outil IPR]![choix outilhs])) OR (((Affectation.N°Monteur) Like [Formulaires]![Formulaire Affectation Outil IPR]![NumMonteur]) AND ((Outil.N°Etat) Like [Formulaires]![Formulaire Affectation Outil IPR]![choix outilhs])) OR (((Affectation.N°affaire) Like [Formulaires]![Formulaire Affectation Outil IPR]![NumAffaire]) AND ((Outil.N°Etat) Like [Formulaires]![Formulaire Affectation Outil IPR]![choix outilhs])) OR (((Outil.N°Marque) Like [Formulaires]![Formulaire Affectation Outil IPR]![NumMarque]) AND ((Outil.N°Etat) Like [Formulaires]![Formulaire Affectation Outil IPR]![choix outilhs])) OR (((Outil.N°Groupe) Like [Formulaires]![Formulaire Affectation Outil IPR]![NumFamille]) AND ((Outil.N°Etat) Like [Formulaires]![Formulaire Affectation Outil IPR]![choix outilhs])) OR (((Affectation.N°outil) Like [Formulaires]![Formulaire Affectation Outil IPR]![num outil] And (Affectation.N°outil)=[Outil].[num outil]) AND ((Outil.N°Etat) Like [Formulaires]![Formulaire Affectation Outil IPR]![choix outilhs]));
J'ai donc créé cette procédure stockée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
CREATE PROCEDURE [dbo].[R affectation IPR modif] 
@Numservice int,
@NumMonteur int,
@NumAffaire int,
@NumMarque int,
@NumFamille int,
@NumOutil int,
@Outilhs int
AS
 
SELECT Outil.[N°Service], Service.[Nom Service], Affectation.[N°Monteur], Monteur.[Nom Monteur], Affectation.[N°affaire], Affectation.[N°outil], Outil.[nom outil], Outil.[N°Marque], Marque.[Nom Marque], Outil.[date achat], Outil.[date controle], Outil.commentaire, Affectation.[date affectation], Outil.[N°Groupe], Groupe.[Nom Groupe], Affectation.[N°Affectation], Outil.type, Outil.[N°Etat], Etat.[Nom Etat], Affectation.[N°outil], Outil.controle
FROM Service INNER JOIN ((Marque INNER JOIN (Groupe INNER JOIN (Etat INNER JOIN Outil ON Etat.[N°Etat] = Outil.[N°Etat]) ON Groupe.[N°Groupe] = Outil.[N°Groupe]) ON Marque.[N°Marque] = Outil.[N°Marque]) INNER JOIN (Monteur INNER JOIN (Affaire RIGHT JOIN Affectation ON Affaire.[nom affaire] = Affectation.[N°affaire]) ON Monteur.[N°Monteur] = Affectation.[N°Monteur]) ON Outil.[N°Outil] = Affectation.[num outil]) ON Service.[N°Service] = Outil.[N°Service]
WHERE ((Outil.[N°Service] = @Numservice) 
AND (Outil.[N°Etat] = @Outilhs)) 
OR (((Affectation.[N°Monteur]) = @NumMonteur) 
AND ((Outil.[N°Etat]) = @Outilhs)) 
OR (((Affectation.[N°affaire]) = @NumAffaire) 
AND ((Outil.[N°Etat]) = @Outilhs)) 
OR (((Outil.[N°Marque]) = @NumMarque) 
AND ((Outil.[N°Etat]) = @Outilhs)) 
OR (((Outil.[N°Groupe]) = @NumFamille) 
AND ((Outil.[N°Etat]) = @Outilhs)) 
OR (((Affectation.[N°outil]) = @NumOutil 
AND (Affectation.[N°outil])=[Outil].[num outil]) 
AND ((Outil.[N°Etat]) = @Outilhs));
et enfin je lance ce code dans le query analyser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
DECLARE @Numservice int
DECLARE @NumMonteur int
DECLARE @NumAffaire int
DECLARE @NumMarque int
DECLARE @NumFamille int
DECLARE @NumOutil int
DECLARE @Outilhs int
 
SET @Numservice=1
SET @NumMonteur =""
SET @NumAffaire =""
SET @NumMarque =""
SET @NumFamille =""
SET @NumOutil =""
SET @Outilhs =2
 
 
EXECUTE [R affectation IPR modif] @Numservice, @NumMonteur, @NumAffaire, @NumMarque, @NumFamille, @NumOutil, @Outilhs
Normalement je devrais récuperer la liste des outils dont le service est 1 ET dont le N°Etat est égal à 2.
Or c'est pas le cas il me renvoie juste les outils dont l'état est égal à deux.

J'espère avoir été assez clair, si vous voulez + de renseignements n'hésitez pas

Merci d'avance.

PS le début de la requête fonctionne, c'est à partir de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
OR (((Affectation.[N°affaire]) = @NumAffaire) 
AND ((Outil.[N°Etat]) = @Outilhs))
que ça bug (le rest fonctionne aussi)