IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Mettre à jour une instruction SQL d'un sous-formulaire


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Points : 42
    Points
    42
    Par défaut Mettre à jour une instruction SQL d'un sous-formulaire
    Bonjour à tous,
    Sur la propriété source de mon sous-formulaire, j'ai créé cette instruction SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCTROW Demandeur.TDemandeur, Activite.TActivite, Intitule.TIntitule, Ligne.TLigne, Poste.TPoste, Cause.TCause, Action.TAction, Action.Type, Action.Close, Delai.TDelai, Pilote.TPilote, DateRealise.TRealise, Produit.TProduit, Service.TService, Pilote.NumPilote
    FROM (((((Ligne INNER JOIN (Activite INNER JOIN ((Demandeur INNER JOIN Intitule ON Demandeur.NumDemandeur = Intitule.NumDemandeur) INNER JOIN Pilote ON Demandeur.NumDemandeur = Pilote.NumDemandeur) ON Activite.NumActivite = Intitule.NumActivite) ON Ligne.NumLigne = Intitule.NumLigne) INNER JOIN Poste ON Ligne.NumLigne = Poste.NumLigne) INNER JOIN (Delai INNER JOIN (Cause INNER JOIN [Action] ON Cause.NumCause = Action.NumCause) ON Delai.NumDelai = Action.NumDelai) ON (Pilote.NumPilote = Action.NumPilote) AND (Intitule.NumIntitule = Action.NumIntitule)) INNER JOIN Service ON Pilote.NumPilote = Service.NumPilote) INNER JOIN Produit ON Intitule.NumProduit = Produit.NumProduit) INNER JOIN DateRealise ON Pilote.NumPilote = DateRealise.NumPilote
    WHERE (((Pilote.NumPilote)=[Action].[NumPilote] And (Pilote.NumPilote)=[DateRealise].[NumPilote] And (Pilote.NumPilote)=[Service].[NumPilote]) AND ((Activite.NumActivite)=[Intitule].[NumActivite]) AND ((Produit.NumProduit)=[Intitule].[NumProduit]) AND ((Ligne.NumLigne)=[Intitule].[NumLigne] And (Ligne.NumLigne)=[Poste].[NumLigne]) AND ((Cause.NumCause)=[Action].[NumCause]) AND ((Delai.NumDelai)=[Action].[NumDelai]) AND ((Demandeur.NumDemandeur)=[Pilote].[NumDemandeur] And (Demandeur.NumDemandeur)=[Intitule].[NumDemandeur]))
    Et sur ce sous-formulaire, s'affichent les enregistrements de mes tables de ma base. Lorsque je met à jour mes tables, les nouveaux enregistrements ne sont pas pris en compte lorsque s'affichent de nouveaux les enregistrements de mes tables.
    J'ai même mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.sous_Formulaire.Requery
    mais rien ne fonctionne. Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    salut,
    ta clause WHERE me semble redondante avec ton INNER JOIN

    une petite mise a jour du SQL sans perte de vitesse est a envisager
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Salut jpcheck,
    Merci d'avoir passé ton temps à mon problème. Oui, t'as raison j'ai de redondance à cette instruction SQL. Même si j'enlève INNER JOIN ou je garde INNER JOIN et j'enlève la clause WHERE, ily a toujours la redondance. Comment puis-je éviter cette redondance.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    en decomposant ta requete, voici la liste des champs qui sont sujet a jointure :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Demandeur.NumDemandeur = Intitule.NumDemandeur
    Demandeur.NumDemandeur = Pilote.NumDemandeur
    Activite.NumActivite = Intitule.NumActivite
    Ligne.NumLigne = Intitule.NumLigne
    Ligne.NumLigne = Poste.NumLigne
    Cause.NumCause = Action.NumCause
    Delai.NumDelai = Action.NumDelai
    Pilote.NumPilote = Action.NumPilote
    Intitule.NumIntitule = Action.NumIntitule
    Pilote.NumPilote = Service.NumPilote
    Intitule.NumProduit = Produit.NumProduit
    Pilote.NumPilote = DateRealise.NumPilote
    Et voila la liste des champs qui sont dans ta clause WHERE

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Pilote.NumPilote=[Action].[NumPilote]
    Pilote.NumPilote=[DateRealise].[NumPilote]
    Pilote.NumPilote=[Service].[NumPilote]
    Activite.NumActivite=[Intitule].[NumActivite]
    Produit.NumProduit=[Intitule].[NumProduit]
    Ligne.NumLigne=[Intitule].[NumLigne]
    Ligne.NumLigne=[Poste].[NumLigne] 
    Cause.NumCause=[Action].[NumCause]
    Delai.NumDelai=[Action].[NumDelai]
    Demandeur.NumDemandeur=[Pilote].[NumDemandeur] Demandeur.NumDemandeur=[Intitule].[NumDemandeur]

    tout ce qui est deja dans la liste des jointures est inutile dans la liste des WHERE
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. Mettre à jour une base Sql à partir une base Access
    Par ptigoo dans le forum Développement
    Réponses: 2
    Dernier message: 08/06/2010, 17h14
  2. Problème pour mettre à jour une table SQL
    Par Bes74 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/03/2009, 20h21
  3. Réponses: 2
    Dernier message: 07/08/2008, 12h08
  4. Mettre à jour un controle par dblclik avec sous-formulaire
    Par lagratteCchouette dans le forum Access
    Réponses: 10
    Dernier message: 19/04/2006, 19h47
  5. Mettre à jour une base sous SQL SERVER 2000
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/02/2005, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo