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:
J'ai donc créé cette procédure stockée:
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]));
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
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));
Normalement je devrais récuperer la liste des outils dont le service est 1 ET dont le N°Etat est égal à 2.
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
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 :
que ça bug (le rest fonctionne aussi)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 OR (((Affectation.[N°affaire]) = @NumAffaire) AND ((Outil.[N°Etat]) = @Outilhs))
Partager