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

VBA Access Discussion :

Verrouiller formulaire multi utilisateur [AC-2013]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut Verrouiller formulaire multi utilisateur
    Bonjour,
    Pas assez de connaissance VBA, je rame dur…

    - Table « Resa » avec NumResa (NumAuto)
    - Formulaire « Resa1 » pour ouvrir sur une période de l’année via une liste déroulante
    - Sous Formulaire « Resa2 » pour inscrire une personne sur la réservation (Table Resa)

    Fonctionnement en multi-utilisateur,

    - je souhaite que lorsque l’utilisateur 1 ouvre le sous-formulaire via le « NumResa » pour inscrire ou modifier les champs
    - et que les autres utilisateurs ne puissent pas ouvrir le sous formulaire sur le même « NumResa » avec message « Saisie en cours »
    Les autres utilisateurs peuvent ouvrir le sous formulaire sur un autre « NumResa » mais pas celui déjà utilisé par utilisateur 1

    J’ai essayé plusieurs idées trouvées sur le forum dont celle de Loufab, sans aboutir

    Je travaille sous access 2013

    D’avance merci si quelqu’un a un peu de lumière
    Olivier

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bojnour.

    Il va falloir mettre en place un mecanisme de "semaphore" :
    1. Quand quelqu'un veut "entrer en modification" il verifie si le semaphore est leve.
    2. Si il n'est pas leve, il le leve et entre en modification.
      Sinon il ne peut pas entrer en modification.
    3. Il fait ses modifications.
    4. Il baisse le semaphore pour signaler qu'il a fini.


    c'est assez simple a mettre en oeuvre :

    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
    30
    public function DemanderModif() as Boolean
      dim result as Boolean:result=false
      on error goto Err_DemanderModif
     
      dim db as dao.database: set db=currentdb
      dim r as dao.recordset:set r=db.openrecordset("tblSemaphore", dbOpenDynaset)
     
      if Not r![EstEnModif] then
        r.edit
        r![CodeUtilisateur]=Environ$("UserName")
        r![EstEnModif]=true
        r.update
      end if
     
      r.close: set r=nothing
      db.close: set db=nothing
     
    exit_DemanderModif:
      DemanderModif=result
      exit function
     
    Err_emanderModif:
      select case err.number
          case X 'Enregistrement verrouille (je ne me souviens plus du numero de l'erreur)
             resume exit_DemanderModif
          case else
             call err.raise(err.number,,err.description)
      end select
     
    end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public sub LibererModif()
      on error goto Err_DemanderModif
     
      dim db as dao.database: set db=currentdb
      dim r as dao.recordset:set r=db.openrecordset("tblSemaphore", dbOpenDynaset)
     
      r.edit
      r![CodeUtilisateur]=Null
      r![EstEnModif]=false
      r.update
     
      r.close: set r=nothing
      db.close: set db=nothing
    end function
    Utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if DemanderModif() then
         msgbox "Modif autorisee"
         'ici la modif
         call LibererModif
       else
         msgbox "Modif refusee"
    end if
    Evidement il faut aussi prevoir un mecanisme pour baisser le semaphore au cas ou quelqu'un serait sorti de la modification SANS baisser le semaphore. Sinon tout le monde va etre bloque ad vitam eternam.

    Sas-tu que si tu utilises le verrouillage par enregistrement Access bloque l'acces a un enregistrement en cours de modification ?
    Si tu as conservesl'affichage du selecteur d'enregistrement (le carre gris a gauche) il affiche un signe d'interdiction en forme de 0 barre.

    Le point delicat va etre de detecter que quelqu'un veut "entrer" en modification.
    Est-ce que tu as une action qui precede la modif (ex : appuye sur un bouton "Modif") ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    Merci Marot r !!
    je prends le temps de tout comprendre et de créer

    Merci pour le côté "assez simple" )

    A suivre et encore merci

  4. #4
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    Re-Bonjour,
    Très difficile pour moi, je sais qu’une formation VBA s’impose, malheureusement le temps manque

    Je dois créer une table « tblSemaphore » et une table « utilisateurs »

    Ok pour la 2ème, numAuto + nom utilisateur
    Pour « tblSemaphore » que doit elle contenir ?

    J’avais testé le verrouillage Access mais pas suffisant selon l’ordre d’ouverture et fermeture entre les utilisateurs.

    Merci pour ta réponse

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je m'appercois que mon code est bugge, je l'ai corrige dans le post et inadapte a ton probleme.

    Je suppose que tu as une table tblReservation.
    Il fau lui ajouter 2 champs :

    • CodeUtilisateurModif (texte 255, le code de connexion a Windows)
    • EstEnModif (Oui/Non, valuer defaut non)


    et le code

    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
    30
    31
    32
    33
    public function DemanderModif(prmNumResa as long) as Boolean
      dim result as Boolean:result=false
      on error goto Err_DemanderModif
     
      dim db as dao.database: set db=currentdb
      dim r as dao.recordset:set r=db.openrecordset("tblReservation", dbOpenDynaset)
     
      call r.findfirst("[CodeResa]=" & prmCodeRsea)
     
      if not r![EstEnModif] then
         r.edit
         r![CodeUtilisateur]=Environ$("UserName")
         r![EstEnModif]=true
         r.update
         result=true
      end if
     
      r.close: set r=nothing
      db.close: set db=nothing
     
    exit_DemanderModif:
      DemanderModif=result
      exit function
     
    Err_emanderModif:
      select case err.number
          case X 'Enregistrement verrouille (je ne me souviens plus du numero de l'erreur)
             resume exit_DemanderModif
          case else
             call err.raise(err.number, , err.description)
      end select
     
    end function
    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
    public sub LibererModif(prmNumResa as long)
      dim db as dao.database: set db=currentdb
      dim r as dao.recordset:set r=db.openrecordset("tblReservation", dbOpenDynaset)
     
      call r.findfirst("[CodeResa]=" & prmCodeRsea)
     
      r.edit
      r![CodeUtilisateur]=Null
      r![EstEnModif]=false
      r.update
      result=true
     
      r.close: set r=nothing
      db.close: set db=nothing
    end function
    utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if DemanderModif(IciCodeResa) then
         msgbox "Modif autorisee"
         'ici la modif
         call LibererModif
       else
         msgbox "Modif refusee"
    end if
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    Ok j'ai adapté

    J'ai une erreur au 3ème code sur Call LibererModif

    j'ai mis cette condition sur ouverture de mon formulaire

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Peux-tu poster ton code et indiquer ou est l'erreur et quelle erreur ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    Bonjour Marot r

    Message erreur : Erreur de compilation
    Argument non facultatif (j'ai cherché le n°, erreur 449)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Open(Cancel As Integer)
    If DemanderModif(NumResa) Then
         MsgBox "Modif autorisee"
     
        Call LibererModif
     
       Else
         MsgBox "Modif refusee"
    End If
    End Sub

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La fonction LibererModif(prmNumResa as long) attend un parametre et je l'ai oublie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call LibererModif(numresa)
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    ok merci
    étrange pour moi d'avancer sans tout comprendre

    cet ajout fait avancer sur autre bug


    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
    30
    31
    32
    33
    Public Function DemanderModif(prmNumResa As Long) As Boolean
      Dim result As Boolean: result = False
      On Error GoTo Err_DemanderModif
     
      Dim db As DAO.Database: Set db = CurrentDb
      Dim r As DAO.Recordset: Set r = db.OpenRecordset("TResaLit2", dbOpenDynaset)
     
      Call r.FindFirst("[NumResa]=" & prmNumResa)
     
      If Not r![EstEnModif] Then
         r.Edit
         r![CodeUtilisateur] = Environ$("UserName")
         r![EstEnModif] = True
         r.Update
         result = True
      End If
     
      r.Close: Set r = Nothing
      db.Close: Set db = Nothing
     
    exit_DemanderModif:
      DemanderModif = result
      Exit Function
     
    Err_DemanderModif:
      Select Case Err.Number
          Case X 'Enregistrement verrouille (je ne me souviens plus du numero de l'erreur)
             Resume exit_DemanderModif
          Case Else
             Call Err.Raise(Err.Number, , Err.Description)  CETTE LIGNE EST EN JAUNE
      End Select
     
    End Function
    Après quelques recherches, je trouve les numéros d'erreur pour enregistrement suivant, précédent, etc, ...
    Pas pour enregistrement verrouillé

    D'avance merci

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Ce n'est pas un bug a priori, quelle est l'erreur retournee par Access ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    Erreur d'exécution 3265 :
    element non trouvé dans cette collection

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    OK, desactive momentanement la gestion d'erreur en mettant la ligne en commentaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'On Error GoTo Err_DemanderModif
    Rexecute et Access va s'arreter sur la ligne qui lui pose vraiment un probleme.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  14. #14
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    Bonjour Marot_r

    Merci pour ton suivi

    J'ai ajouté code comme ci dessous
    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
    30
    31
    32
    33
    34
    35
    36
    Public Function DemanderModif(prmNumResa As Long) As Boolean
      Dim result As Boolean: result = False
      On Error GoTo Err_DemanderModif
     
      Dim db As DAO.Database: Set db = CurrentDb
      Dim r As DAO.Recordset: Set r = db.OpenRecordset("TResaLit2", dbOpenDynaset)
     
      Call r.FindFirst("[NumResa]=" & prmNumResa)
     
      If Not r![EstEnModif] Then
         r.Edit
         r![CodeUtilisateur] = Environ$("UserName")
         r![EstEnModif] = True
         r.Update
         result = True
      End If
     
      r.Close: Set r = Nothing
      db.Close: Set db = Nothing
     
    exit_DemanderModif:
      DemanderModif = result
      Exit Function
     
    Err_DemanderModif:
    On Error GoTo Err_DemanderModif
    
      Select Case Err.Number
          Case X 'Enregistrement verrouille (je ne me souviens plus du numero de l'erreur)
             Resume exit_DemanderModif
          Case Else
             Call Err.Raise(Err.Number, , Err.Description)
      End Select
      
     
    End Function
    - Plus d'erreur,
    - msgbox "modif refusée" affichée,
    - le formulaire s'ouvre et est opérationnel

    1 seul utilisateur connecté donc le msgbox doit etre "modif acceptée"
    Après quelques changements qui n'aboutissent pas, j'ai tout remis en ordre.

    Merci pour ton suivi

  15. #15
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    Bonjour Marot_r

    j'ai modifié comme ci dessous :

    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
    30
    31
    32
    33
    34
    Public Function DemanderModif(prmNumResa As Long) As Boolean
      Dim result As Boolean: result = False
      On Error GoTo Err_DemanderModif
     
      Dim db As DAO.Database: Set db = CurrentDb
      Dim r As DAO.Recordset: Set r = db.OpenRecordset("TResaLit2", dbOpenDynaset)
     
      Call r.FindFirst("[NumResa]=" & prmNumResa)
     
      If Not r![EstEnModif] Then
         r.Edit
         r![CodeUtilisateurModif] = Environ$("UserName")
         r![EstEnModif] = True
         r.Update
         result = True
      End If
     
      r.Close: Set r = Nothing
      db.Close: Set db = Nothing
     
    exit_DemanderModif:
      DemanderModif = result
      Exit Function
     
    Err_DemanderModif:
      Select Case Err.Number
          Case X 'Enregistrement verrouille (je ne me souviens plus du numero de l'erreur)
             Resume exit_DemanderModif
          Case Else
          Call LibererModif(NumResa)
             Call Err.Raise(Err.Number, , Err.Description)
      End Select
     
    End Function
    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
    Public Sub LibererModif(prmNumResa As Long)
      Dim db As DAO.Database: Set db = CurrentDb
      Dim r As DAO.Recordset: Set r = db.OpenRecordset("TResaLit2", dbOpenDynaset)
     
        Call r.FindFirst("[NumResa]=" & prmNumResa)
     
      r.Edit
      r![CodeUtilisateurModif] = Null
      r![EstEnModif] = False
      r.Update
      result = True
     
      r.Close: Set r = Nothing
      db.Close: Set db = Nothing
     
    End Sub
    A l'ouverture de mon formulaire de réservation, j'ai bien le msgbox "dispo" puis accès au modification.
    Si connecté à 2 utilisateurs simultanément, les 2 ont msgbox "dispo" et accès aux modifications.

    Dans ma table j'ai ajouté le champs "CodeUtilisateurModif" sans comprendre son usage

    D'avance merci

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Le champ CodeUtilisateurModif te permet de savoir qui demande actuellement la modification.
    Il n'est pas indispensable mais pratique quand tu voudras savoir "Pourquoi je n'ai pas acces ? Qui est-ce qui bloque ?".

    Le programme que je t'ai ecrit n'est pas suffisant pour verrouiller.
    Il faut que tu mettes du code dans ton formulaire pour empecher la personne d'acceder.

    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if not DemanderModif(me.NumResa) then
        msgbox "Actuellement en modification"
     else
       me.SousFormResa.AllowEdit=true
    end if
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  17. #17
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut

    j'avance !!

    J'utilise le champs "chkEstEnModif"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sur ouverture du Form_TresaLit1, j'ai mis le code :
    Me.ChkEstEnModif = True
    je fais le verrouillage sur chk = True

    mais je n'arrive pas à décocher la chk sur fermeture du Form_TresaLit1
    j'ai essayé : Me.ChkEstEnModif = False mais non non non
    je parcours la FAQ à la recherche d'un pas de plus en avant.

    POURQUOI sur fermeture la chk reste True !!

  18. #18
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Ou appeles-tu le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ChkEstEnModif = False
    Dans l'evenement "sur fermeture" de Form_TresaLit1 ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  19. #19
    Candidat au Club
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Février 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Paramétreur de progiciels
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2015
    Messages : 24
    Points : 3
    Points
    3
    Par défaut
    oui
    avec un autre code aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Close()
    Me.ChkEstEnModif = False
    Form_302000SfRTresaLitNom.Requery
    End Sub

  20. #20
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Hum, a priori c'est le bon code au bon endroit.

    As-tu suvi ton code pas a pas et verifier ce que valait ChkEstEnModif ?
    1. Pour faire cela, se mettre dans le code puis cliquer dans la marge a gauche en face de Private Sub Form_Close.
      Cela va afficher un gros point marron (le point d'arret).
    2. Sauvegarder.
    3. Afficher le formulaire et declencher l'evenement.
    4. Access va passer en mode debugage sur l'instruction pointee.
    5. Pour voir la valeur d'une variable, juste pointer avec la souris.
    6. Pour passer a l'instruction suivante, appuyer sur la touche [f8].
      Pour relancer l'execution normale, appuyer sur [F5].


    Est-ce que ChkEstEnModif est un champ lie (il est dans la source de donnees et est donc conserve) ou independent (il est seulement dans le formulaire et perdu a la fermeture).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. [AC-2007] VBA: Passer des variables entre formulaire multi-utilisateurs ?
    Par delphi_jb dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/07/2012, 13h16
  2. [AC-2010] Actualisation de formulaire multi-utilisateur
    Par Turakam dans le forum IHM
    Réponses: 8
    Dernier message: 18/04/2012, 00h35
  3. Réponses: 3
    Dernier message: 28/03/2008, 11h48
  4. Réponses: 3
    Dernier message: 31/08/2007, 10h54
  5. Sous formulaires et multi utilisateurs
    Par capitaine dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2006, 09h52

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