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 :

Récupérer la valeur du login dans ma table historique [AC-2013]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Récupérer la valeur du login dans ma table historique
    Bonjour,

    J'ai copié/collé ce bout de code pour faire ma table historique. Ma table T_Historique. Je voudrais récupérer le login = txtUserName du formulaire F_Connexions et c'est là que je bloque. Il ne reconnait pas cette valeur. Avez-vous une idée?
    Je précise juste que je ne veux pas le login de Windows (ENVIRON"username"). merci


    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
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim ctr         As Control
     
     
     
        Dim rsHistory   As Recordset
     
        Set rsHistory = CurrentDb.OpenRecordset("T_Historique")
     
        For Each ctr In Me.Controls
     
            Select Case ctr.ControlType
            Case acCheckBox, acTextBox, acComboBox, acListBox
     
                If Nz(ctr.Value) <> Nz(ctr.OldValue) Then
     
                    With rsHistory
                        .AddNew
                        !ID = Me.[N°deviation]
                        !UserId = Forms.F_Connexions.txtUserName.Value
                        !Table = Me.RecordSource
                        !Field = ctr.Name
                        !OldValue = ctr.OldValue
                        !NewValue = ctr.Value
                        !DateHour = Now
                        .Update
                    End With
     
                End If
     
            End Select
        Next
        rsHistory.Close
    End Sub

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    Je voudrais récupérer le login = txtUserName du formulaire F_Connexions et c'est là que je bloque.
    Il faut, bien évidemment, que le formulaire F_Connexions soit ouvert ...

    Il ne reconnait pas cette valeur. Avez-vous une idée?
    y a-t-il un message d'erreur ? Si oui, lequel ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour, le formulaire F_Connexions est fermé parce qu'il ouvre un autre formulaire. Je vous envoie le code pour le F_Connexions. Impossible de laisser ouvert
    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
    Private Sub btnLogin_Click()
        Dim rs As Recordset
     
        Set rs = CurrentDb.OpenRecordset("T_info", dbOpenSnapshot, dbReadOnly)
     
        rs.FindFirst "UserName='" & Me.txtUserName & "'"
     
        If rs.NoMatch Then
            Me.lblWrongUser.Visible = True
            Me.txtUserName.SetFocus
            Exit Sub
        End If
        Me.lblWrongUser.Visible = False
     
        If rs!Password <> Nz(Me.txtPassword, "") Then
            Me.lblWrongPass.Visible = True
            Me.txtPassword.SetFocus
            Exit Sub
        End If
        Me.lblWrongPass.Visible = False
        DoCmd.OpenForm "F_RECLA_OU_DEV"
     
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonsoir,
    Citation Envoyé par 5544B3 Voir le message
    Bonjour, le formulaire F_Connexions est fermé parce qu'il ouvre un autre formulaire. Je vous envoie le code pour le F_Connexions. Impossible de laisser ouvert
    Est-ce que tu peux utiliser un logiciel ou un téléphone portable lorsqu'il est fermé ? Un formulaire, c'est pareil.
    Donc soit, tu le laisses ouvert, soit tu mémorises le champ txtUserName dan une variable pour l'utiliser plus tard.

    De plus, dans ton code, je n'ai pas vu quelle instruction ferme le formulaire de F_Connexions.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  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.

    Pourquoi ne pas faire enregistrer le userName dans l'historique par le formulaire F_Connexion au moment de l'appuis sur btnLogin ?
    Tu sembles avoir toutes les infos nécessaires à ce moment là.

    Sinon le plus simple est de définir une variable globale dans un module et d'y copier le username, tel que suggéré par tee_grandbois.

    Aussi tu peux rendre un formulaire invisible donc tu peux le garder ouvert sans que l'utilisateur le sache.

    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
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    J'ai regardé comment créer une variable mais je comprends pas. J'ai essayé ce code dans mon module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public ValeurUsername As Variant
     
    ValeurUsername = [Forms]![F_Connexions]![txtUserName.Value]
    mais j'ai un message d'erreur: "erreur de compilation - Instruction incorrecte à l'intérieur d'une procédure" et le [Forms] est bleuté.
    Et une fois ma variante faite je la met où.

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Il faut mettre ceci dans un Module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Compare Database
     
    Public ValeurUsername As Variant
    Function rtnUserName() As Variant
    ' Renvoie la valeur Username
    rtnUserName = ValeurUsername
    End Function
    et dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValeurUsername = [Forms]![F_Connexions]![txtUserName.Value]
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    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
    Tu dois faire

    définir une variable dans un module en dehors de toute procédure et fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public ValeurUsername As string
    puis dans une de tes procédures ou fonctions tu dois assigner cette variable,
    Personnellement je mettrai cela dans la procédure btnLogin_Click.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValeurUsername = me.[txtUserName]
    Le me. réfère au formulaire en cours, et le .value est optionnel.

    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.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour la réponse ultra rapide. J'ai mis dans mon formulaire le code mais ça bloque encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With rsHistory
                        .AddNew
                        !ID = Me.[N°deviation]
                        !ValeurUsername = [Forms]![F_Connexions]![txtUserName.Value]
                        !Table = Me.RecordSource
                        !Field = ctr.Name
                        !OldValue = ctr.OldValue
                        !NewValue = ctr.Value
                        !DateHour = Now
                        .Update
                    End With
    je dois pas la mettre au bon endroit.. désolé d'abuser de votre temps

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !ValeurUsername = NomTomModule.ValeurUsername
    où NomTonModule est le module où tu as défini la variable globale.

    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.

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Ok, j'ai sauté une étape :
    1) Mémoriser la variable au Login
    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
    Private Sub btnLogin_Click()
        Dim rs As Recordset
     
        Set rs = CurrentDb.OpenRecordset("T_info", dbOpenSnapshot, dbReadOnly)
     
        rs.FindFirst "UserName='" & Me.txtUserName & "'"
     
        If rs.NoMatch Then
            Me.lblWrongUser.Visible = True
            Me.txtUserName.SetFocus
            Exit Sub
        End If
        Me.lblWrongUser.Visible = False
     
        If rs!Password <> Nz(Me.txtPassword, "") Then
            Me.lblWrongPass.Visible = True
            Me.txtPassword.SetFocus
            Exit Sub
        End If
        Me.lblWrongPass.Visible = False
    ValeurUsername = me.[txtUserName]
        DoCmd.OpenForm "F_RECLA_OU_DEV"
     
    End Sub
    2) utiliser la variable dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With rsHistory
                        .AddNew
                        !ID = Me.[N°deviation]
                        !ValeurUsername = rtnUserName()
                        !Table = Me.RecordSource
                        !Field = ctr.Name
                        !OldValue = ctr.OldValue
                        !NewValue = ctr.Value
                        !DateHour = Now
                        .Update
                    End With
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour, Merci beaucoup pour votre aide. Tout est OK

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/04/2008, 20h46
  2. Comment récupérer la valeur de Expr1 dans une requête ?
    Par Tchupacabra dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2005, 15h16
  3. [MySQL] Affichage de valeurs par selection dans une table
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 16/12/2005, 17h04
  4. Récupérer des valeurs de checkbox dans MySQL
    Par digger dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/09/2005, 14h58
  5. Valeur par défaut dans une table objet
    Par Ricky81 dans le forum Oracle
    Réponses: 12
    Dernier message: 18/03/2004, 11h52

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