Execution de deux requêtes SELECT à la suite
SILBA31
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
SILBA31 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
SILBA31 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
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
- Sms deux ronds - Forum Xiaomi
- Deux whatsapp sur un téléphone - Guide
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 ;)