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 :

Dans un formulaire, sélection unique d'un enregistrement avec une case à cocher


Sujet :

IHM

  1. #1
    Membre habitué Avatar de possible924
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 302
    Points : 159
    Points
    159
    Par défaut Dans un formulaire, sélection unique d'un enregistrement avec une case à cocher
    Bonjour à tous,
    Dans un formulaire en mode continu, j'ai un champ "Dom_Sélect" de type Booléan. Je ne souhaite pouvoir ne sélectionner qu'un seul enregistrement, et donc, avant de donner la valeur -1 à un enregistrement, je met au préalable tous les enregistrements à la valeur 0, puis je met l'enregistrement actif à -1.
    L'idée me semblait bonne, mais j'obtiens un message de conflit d'écriture.
    Que faire pour contourner ce problème ?
    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
    Private Sub Dom_Sélect_AfterUpdate()
    On Error GoTo Fin
        DoCmd.RunCommand acCmdSaveRecord
        NbSélect = DSum("Dom_Sélect", "T_Domiciliations", "Dom_Clé_Usager = " & Me.Parent.CléP_Usager)
     
        Me.Nb_Sélections.Requery
    Fin:
    End Sub
    Private Sub Dom_Sélect_BeforeUpdate(Cancel As Integer)
        DoCmd.SetWarnings False
            DoCmd.RunSQL "UPDATE T_Domiciliations SET T_Domiciliations.Dom_Sélect = 0 WHERE T_Domiciliations.Dom_Clé_Usager= " & Me.Parent.CléP_Usager
        DoCmd.SetWarnings True
        If Me.Dom_Sélect = -1 Then Me.CléP = Me.CléP_Domiciliation
    End Sub
    Private Sub Dom_Sélect_Click()
        If Me.Dom_Sélect = -1 Then Me.Dom_Sélect = 0
        If Me.Dom_Sélect = 0 Then Me.Dom_Sélect = -1
    End Sub
    Merci par avance pour votre aide

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonsoir,

    Il faut changer les conditions de l'update pour qu'il ne modifie pas la ligne en cours.
    Par ailleurs il me semble qu'il vaut mieux tout faire dans afterupdate et seulement si la case est cochée

    Enfin, plutot qu'utiliser docmd il vaut mieux la syntaxe suivante qui permet une vraie gestion d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "update ...", dbFailOnError
    En plus ça évite de modifier setwarnings à chaque fois
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/04/2012, 08h34
  2. Réponses: 5
    Dernier message: 08/08/2009, 05h20
  3. [PHP 4] Sélectionner les lignes d'un formulaire avec une case à cocher
    Par shenmicke dans le forum Langage
    Réponses: 7
    Dernier message: 05/08/2009, 14h56
  4. Réponses: 3
    Dernier message: 29/08/2008, 15h53
  5. Affichage de nouveau champ de formulaire avec une case à cocher
    Par breizhgen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/09/2006, 21h46

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