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

Access Discussion :

Affichage suivant enregistrement précédent


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut Affichage suivant enregistrement précédent
    Bonjour,

    J'ai un formulaire contenant une liste de contact, chaque contact a un service et l'affichage est trié par service.

    J'aimerais que si il y a 3 personnes dans le service, le nom du service soit affiché une seul fois et que le reste soit blanc ou vide ou même sans textbox suivant ce qui est possible.

    Exemple :
    ACHAT__Dupont
    ACHAT__Durand
    ACHAT__Toto
    RH______Tata
    RH______Titi


    deviendrait

    ACHAT Dupont
    ______Durand
    ______Toto
    RH____Tata
    ______Titi


    Merci par avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 268
    Points
    268
    Par défaut
    Et pourquoi tu passes pas par une état. Ils sont fait pour ca ?

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    Parce qu'il faut que l'utilisateur puisse ajouter des contacts, ce qui est impossible dans un état, je crois ?

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    avec la mise en forme conditionnelle on peut arriver à un résultat approchant :

    - mon champ texte à masquer s'appelle "groupe"
    - mettre un champ texte qui va récupérer la valeur précédente
    --- nom : PrevGroupe
    --- source : =PreviousValue()
    - PreviousValue est une fonction qui récupère la valeur de la ligne précédente (code ci-dessous)
    - la mise en forme conditionnelle qui change la couleur du champ si la valeur est égale à la valeur précédente, écrite en VBA pour avoir la valeur de la couleur de fond facilement

    Code à mettre dans le formulaire :
    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
    Private Function PreviousValue()
    Me.RecordsetClone.Bookmark = Me.Bookmark
    Me.RecordsetClone.MovePrevious
    PreviousValue = Me.RecordsetClone!groupe
    End Function
     
    Private Sub Form_Load()
    Dim i As Integer
    For i = 0 To Me.groupe.FormatConditions.Count - 1
    Me.groupe.FormatConditions(0).Delete
    Next
    With Me.groupe.FormatConditions.Add(acExpression, , "[groupe] = [PrevGroupe]")
     .BackColor = Me.Section(acDetail).BackColor
     .ForeColor = Me.Section(acDetail).BackColor
    End With
    End Sub
    Y a juste à remplacer groupe et PrevGroupe par les noms des deux champs texte
    L'affichage peut mettre un peu de temps à cause de la fonction PreviousValue....

    J'ai pas mieux...

    Bye.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    Merci pour cette réponse mais je ne comprends pas ce que fais ces lignes

    With Me.Service_contact.FormatConditions.Add(acExpression, , "[Service_contact] = [ancien_service]")
    .BackColor = Me.Section(acDetail).BackColor
    .ForeColor = Me.Section(acDetail).BackColor
    End With


    C'est le BackColor et le ForeColor d'où ?

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 59
    Points : 66
    Points
    66
    Par défaut
    hello,

    Et pourquoi pas un formulaire et un sous-formulaire

    basé sur 2 tables
    1 table liste de contact
    1 table service
    tu pourrais faire soit un formulaire par contact avec sous-formulaire service
    soit service avec sous-formulaire contact

    Jeff

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    En fait j'ai un formulaire client et un sous formulaire contact, alors je ne sais pas si je peux rajouter encore un autre sous sous formulaire sachant que je dois pouvoir ajouter des clients et des contacts.

    En plus, il faut que je fasse une requête pour pouvoir faire une recherche aussi bien dans les contacts que dans les clients.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Points : 65
    Points
    65
    Par défaut
    J'ai adapté le code à mon contexte, mais rien ne se passe quand j'ouvre mon formulaire.
    Est ce que vous voyez d'où ça peut venir ?

    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
     
    Dim ancien_service As String
     
    Private Function PreviousValue()
    Me.RecordsetClone.Bookmark = Me.Bookmark
    Me.RecordsetClone.MovePrevious
    PreviousValue = Me.RecordsetClone!Service_contact
    End Function
     
    Private Sub CONTACT_Sous_formulaire_Enter()
    Dim i As Integer
    For i = 0 To Me.Service_contact.FormatConditions.Count - 1
    Me.Service_contact.FormatConditions(0).Delete
    Next
    ancien_service = PreviousValue()
    With Me.Service_contact.FormatConditions.Add(acExpression, , "[service_contact] = [ancien_service]")
     .BackColor = Me.Service_contact.BackColor
     .ForeColor = Me.Service_contact.BackColor
    End With
     
    End Sub

  9. #9
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    y a un petit problème dans l'adaptation

    - c'est dans l'événement chargement du formulaire qu'il faut placer le code
    - ancien_service doit être une zone de texte avec le fonction PreviousValue comme source

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/01/2010, 23h32
  2. [AC-2007] affichage différent suivant enregistrement
    Par marcus275 dans le forum IHM
    Réponses: 1
    Dernier message: 05/06/2009, 00h27
  3. Cas complexe : Enregistrement suivant et précédent
    Par psgkiki dans le forum Requêtes
    Réponses: 4
    Dernier message: 17/08/2008, 00h06
  4. Réponses: 2
    Dernier message: 18/05/2007, 17h17
  5. [MySQL] Enregistrement précédent/suivant
    Par jp76ers dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/02/2007, 11h21

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