Case à cocher unique

Bonjour,

J'éssais dans un formulaire d'un BDD Access de créer un objet "case à cocher" unique.

Ce formulaire affiche plusieurs contacts d'un client, et j'ai un contact favori. Je pourrais pouvoir l'identifier par une case à cocher, mais dans tous les résultats du filtre, je dois pouvoir cocher qu'un seul enregistrement, si j'essaye d'en cocher un autre, je voudrais avoir un message, qui me prévient que je ne peux selectionner qu'un seul contact favori et qui me demande si je veux changer de favori?

Quelqu'un a-t-il une idée sur la façon que je peux réaliser ceci ?

Merci à qui voudra bien m'aider.

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    Tu saisie les informations sur un formulaire ?
    Tu utilises quel langage ?

    Tu peux, s'il te plaît, nous mettre le code de ce que tu as déjà fait.
    1. Bonjour et merci pour ton intention. Oui je saisie les informations dans un formulaire.Je ne comprends pas ta question concernant le langage ? Je n'ai pas de code dans ma Bdd car inutile jusque présent;
  2. Contributeur
    bonjour, la case à cocher est-elle un champ d'une table?
    peux-tu nous donner la liste de tes tables et des champs de tes tables?
    1. Bonjour et merci pour ton attention.
      La case à cocher est dans un table nommée contact_client. Il s'agit d'une Bdd Access des plus basique.J'ai 3 tables, une commercial, une client, et un contact client. Dans ma table commercial, un champ N° Auto, un champ nom et un lien vers ma table client. Dans ma table client, un champ n°, un champ Nom_du_client, un champ adresse, ville etc, un champ lien vers contact. Dans ma table contact, un champ N°, un champ nom du contact, un champ type case à cocher. Et c'est ce fameux champ que je cherche à rendre "unique".
      Merci encore
      Je tiens à préciser que cela doit faire 2 heures que j'essaie de répondre, mais rien n'y fait, j'ai changé de PC, et là ça à l'air de fonctionner......
    2. Contributeur
      @planetesudtable commercial, un champ N° Auto, un champ nom et un lien vers ma table client.
      table client, un champ n°, un champ Nom_du_client, un champ adresse, ville etc, un champ lien vers contact
      table contact, un champ N°, un champ nom du contact, un champ type case à cocher.
      _
      donc chaque commercial a un seul client?
      chaque client a un seul contact?
    3. Non j’ai une relation un à plusieurs
    4. Contributeur
      @planetesuddonc ce serait dans la table client qu'il y a un champ qui contient le N° du commercial?
      le client est lié à un seul commercial?
      et dans la table contact un champ qui contient le N° du client?
      le contact est lié à un seul client?
      si j'ai bien deviné, alors je suggère de ne pas avoir de case à cocher dans la table contact, mais d'ajouter dans la table client un champ qui indique le N° du contact favori.
    5. Bonsoir,
      Merci pour ton aide, mais comme expliqué plus haut, j'ai du changer de PC et je me suis embrouillée dans mes champs cités, car j'ai pris mon PC Perso, alors que ma base est sur mon PC Pro.... oups.....
      Dans ma table commercial : N°Employé, Nom et Prénom
      Dans ma table client : N°Client, Nom, adresse...., Lien avec Commercial
      Dans ma table contact client :N°Contact, Nom du contact, Lien avec Client, Case à cocher "Favori"

      J'ai un début de solution, dans ma table Contact, j'ai créé un champ qui compte mes "Case à cocher", que j'ai nommé "CompteMail" et dans mon formulaire, en source contrôle j'écris :
      =SomDom"[Favori]";"T3_ContactClient")


      Ensuite dans mon formulaire :
      Private Sub Favori_Click(Cancel As Integer)
      Dim sql As String
      Dim rep As Long

      If Me.CompteMail.Value < 0 Then

      rep = MsgBox("Vous ne devez choisir qu'un seul mail de contact. Voulez-vous conserver ce mail ?", vbYesNo, "ATTENTION")
      'si la réponse est non : il décoche le contact coché
      If rep = vbNo Then

      Me.Favori = False

      Else
      'Decoche toutes les cases à cocher et garde le contact désiré

      sql = "update T3_ContactClient set Favori = false"
      CurrentDb.Execute sql

      End If
      End If
      Me.Requery
      End Sub

      Ce code fonctionne à peu près bien, à un détail près, si je décoche toutes mes cases, j'ai quand même le message, car l'actualisation se fait après... je pense que je devrais positionner ce code ailleurs, mais je tourne en rond.
      De plus, il y a des fois, mais pas à chaque fois, il me dit qu'une autre personne est en train de modifier mes données en même temps, alors que je suis sure d'être seule sur cette base pour l'instant;

      Si tu as des idées pour moi, je suis preneuse et encore désolée pour ma confusion.
      Sandrine