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 :

Interdire modification enregistrement en cours [AC-2003]


Sujet :

IHM

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut Interdire modification enregistrement en cours
    Bonjour,

    J'ai un sous-formulaire dans lequel j'ai plusieurs champs dont un champ Date avec comme valeur =Date()

    Comment procéder pour que l'utilisateur ne puisse pas modifier l'enregistrement en cours à partir du jour qui suit ?

    Merci de m'aider svp

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour.

    Peut être une solution.

    A l'ouverture, faire un test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If MonChampDate < DateduJour Then
    me.AllowEdits 
    end if

    Voici un extrait de l'aide

    "La propriété AllowEdits vous permet d'empêcher que des modifications soient apportées aux données existantes affichées par un formulaire. Pour que les données d'un contrôle spécifique ne soient pas modifiées, utilisez les propriétés Enabled ou Locked."


    Pierre

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par pier.antoine Voir le message
    Bonjour.
    A l'ouverture, faire un test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If MonChampDate < DateduJour Then
    me.AllowEdits 
    end if
    Pierre
    Merci ; je savais qu'il fallait la propriété Allow Edits mais je ne savais pas comment l'utiliser. Voici mon code sur ouverture du sous-formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
    If Begindate < Now Then
    Me.AllowEdits
    End If
    End Sub
    Cela ne marche pas, j'ai ce message dans VB :
    Compile Error:
    Invalid use of property

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Ne faut-il pas mettre = False ou = True avec AllowEdits
    Cordialement.

    RJ

  5. #5
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    En effet, j'ai oublié un petit truc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If MonChampDate < DateduJour Then
    me.AllowEdits = false
    end if
    Pierre
    PS : en cas de souci, ne jamais oublié l'aide en ligne d'access. La recherche de AllowEdits aurait donné la solution

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par pier.antoine Voir le message
    En effet, j'ai oublié un petit truc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If MonChampDate < DateduJour Then
    me.AllowEdits = false
    end if
    Pierre
    PS : en cas de souci, ne jamais oublié l'aide en ligne d'access. La recherche de AllowEdits aurait donné la solution

    Cela ne marche pas ; je ne peux plus rien modifier même les enregistrements qui attraient à la date du jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
    If Datetoday < Date Then
    Me.AllowEdits = False
    End If
    End Sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lucas-18 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
    If Datetoday < Date Then
    Me.AllowEdits = False
    End If
    End Sub
    Bonjour

    Tu n'aurais pas oublié de finir ta condition par hasard?
    Il faut poursuivre ton raisonnement.

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par GAYOT Voir le message
    Bonjour

    Tu n'aurais pas oublié de finir ta condition par hasard?
    Il faut poursuivre ton raisonnement.
    Comme çà tu veux dire ?? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Open(Cancel As Integer)
    If Datetoday < Date Then
    Me.AllowEdits = False
    Else
    Me.AllowEdits = True
    End If
    End Sub
    Ca ne marche pas ...

  9. #9
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Je pense que pour aller plus loin, il vous fait bien regarder ce que vous voulez faire, le raisonnement, les appels dans un sous formulaire....

    Bref, creuse.

    Pierre

    Exemple :
    Dans un premier temps votre code était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Begindate < Now Then
    Me.AllowEdits
    End If
    Maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Datetoday < Date Then
    Me.AllowEdits = False
    End If
    Que recouvrent : Begindate? Datetoday? Date?

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    J'ai un sous-formulaire avec 2 champs :
    - Datetoday : valeur par défaut : =Date()
    - Comment

    Date dans le code est la date d'aujourd'hui

    (begindate était le nom de mon champ auparavant, j'ai changé le nom et c devenu Datetoday c tout)

  11. #11
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut
    Cela ne marche pas ; je ne peux plus rien modifier même les enregistrements qui attraient à la date du jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Open(Cancel As Integer)
    If Datetoday < Date Then
    Me.AllowEdits = False
    End If
    End Sub
    
    Bonjour,
    Peut être qu'il faut placer ce code lors de l'évènement current pour ne pas geler tous les enregistrements du formulaire à l'ouverture!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Form_Current()
      If Datetoday < Date Then
      Me.AllowEdits = False
    End If
    End Sub

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Points : 80
    Points
    80
    Par défaut
    Essaye ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Open(Cancel As Integer)
    If Datetoday.value < Date Then
    Datetoday.locked=True
    Me.AllowEdits = False
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Current()
     
    Me.AllowEdits = Datetoday.locked
     
    End Sub

  13. #13
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    J'ai mis le code sur Form_Current mais j'ia le même problème, impossible de modifier TOUS les enregistrements. J'ai essayé les 2 codes suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Current()
      If Datetoday < Date Then
      Me.AllowEdits = False
      Else
      Me.AllowEdits = True
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Current()
      If Datetoday < Date Then
      Me.AllowEdits = False
    End If
    End Sub
    Ne serait-ce pas au niveau de la formulation de la date du jour dans le code que cela bloque ? Est-ce bien < Date ?

  14. #14
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut
    Est-ce bien < Date ?
    C'est tout à fait correct!

    Datetoday est un nom de champ je suppose!

    Essaye de mettre Datetoday au format us avant de faire la comparaison

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function DateUS(ByVal Dt As Variant)
    On Error Resume Next
        If IsNull(Dt) Then Exit Function
            DateUS = Month(Dt) & "/" & Day(Dt) & "/" & Year(Dt) 
    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
     
    Private Sub Form_Current()
        Dim intDifference as integer
        Dim laDate as date
     
        laDate = DateUS(me.Datetoday)
        intDifference = laDate - Date
        Msgbox intDifference 'Juste pour voir la valeur
     
        If intDifference < 0 Then
            Me.AllowEdits = False
        Else
            Me.AllowEdits = True
        End If
    End Sub

  15. #15
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Il y a une erreur de compilation (en rouge dans le code) :

    Method or data member not found

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Form_Current()
        Dim intDifference As Integer
        Dim laDate As Date
     
        laDate = DateUS(Me.Datetoday)
        intDifference = laDate - Date
        MsgBox intDifference
     
        If intDifference < 0 Then
            Me.AllowEdits = False
        Else
            Me.AllowEdits = True
        End If
    End Sub

  16. #16
    Membre du Club Avatar de Amani Roland
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Points : 59
    Points
    59
    Par défaut
    Dis nous un peu plus sur Datetoday. (Champ, Controle ou Variable?)

  17. #17
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par Amani Roland Voir le message
    Dis nous un peu plus sur Datetoday. (Champ, Controle ou Variable?)
    Dans ma table, c'est un champ de type Date/Time dont le format est Short Date
    Dans mon sous-formulaire, c'est un champ dont le control source est le champ de ma table et il a comme valeur par défaut =Date()

  18. #18
    Débutant
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 482
    Points : 142
    Points
    142
    Par défaut
    MERCI Amani Roland, j'ai pris ton code mais uniquement sur Form_current et ca marche !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Current()
        Dim intDifference As Integer
        Dim laDate As Date
     
        laDate = Me.Datetoday
        intDifference = laDate - Date
     
        If intDifference < 0 Then
            Me.AllowEdits = False
        Else
            Me.AllowEdits = True
        End If
    End Sub

  19. #19
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ce qui revient logiquement à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
    Me.AllowEdits = CDate(Me.datetoday) <= Date
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Retour sur enregistrement en cours après modification
    Par kmaurais79 dans le forum Access
    Réponses: 7
    Dernier message: 25/01/2011, 21h28
  2. Empecher Lecture d'Enregistrement en cours de Modification
    Par toony dans le forum Administration
    Réponses: 4
    Dernier message: 09/12/2009, 11h18
  3. [FB1.5] Interdire modification enregistrement
    Par Mister Nono dans le forum SQL
    Réponses: 12
    Dernier message: 14/09/2007, 15h20
  4. Réponses: 2
    Dernier message: 10/10/2004, 23h12
  5. Réponses: 7
    Dernier message: 06/10/2004, 22h13

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