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

VBA Access Discussion :

Création d'état à partir d'un formulaire - Problème lorsque le sous formulaire est vide [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juin 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2015
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Création d'état à partir d'un formulaire - Problème lorsque le sous formulaire est vide
    Bonjour

    Dans ma base de données j'ai la possibilité d'ouvrir un état depuis un formulaire (en le filtrant sur un enregistrement specifique).
    Les enregistrements d'origine peut être reliée à des enregistrements complémentaires contenus dans une autre table; ces enregistrements complémentaires peuvent être rentrées via un sous formulaire.
    Lorsque que je genère l'état et qu'il n'y a pas d'enregistrements complementaires (sous formulaire vide) ; cela m'affiche un etat sans aucunes données (l'enregistrement d'origine n'y apparait même pas)...

    Je ne comprend pas car quand j'ai des 'sous enregistrements' , l'etat apparait complet...
    Je precise que ce probleme survient à deux reprises dans ma base , soit avec 4 tables differentes.

    La source de l'etat est la suivante :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [Action and measures].N°action, [Action and measures].Reason, [Action and measures].Dateofdecision, [Action and measures].Dateofdeadline, [Action and measures].N°responsible, [Action and measures].Doneornot, [Accident report].N°accidentreport, [Accident report].Dateofaccident, [Accident report].[Person concerned], [Accident report].N°part, [Accident report].N°oftheitem, [Accident report].Detailsofacc, [Accident report].Pictacc, Responsible.Nameresp, Responsible.Surnameresp, [Part of the project].Physicalplace, [Part of the project].NameCompany, [Accident report].Accpoints, Item.Nameofitem FROM Item INNER JOIN ([Part of the project] INNER JOIN (Responsible INNER JOIN ([Accident report] INNER JOIN [Action and measures] ON [Accident report].N°accidentreport = [Action and measures].N°accidentreport) ON Responsible.N°responsible = [Action and measures].N°responsible) ON [Part of the project].N°part = [Accident report].N°part) ON Item.N°oftheitem = [Accident report].N°oftheitem;
    [Accident report] est la table d'origine ; a laquelle peuvent se rapporter plusieurs enregistrements de [Action and measures].

    Avez vous une idée de ce qui pourrait causer cela ?

    Merci par avance à ceux qui pourront m'aider.
    Bonne fin de journée.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Bonjour,

    Il faut utiliser LEFT JOIN pour avoir une entete qui n'a pas de détail
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juin 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2015
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Bonjour Nico84,

    Merci pour l'interet pour mon probleme.

    Je viens d'essayer en remplacant les INNER JOIN par LEFT JOIN :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [Action and measures].N°action, [Action and measures].Reason, [Action and measures].Dateofdecision, [Action and measures].Dateofdeadline, [Action and measures].N°responsible, [Action and measures].Doneornot, [Accident report].N°accidentreport, [Accident report].Dateofaccident, [Accident report].[Person concerned], [Accident report].N°part, [Accident report].N°oftheitem, [Accident report].Detailsofacc, [Accident report].Pictacc, Responsible.Nameresp, Responsible.Surnameresp, [Part of the project].Physicalplace, [Part of the project].NameCompany, [Accident report].Accpoints, Item.Nameofitem FROM Item LEFT JOIN ([Part of the project] LEFT JOIN (Responsible LEFT JOIN ([Accident report] LEFT JOIN [Action and measures] ON [Accident report].N°accidentreport = [Action and measures].N°accidentreport) ON Responsible.N°responsible = [Action and measures].N°responsible) ON [Part of the project].N°part = [Accident report].N°part) ON Item.N°oftheitem = [Accident report].N°oftheitem;

    Cependant l'état ne s'ouvre plus et cela m'affiche le message : "Expression JOIN non supportée".
    Une idée de ce qui ne va pas ?

    Merci d'avance !
    Bonne fin de semaine.

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    En l'état c'est pas très lisible
    Pour ma part je met le on juste après la 2e table et j'utilise des alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select a.champ1, b.champ2, c.champ3 from (table1 as a left join table2 as b on b.x=a.x) left join table3 as c on c.y=b.y
    Mais ce n'est pas une obligation de même qu'on peut combiner inner join, left join, right join... Par contre on ne peut pas écrire n'importe quoi, il faut respecter la logique des données
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juin 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2015
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    YES !!!

    Je viens de reussir à le faire pour un autre ensemble formulaire/etat où j'avais ce problème et ca a marché...
    Donc j'imagine que sur l'expression SQL donnée j'ai du faire une erreur !

    Je vais travailler dessus mais devrait le faire.

    Encore un grand merci Nico84 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/04/2008, 10h33
  2. Réponses: 5
    Dernier message: 19/11/2007, 14h27
  3. Réponses: 4
    Dernier message: 21/09/2007, 13h23
  4. Réponses: 11
    Dernier message: 02/05/2007, 08h56
  5. Réponses: 3
    Dernier message: 26/08/2006, 15h55

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