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 :

Autoriser la saisie dans une requête multitables


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 69
    Points : 44
    Points
    44
    Par défaut Autoriser la saisie dans une requête multitables
    Bonjour,

    J'ai créé une requête qui est le résultat de plusieurs tables. J'utilise cette requête dans un sous-formulaire pour inviter l'utilisateur à saisir des données dans les champs vides.

    Mon problème c'est que cette requête issue de plusieurs tables n'autorise pas la saisie de donnée.

    Comment puis-je faire ?

    Merci par avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Bonjour,

    A priori sans avoir essayé, j'imagine qu'avec un peu de VBA tu devrais réussir. En tous les cas, c'est dans cette direction que j'irai face à cette question.

    Laurent

  3. #3
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonsoir,

    Attention effectivement au type de requête et aussi aux types de jointure.
    S'il y a des regroupements la saisie ne sera pas possible. S'il y a des jointure externe, ce ne sera pas possible non plus.
    Il faut voir si en exécutant la requête seule on peux ou non saisir dedans .
    ensuite dans un formulaire on peux aussi vérifier dans l'onglet données des propriété du formulaire le type de recordset pour autoriser ou non la saisie dans la requête source.

    Peux ton voir le code SQL de la requête ou une capture écran de l'assistant création ?

  4. #4
    Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 69
    Points : 44
    Points
    44
    Par défaut
    ci-dessous le code de la requête :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [Code gestionnaire].[Ligne Logistique], OTD.[Document de vente] AS Commande, OTD.Poste, OTD.Gestionnaire, OTD.Article, OTD.[Désignation article], [Causes Retards].[Statut OTD], [Causes Retards].[Cause Retard], [Causes Retards].Commentaire
    FROM [Causes Retards] INNER JOIN ([Code gestionnaire] INNER JOIN ([Donneur d'ordre] INNER JOIN OTD ON [Donneur d'ordre].[Donneur d'ordre] = OTD.[Donneur d'ordre]) ON [Code gestionnaire].[Code gestionnaire] = OTD.Gestionnaire) ON [Causes Retards].[Ligne de Commande] = OTD.[Ligne de commande]
    GROUP BY [Code gestionnaire].[Ligne Logistique], OTD.[Document de vente], OTD.Poste, OTD.Gestionnaire, OTD.Article, OTD.[Désignation article], [Causes Retards].[Statut OTD], [Causes Retards].[Cause Retard], [Causes Retards].Commentaire, [Causes Retards].semaine
    HAVING ((([Causes Retards].semaine)=Format(Date(),"ww",2)-"1"));

  5. #5
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Comme je l'ai dit précédemment c'est impossible de saisir dans une requête avec une clause "Group By"!
    Réfléchissons un peu
    Dans notre base de données nous avons plusieurs ligne de détail. mais pour des raison d'affichage ou de calcul, nous demandons a Access d'en regrouper certaines pour par exemple faire une somme. Dans ce cas plusieurs lignes sont regroupés en une seule. Et si nous voulons saisir dans la ligne récapitulatif, quelle ligne de détail devrait-il modifier ?? Impossible à savoir, donc impossible de saisir!
    Cependant dans ton exemple tu utilise une clause "Group By" (qui empêche d'office la mise à jour) alors que tu n'utilise aucune fonction de regroupement.
    En d'autre terme, elle ne te sert à rien.
    retire la.
    Modifie ta clause Havin par une clause "Where" classique et tout ira bien
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT [Code gestionnaire].[Ligne Logistique], OTD.[Document de vente] AS Commande, OTD.Poste, OTD.Gestionnaire, OTD.Article, OTD.[Désignation article], [Causes Retards].[Statut OTD], [Causes Retards].[Cause Retard], [Causes Retards].Commentaire
    FROM [Causes Retards] INNER JOIN ([Code gestionnaire] 
    INNER JOIN ([Donneur d'ordre] INNER JOIN OTD ON [Donneur d'ordre].[Donneur d'ordre] = OTD.[Donneur d'ordre]) 
    ON [Code gestionnaire].[Code gestionnaire] = OTD.Gestionnaire) ON [Causes Retards].[Ligne de Commande] = OTD.[Ligne de commande]
    WHERE ((([Causes Retards].semaine)=Format(Date(),"ww",2)-"1"));

Discussions similaires

  1. [XL-2000] Autoriser la saisie dans une cellule.
    Par cedana dans le forum Excel
    Réponses: 2
    Dernier message: 08/01/2010, 17h34
  2. Comment autoriser la saisie dans une liste déroulante
    Par Kyti dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 27/10/2008, 17h44
  3. Réponses: 3
    Dernier message: 25/09/2008, 11h26
  4. Saisie dans une requête SQL
    Par Z3c33 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/05/2007, 18h22
  5. Demande saisie dans une requête SQL !!
    Par Shakan972 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/03/2006, 16h38

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