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 :

comment obliger l'utilisateur à faire un choix et un seul


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut comment obliger l'utilisateur à faire un choix et un seul
    Bonjour

    grace au forum et à la faq j'avance assez vite.
    Je me heurte à un nouveau problème dans une table je voudrais obliger l'utilisateur à faire un choix minimum et maximum
    le champ concerné est un champ yes/no il faut qu'il y est un enregistrement maximum avec yes (-1)

    avez vous une piste ?

    dimitri

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    pas assez clair comme message. si tu pouvais en dire un peu plus.
    @+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut comment obliger l'utilisateur à faire un choix et un seul
    Citation Envoyé par keita
    salut
    pas assez clair comme message. si tu pouvais en dire un peu plus.
    @+
    ma table à une structure :
    Champ data type

    libellé texte
    photo ole object
    etc....
    et un champ
    Sélectionner Yes/no

    ----------
    Un formulaire utilise cette table et l'utilisateur peux cocher les items grace au champ yes/no [sélectionner], pour le moment il peux cocher autant qu'il veux
    Je voudrais obliger l'utilisateur à faire un choix et un seul parmis les items ?
    je voudrais pas qu'il quitte le formulaire sans avoir cocher un items [sélectionner]

    Suis je plus clair ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Salut,

    Immaginons que tu veuilles qu'un client d'une agence de Voyage choisisse un mode de transport pour son voyage,

    soit tu as dans un enregistrement des champs:

    Client Bateau Avion Voiture

    sachant que Bateau Avion Voiture sont des champs Yes/NO

    Tu veux donc empêcher que l'on puisse encoder:

    Tartempion Yes Yes NO

    car dans ce cas deux modes de transport sont choisis.

    Dans ce cas, c'est facile, tu mets un groupe d'option et le fait de cocher Avion décochera les autres (un seul ne sera sélectionné)

    Mais je pense plutôt que ton problème est plutôt que tu as 3 modes de transport dans ta table:

    Tartempion Bateau YES
    Tartempion Avion Yes
    Tartempion Voiture Yes

    est que tu veux éviter. Je ne jugerai pas de la pertinence de ce besoin... mais il est clair qu'avec mon exemple ça fait bizarre.

    Quand tu coches un élément, par exemple Avion, tu peux, avant de faire ta mise à jour sur avion, faire une requête mise à jour sur ta table qui met tous tes Yes/No à NO

    Si ton problème est que tu ne veux pas qu'on mette YES à avion si il y a déjà un Yes pour Bateau ou Voiture, tu lances avant mise à jour une requête qui compte les Yes pour Tartempion, si > 0 tu ne mets pas avion à Yes

    Bon travail

  5. #5
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Je ne comprends pas tout là...
    Un enregistrement = une case à cocher = un seul choix possible par enregistrement(oui ou non).

    A moins que tu ne veuilles qu'à chaque fois, un seul enregistrement
    soit coché et pas les autres...Faisable avec un sql action.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Faw a écrit:
    Je ne comprends pas tout là...
    Je crois qu'effectivement, le but est d'avoir un seul enregistrement coché à yes. Si access avait des triggers ce serait vite réglé, mais en attendant, il faut gérer les événements

  7. #7
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Faw a ecrit:
    A moins que tu ne veuilles qu'à chaque fois, un seul enregistrement soit coché et pas les autres...
    c'est comme ça que je comprends la chose; dans ce cas va falloir utiliser un recordset à mon humble avis.
    @+

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Lorsque l'utilisateur choisit un Yes, tu envoies un update sur ta table qui met tout à NO (enfin, là où il faut) sauf s'enregistrement en cours (éventuellement, met la clé dans un champ invisible pour faciliter la clause where) et ensuite, tu refresh ton form.

  9. #9
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    ce qui peut être traduit par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CaseCoche_Click()
    If Me.CaseCoche = True Then
    CurrentDb.Execute "UPDATE Table Set CaseCoche=False Where [IdentifiantEnregistrement]<> " & Nz(Me.IdentifiantEnregistrement, 0)
    Me.Refresh
    End If
    End Sub
    Evidemment, cette méthode n'est valable que pour des enregistrements uniques. Si doublons, ils garderont les valeurs de case qu'ils avaient.

  10. #10
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    d'accord pour le reste mais ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub CaseCoche_Click()
    pas sur Form_current?
    @+

  11. #11
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Bin l'avantage avec les contôles booléens c'est qu'ils sont mis à jour
    dès qu'on clique dessus.
    formcurrent ok mais du code qui s'exécute systématiquement sans que l'utilisateur touche à la case, je trouve ça un peu lourd...

  12. #12
    Membre régulier Avatar de GESCOM2000
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 107
    Points : 79
    Points
    79
    Par défaut
    Moi je ferait une condition avant d'ecrire dans le recorset le tout sur
    APres MAJ ou avant ou sur Perte Focus...

  13. #13
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    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
    Private Sub CaseCoche_Click()
    dim casecocheoldvalue as Boolean
    casecocheoldvalue = me.CaseCoche.OldValue
    Me.Refresh  ‘indispensable ICI sinon le rs se fera sur une table non mise à jour.
     
    If Me.CaseCoche = True Then
    CurrentDb.Execute "UPDATE Tab Set CaseCoche=False Where [clé] <> " & Nz(Me.clé, 0) 
    ' ici clé est de type numérique
     
    Else  ‘si décochage
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sql As String
    Set db = CurrentDb
    sql = "SELECT * FROM Tab Where CaseCoche = True"
    Set rs = db.OpenRecordset(sql)
     
    If rs.BOF Then ‘AUCUN enregistrement coché
        MsgBox "Vous devez sélectionner un enregistrement svp"
        Me.CaseCoche = casecocheoldvalue  'logiquement on pourrait mettre True
    End If
    End If
     
    Set db = Nothing
    Set rs = Nothing
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/02/2015, 10h50
  2. Comment obliger un utilisateur à remplir tous les champs d'un Userform
    Par puledad1 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/09/2011, 16h20
  3. Comment obliger un utilisateur à remplir tous les champs d'un Userform
    Par Gibé2201 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/08/2011, 11h49
  4. Réponses: 29
    Dernier message: 06/03/2007, 15h24
  5. Comment faire mon choix
    Par SoubeigAbraham dans le forum Débuter
    Réponses: 1
    Dernier message: 07/10/2004, 14h29

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