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

IHM Discussion :

Afficher des enregistrements vides dans un formulaire


Sujet :

IHM

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut Afficher des enregistrements vides dans un formulaire
    Bonjour,

    J'ai une base avec des vendeurs qui occupent des emplacements à des dates prédéfinies.

    Je voudrais créer un formulaire qui, pour chaque date, m'affiche tous les emplacements, qu'ils soient occupés ou non par un vendeur, de façon a ce que je puisse d'un coup d'œil rapide voir si à une date donnée il y a encore des places disponibles que je pourrai attribuer d'un clic à un vendeur.

    Comment pourrais-je faire ?

    Merci

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour rag83,

    Sans la structure de tes tables c'est pas évident. Une piste, ton formulaire pourrait se baser sur une requête qui ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Employes.EmployeNom, Emplacement.EmplacementNom
    FROM Employes LEFT JOIN Emplacement ON Employes.CléPrimaire = Emplacement.CléExterne(Employé);
    Le résultat serait que tu as une ligne pour chaque employés et si un emplacement est assigné à l'employé, le nom de l'emplacement.

    À adapter selon la structure de ta base.

    Bonne journée

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Merci pour ta réponse ultra rapide Robert !

    J'ai 3 tables de base (dates, emplacements, et vendeurs), et une 4eme liée aux 3 premières qui reprend leurs données et qui me permet d'enregistrer l'historique des participations de tout le monde tel ou tel jour, a telle ou telle date et sur tel ou tel emplacement.

    Je voudrais donc que pour une date donnée, au lieu que ne s'affichent que les emplacements occupés, ils le soient tous et que je n'aie qu'à cliquer ma liste déroulante de vendeurs pour leur attribuer l'emplacement vide.

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour rag83,

    Si je comprend bien la structure de tes tables, tu as une table de jonction qui a comme champs: FK_Dates, FK_Emplacements et FK_Vendeurs. Pour l'affichage de toutes tes lignes le principe reste le même, tu vas chercher dans la table Emplacements tous les emplacements et dans la table Dates toutes les dates inscrites avec les lignes qui correspondent dans ta table de jonction. Tu vas probablement être obligé de découper ta requête, c'est à dire une première requête avec ta table Dates et ta table Jonction avec en critère la date voulue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Dates.Jour, Jonction.FK_Dates, Jonction.FK_Emplacements, Jonction.FK_Vendeurs
    FROM Dates LEFT JOIN Jonction ON Dates.PK_Dates = Jonction.FK_Dates
    WHERE (((Dates.PK_Dates)=2));
    Une deuxième requête basé sur la première et la table Emplacement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Emplacements.Nom_Emplacement, Requête1.FK_Dates, Requête1.FK_Emplacements, Requête1.FK_Vendeurs
    FROM Emplacements LEFT JOIN Requête1 ON Emplacements.PK_Emplacements = Requête1.FK_Emplacements;
    Tu bases ton sous-formulaire là dessus et tu vas avoir toutes tes lignes qu'il y ait ou non de l'info.

    Mais avec ce principe les lignes ne seront pas éditables. Il va falloir que tu ais recours à du code genre requête ajout sur un événement choisi.

    Bonne journée

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Une nouvelle fois merci pour ton aide Robert.

    J'ai peur de m'attaquer à quelque chose d'un peu compliqué pour moi, je débute sous Access et j'ai beaucoup de mal avec certaines choses qui peuvent pourtant paraitre simples.

    Je ne sais pas comment faire, les 3 lignes de code que tu as tapées, je dois les rentrer où ?

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour rag83,

    Ce n'est pas du code ce sont des requêtes. Si tu copies dans l'outil d'Access "Création de requête" en mode SQL cela va créer ta requête. Naturellement à adapter selon tes tables. De plus dans la première requête il faudrait modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (((Dates.PK_Dates)=2));
    par la date désirée, en te basant sur ton formulaire principal genre "Forms!FormulairePrincipal.ListeDate".
    J'ai peur de m'attaquer à quelque chose d'un peu compliqué pour moi
    En effet si tu as de la difficulté avec le code cela peut présenter un problème parce que cette solution ne te permettra pas d'enregistrer des lignes dans ta table de manière automatique comme Access le fait avec un formulaire lié normalement. Il faudra avoir recours à du code pour faire une requête ajout.

    Bonne journée

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Bon je vais essayer de faire au moins ce que tu as marqué mais c'est pas gagné...

    Pour les 3 lignes de la première requête, j'ai essayé de faire en fonction de mes tables mais quand j'exécute la requête j'ai une fenêtre qui s'ouvre me demandant de sélectionner la source de données, est ce que ça veut dire que je me suis trompé quelque part ?

    Sinon Robert pour ce que je veux faire, c'est de ça qu'on parle ?

    http://msdn.microsoft.com/fr-fr/libr...ql.105%29.aspx

  8. #8
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour,

    Oui c'est ça. Est-ce que l'application que tu as posté dans l'autre discussion est ce avec quoi tu travailles? Si oui je vais te faire un petit exemple.

    Bonne journée

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Oui c'est bien l'application qui se trouve dans mon autre topic, celui ou loufab s'arrache les cheveux à essayer de me faire comprendre le truc de la date...

    Alors un énorme merci pour le petit exemple que tu veux bien me faire je passe un temps fou à essayer de comprendre certaines choses par moi-même, je n'ai personne dans mon entourage pour m'aider, j'ai bien avancé par rapport à la table qui est postée mais maintenant je suis bloqué et ton aide est plus que la bienvenue... Si d'ailleurs tu veux bien me montrer aussi pour la date, une fois que j'aurai compris le fonctionnement je pourrai poursuivre.

    Si tu peux juste renommer mon formulaire T_occupation en F_occupation ce sera plus clair pour moi, je me suis trompé quand j'ai posté ma base

  10. #10
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour rag83,

    J'ai créé un nouveau formulaire qui se nomme Formulaire1 tu pourras le renommer comme tu veux. Dans ce formulaire voici le code qui fait que ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Option Compare Database
    Option Explicit
     
    Private Sub cmbDate_AfterUpdate()
     
        'Affecte la requête du formulaire après que tu ais choisi une date
        Me.RecordSource = "rqOcc_R"
     
    End Sub
     
    Private Sub id_vendeur_AfterUpdate()
     
        'Déclare la variable
        Dim strSQL As String
        'Copie l'emplacement dans le champ emplacement
        Me.rqOcc_id_emplacement = Me.emplacement
        'Enregistre la modification
        Me.Dirty = False
        'Construction de la requête mise à jour
        strSQL = "UPDATE T_OCCUPATION SET T_OCCUPATION.id_date =" & Me.cmbDate
        strSQL = strSQL & " WHERE (((T_OCCUPATION.id_occupation)=" & Me.id_occupation & "));"
        'Enlève les avertissements d'Access
        DoCmd.SetWarnings False
        'Lance la requête pour mettre à jour l'enregistrement
        DoCmd.RunSQL (strSQL)
        'Remet les avertissements
        DoCmd.SetWarnings True
     
    End Sub
    Dans le miniature tu vois la requête qui te permet de construire la requête "rqOcc_R. C'est elle qui fait que le formulaire va afficher toutes les enregistrements de la table Emplacements. Entouré en rouge c'est le critère de la requête. C'est ce qui fait que la requête affiche seulement les enregistrements pour la date choisi.

    J'ai pas regardé pour ton problème de date, pas eu le temps... plus tard

    Bonne soirée
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut


    Un grand merci pour ton aide et la qualité de tes explications, c'est exactement ce que je voulais.

    Je ne suis clairement pas au niveau mais je vais me pencher sur le sujet et essayer d'y voir un peu plus clair

    Je ne veux pas abuser de ton temps davantage, merci encore

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Bon et bien voila j'aurais mieux fait de me taire et de ne pas dire que je ne vais plus abuser de ton temps

    J'ai essayé d'appliquer tout ce que tu as fait sur une version un peu plus récente de ma base, j'ai vérifié et revérifié je ne vois pas mon erreur, je n'ai que les emplacements occupés qui apparaissent...

    Si tu peux me dire pourquoi...

    Il y a très peu de changements par rapport à celle que tu as, je supprime juste les états et des formulaires inutiles que j'ai rajoutés depuis.

    Si tu n'as pas le temps je comprendrai tu m'as déjà bien aidé

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Bon à la reflexion je vais plutôt repartir de ta version et rajouter petit à petit ce que j'ai fait en plus, ce sera plus simple

    Merci encore

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Et bien voila cela refonctionne, grace à toi Robert mon projet avance

    Une petite question par contre, est-il possible que le formulaire1 s'ouvre par défaut sur une date choisie dans un autre formulaire, celui qui se nomme F_Recherche_dates ?

    Je te reposte la base si tu veux bien jeter un œil je te remercie.
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip p2.zip (69,4 Ko, 93 affichages)

  15. #15
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour rag83,

    Dans ton formulaire F_Recherche_dates au lieu de la macro sur clic, le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Compare Database
    Option Explicit
     
    Private Sub Commande5_Click()
     
        DoCmd.OpenForm "Formulaire1", acNormal, , , , , Me.dates_puces
     
    End Sub
    Et dans ton formulaire Formulaire1 dans l'événement sur chargement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Load()
     
        Me.cmbDate = Me.OpenArgs
        Me.RecordSource = "rqOcc_R"
     
    End Sub
    Bonne journée

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Quelle rapidité !

    Cela fonctionne mais il y a un soucis, les vendeurs enregistrés ne s'affichent que si je change la date par la liste déroulante de formulaire1, si je le ferme et que j'essaye d'y revenir par F_Recherche_dates, tous les emplacements sont vides

  17. #17
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour rag83,

    je viens de voir pourquoi, c'est à cause de ta liste de dates qui possède un id et une date.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Commande5_Click()
     
        DoCmd.OpenForm "Formulaire1", acNormal, , , , , Me.id_date
     
    End Sub
    Cela va fonctionner.

    Bonne journée

  18. #18
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    C'est parfait, problème résolu !

    Un grand merci à toi !

  19. #19
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 423
    Points : 133
    Points
    133
    Par défaut
    Bonjour Robert,

    Je poste encore ici car si tu veux bien, je vais te solliciter encore une fois pour mon projet qui est presque achevé pour lequel je rencontre quelques petits problèmes que malgré mes recherches, je n'ai pas réussi à résoudre.

    Dans le formulaire avec les enregistrements vides que tu m'as fait, tu m'as donné un code pour pouvoir afficher une date en venant d'un autre formulaire (F_Recherche_dates ici).

    Le problème c'est que cela ne fonctionne que la première fois que je sélectionne une date, ensuite si je ne ferme pas le formulaire F_Dates, ça ne fonctionne plus...
    Alors tu me diras ce n'est pas très grave car je peux choisir les dates directement dans le formulaire et tu auras raison, mais en fait c'est un peu compliqué, d'autres personnes vont utiliser cette base et j'aimerais que ce procédé fonctionne.

    Ensuite autre problème, quand je sélectionne un vendeur dans ce formulaire F_Dates et que je passe sur le champ "demande enregistrée le ", je me prends un message d'erreur "les données ont été modifiées, etc", et il faut que je reclique pour pouvoir faire ma saisie.

    Pour terminer j'ai toujours mon problème d'affichage de la date qui traine...

    Qu'est ce que je peux faire pour arranger ça ?

    Je mets la base que j'ai modifiée depuis l'autre jour si tu as le temps de jeter un œil.

    Merci pour ton aide
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip v3.zip (76,5 Ko, 79 affichages)

  20. #20
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut Partie 1
    Bonjour rag83,
    Le problème c'est que cela ne fonctionne que la première fois que je sélectionne une date, ensuite si je ne ferme pas le formulaire F_Dates, ça ne fonctionne plus...
    C'est normal le code fonctionne sur la commande ouvrir le formulaire, comme il est déjà ouvert??? Sur la Commande5_Click il faudrait que tu ajoutes une condition: Si le formulaire F_Dates est ouvert changer la date et relancer la requête sinon ouvrir le formulaire. En VBA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande5_Click()
     
    If SysCmd(acSysCmdGetObjectState, acForm, "F_Dates") <> 0 Then
        Forms![F_Dates].[cmbDate] = Me.id_date
        Forms![F_Dates].Requery
    Else
        DoCmd.OpenForm "F_Dates", acNormal, , , , , Me.id_date
    End If
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] Ne pas afficher enregistrement vide dans sous formulaire
    Par Lux (le noob) dans le forum IHM
    Réponses: 2
    Dernier message: 04/03/2014, 11h49
  2. [XL-2007] ne pas afficher des points 'vides' dans un graphique
    Par boboss123 dans le forum Excel
    Réponses: 6
    Dernier message: 24/07/2012, 16h08
  3. Afficher des row vides dans une query
    Par ArchVector dans le forum SQL
    Réponses: 2
    Dernier message: 12/03/2010, 14h59
  4. [WD-2003] Gestion des espaces vides dans un formulaire
    Par alzim dans le forum Word
    Réponses: 3
    Dernier message: 15/10/2009, 00h48
  5. Exclure des enregistrements vide dans une requête sql
    Par beegees dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/03/2009, 19h42

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