Execution de deux requêtes SELECT à la suite
SILBA31
Messages postés
39
Statut
Membre
-
SILBA31 Messages postés 39 Statut Membre -
SILBA31 Messages postés 39 Statut Membre -
Bonjour,
j'utilise ACCESS 2010 et voudrais automatiser l'exécution de deux requêtes l'une à la suite de l'autre ou alors en imbriquant la seconde dans la première.
Ma première requête est:
Ma seconde requête est une requête de tri sur le champ "pondération":
J'ai essayé de faire une macro:
Malheureusement cela ne fonctionne pas car à priori on ne peut pas exécuter une requête de sélection avec cette commande.
Si quelqu'un avait une solution simple à mettre en place ou des pistes de réflexion à me donner, je suis preneur.
merci d'avance :)
j'utilise ACCESS 2010 et voudrais automatiser l'exécution de deux requêtes l'une à la suite de l'autre ou alors en imbriquant la seconde dans la première.
Ma première requête est:
SELECT [Architectures-besoins].Architecture, [Materiel pour architecture].ID_materiel, [Materiel pour architecture].Pondération, Materiel.Materiel FROM Materiel INNER JOIN ([Architectures-besoins] INNER JOIN [Materiel pour architecture] ON [Architectures-besoins].Architecture = [Materiel pour architecture].Architecture) ON Materiel.ID = [Materiel pour architecture].ID_materiel WHERE ((([Architectures-besoins].Besoin)="Automatic filling of the application"));
Ma seconde requête est une requête de tri sur le champ "pondération":
SELECT [Pour un besoin donné quel matériel est nécessaire].Pondération, [Pour un besoin donné quel matériel est nécessaire].Architecture, [Pour un besoin donné quel matériel est nécessaire].ID_materiel, [Pour un besoin donné quel matériel est nécessaire].Materiel
FROM [Pour un besoin donné quel matériel est nécessaire]
WHERE ((([Pour un besoin donné quel matériel est nécessaire].Pondération)=DMax("Pondération","Pour un besoin donné quel matériel est nécessaire")));
J'ai essayé de faire une macro:
Public Sub DoSQL()
Dim qry1 As String
Dim qry2 As String
qry1 = "SELECT [Architectures-besoins].Architecture, [Materiel pour architecture].ID_materiel, [Materiel pour architecture].Pondération, Materiel.Materiel"
FROM Materiel INNER JOIN ([Architectures-besoins] INNER JOIN [Materiel pour architecture] ON [Architectures-besoins].Architecture = [Materiel pour architecture].Architecture) ON Materiel.ID = [Materiel pour architecture].ID_materiel
WHERE ((([Architectures-besoins].Besoin)="Automatic filling of the application"))"
qry2 = "SELECT [Pour un besoin donné quel matériel est nécessaire].Pondération, [Pour un besoin donné quel matériel est nécessaire].Architecture, [Pour un besoin donné quel matériel est nécessaire].ID_materiel, [Pour un besoin donné quel matériel est nécessaire].Materiel"
FROM [Pour un besoin donné quel matériel est nécessaire]
WHERE ((([Pour un besoin donné quel matériel est nécessaire].Pondération)=DMax("Pondération","Pour un besoin donné quel matériel est nécessaire")))"
DoComd.RunSQL qry1
DoComd.RunSQL qry2
End Sub
Malheureusement cela ne fonctionne pas car à priori on ne peut pas exécuter une requête de sélection avec cette commande.
Si quelqu'un avait une solution simple à mettre en place ou des pistes de réflexion à me donner, je suis preneur.
merci d'avance :)
A voir également:
- Execution de deux requêtes SELECT à la suite
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Deux whatsapp sur un téléphone - Guide
- Supprimer une conversation messenger pour les deux personnes ✓ - Forum Facebook
26 réponses
Re...
Tu ne peux pas mettre une jointure un-à-un derrière une jointure un-à-plusieurs; il faut donc que tu mettes ta jointure en un à plusieurs. Voir ma réponse précédente à SnowManXDXD : http://www.commentcamarche.net/forum/affich-31955809-fusionner-des-tableaux (tout en bas de la page)
Bonne suite
Tu ne peux pas mettre une jointure un-à-un derrière une jointure un-à-plusieurs; il faut donc que tu mettes ta jointure en un à plusieurs. Voir ma réponse précédente à SnowManXDXD : http://www.commentcamarche.net/forum/affich-31955809-fusionner-des-tableaux (tout en bas de la page)
Bonne suite
Nickel, ta réponse sur l'autre poste a été très utile :)
J'ai éssayé de modifier cette requête:
afin d'avoir 3 "besoins" mais sans succès. Sais-tu comment faire cela facilement?
J'ai éssayé de modifier cette requête:
SELECT Max(Materiel_Architecture.Pondération) AS MaxPondération FROM ([Architectures-besoins] AS ab1 LEFT JOIN [Architectures-besoins] AS ab2 ON ab1.Architecture = ab2.Architecture) LEFT JOIN Materiel_Architecture ON ab2.Architecture = Materiel_Architecture.Architecture GROUP BY ab1.Besoin, ab2.Besoin HAVING (((ab1.Besoin) Like "*" & [Besoin1] & "*") AND ((ab2.Besoin) Like "*" & [Besoin2] & "*"))
afin d'avoir 3 "besoins" mais sans succès. Sais-tu comment faire cela facilement?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re...
Regarde comment procéder avec 2 et tu rajoutes un 3ème. Après tu testes et tu corriges jusqu'à ce que ça passe.
Bonne suite
Regarde comment procéder avec 2 et tu rajoutes un 3ème. Après tu testes et tu corriges jusqu'à ce que ça passe.
Bonne suite
Salut,
j'ai fais pas mal d'essais, voilà ce que ça donne si jamais ça peut servir à d'autres:
Encore merci pour ton aide ;)
j'ai fais pas mal d'essais, voilà ce que ça donne si jamais ça peut servir à d'autres:
SELECT Max(Materiel_Architecture.Pondération) AS MaxPondération FROM ([Architectures-besoins] AS ab1 LEFT JOIN [Architectures-besoins] AS ab2 ON ab1.Architecture = ab2.Architecture) LEFT JOIN ([Architectures-besoins] AS ab3 LEFT JOIN Materiel_Architecture ON ab3.Architecture = Materiel_Architecture.Architecture) ON ab2.Architecture = ab3.Architecture GROUP BY ab1.Besoin, ab2.Besoin, ab3.Besoin HAVING (((ab1.Besoin) Like "*" & [Besoin1] & "*") AND ((ab2.Besoin) Like "*" & [Besoin2] & "*") AND ((ab3.Besoin) Like "*" & [Besoin3] & "*"));
Encore merci pour ton aide ;)

