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 :

Code VBA changement de mot de passe [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Code VBA changement de mot de passe
    Bonjour tout le monde,

    Je viens vous trouver aujourd'hui car je beug sur un code de changement de mot de passe. Le principe est assez simple:
    - Une table d'utilisateurs (User login)
    - Un formulaire de navigation
    - Un sous-formulaire de changement de mot de passe.

    Voici une ébauche du code. J'obtiens une erreur Application-defined or object-defined error (2465).

    Pouvez-vous m'aider?

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    '------------------------------------------------------------
    ' Reset Password
    '
    '------------------------------------------------------------
    Public Function Resetpassword()
    'On Error GoTo Macro1_Err
    Dim frm As Form
    Set frm = Screen.ActiveForm
     
     
            If DLookup("[User login]![Password]", "[User login]", "[User login]![Username]= [Textlogin]") = frm.Forms.navigationsubform.Textpass.Value Then
                If frm.Forms.navigationsubform.Textnewpass.Value = frm.Forms.navigationsubform.Textnewpassconfirmation.Value Then
     
                strsql = "UPDATE [User login]" _
                & "SET [User login].[Password] =" & frm.Forms.navigationsubform.[Textnewpass].Value _
                & "WHERE ((([User login].[Username])=" & frm.Forms.navigationsubform.[Textlogin].Value & "));"
     
     
                DoCmd.RunSQL strsql
     
     
                Beep
                    MsgBox "Your password has been effective. Thanks!", vbOKOnly, "Success"
                Exit Function
                Else
                    Beep
                    MsgBox "You must confirm you new password.", vbOKOnly, ""
                End If
            Else
                Beep
                MsgBox "You might have enter an invalid password, please retry.", vbOKOnly, ""
            End If
     
     
     
    'Macro1_Exit:
        'Exit Function
     
    'Macro1_Err:
        'MsgBox Error$
        'Resume Macro1_Exit
     
    End Function

  2. #2
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Essayons déjà une syntaxe plus simple
    DLookup("[User login]![Password]", "[User login]", "[User login]![Username]= [Textlogin]")
    A remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup("[Password]", "[User login]", "[Username]='" &  [Textlogin] "'")
    DlookUp, recherche dans un domaine et renvoie la valeur d'une zone et fonction d'un critère.
    Donc recherche dans la table [User Login]
    Recupère dans cette table la zone [Password]
    et le critère c'est que le champ [Username] de cette table est égale à : Le contenu de la zone Textlogin.
    Mais cette zone n'est pas connu par la table. donc il faut recréer la syntaxe de la clause where dans le VBA pour passer le bon paramètre à la fonction dlookup du style [Username]='dupont'

    c'est pourquoi avant les " il faut mettre un ' et un autre ' entre les deux " a la fin :
    "[Username]='" & [Textlogin] "'"

    Ensuite la syntaxe suivante n'existe pas !
    frm.Forms.navigationsubform.Textpass.Value
    Restons simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Forms!navigationsubform!extpass.Value
    ou
    Forms("navigationsubform")!extpass.Value
    en esperant que "navigationsubform" soit le nom de votre formulaire.
    La collection des formulaires ouverts est "Forms" tout simplement

    A faire de même pour les autres références.

    Et enfin pour la syntaxe de la clause SQL Update, ne pas oublié les ' autour des valeurs textes !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     strsql = "UPDATE [User login]" _
                & "SET [User login].[Password] ='" & Forms!navigationsubform![Textnewpass].Value _
                & "' WHERE ((([User login].[Username])='" & Forms!navigationsubform![Textlogin].Value & "'));"
    @+


    Pensez au tag

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Didier L Voir le message
    Bonjour,

    Essayons déjà une syntaxe plus simple

    A remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup("[Password]", "[User login]", "[Username]='" &  [Textlogin] "'")
    DlookUp, recherche dans un domaine et renvoie la valeur d'une zone et fonction d'un critère.
    Donc recherche dans la table [User Login]
    Recupère dans cette table la zone [Password]
    et le critère c'est que le champ [Username] de cette table est égale à : Le contenu de la zone Textlogin.
    Mais cette zone n'est pas connu par la table. donc il faut recréer la syntaxe de la clause where dans le VBA pour passer le bon paramètre à la fonction dlookup du style [Username]='dupont'

    c'est pourquoi avant les " il faut mettre un ' et un autre ' entre les deux " a la fin :
    "[Username]='" & [Textlogin] "'"

    Ensuite la syntaxe suivante n'existe pas !


    Restons simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Forms!navigationsubform!extpass.Value
    ou
    Forms("navigationsubform")!extpass.Value
    en esperant que "navigationsubform" soit le nom de votre formulaire.
    La collection des formulaires ouverts est "Forms" tout simplement

    A faire de même pour les autres références.

    Et enfin pour la syntaxe de la clause SQL Update, ne pas oublié les ' autour des valeurs textes !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     strsql = "UPDATE [User login]" _
                & "SET [User login].[Password] ='" & Forms!navigationsubform![Textnewpass].Value _
                & "' WHERE ((([User login].[Username])='" & Forms!navigationsubform![Textlogin].Value & "'));"

    Bonjour Didier,

    Merci beaucoup pour cette explications très complètes. Il est vrai que je débute en vba et j'apprends sur le tas et au gré des forums donc je n'avance pas bien vite. Je comprends mieux certaines choses et je pense que tu as résolu pas mal de problèmes .

    J'ai bien suivi tes instructions et j'obtiens une erreur de synthaxe pour le Dlookup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup ("[Password]", "[User login]", "[Username]='" &  [Textlogin] "'")
    Vba me dit: Compile error, expected list separator or ). J'ai corrigé le problème en ajoutant un & ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup ("[Password]", "[User login]", "[Username]='" &  [Textlogin] & "'")
    Seulement voilà, le système me dit pour [Textlogin] (qui est le nom correct du champ): 'External name not defined'

    Lorsque je précise le code en lui donant une origine (le formulaire en question) utilisant le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup ("[Password]", "[User login]", "[Username]='" &  Screen.ActiveForm.[Textlogin].Value "'")
    et que je le teste, une erreur 2465 m'indique:

    'Database can't find the field 1 referred to in your expression.'

    Une idée de comment forcer le système?

    Merci encore et bonne journée

  4. #4
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bien vu pour ma première erreur et l'oubli du "&"

    Ensuite, pour le champ [Textlogin] est ce bien le nom du control du formulaire ou est-ce le nom d'un champ de la source du formulaire ?
    Est ce que ce code est dans le même formulaire ?
    Je veux dire est-ce que tu as plusieurs formulaires ouverts en même temps (formulaires ou boite de dialogue , etc ...)
    Car dans ce cas effectivement la syntaxe sera différente.
    J'avais présumé que tout se trouvait dans le même formulaire.
    Ensuite le nom de ta table c'est bien [User Login] ?
    Et tes champs se nomment bien Password et Username ?

    Le plus simple si tu le peux, poste un exemple de ta base simplifiée
    @+


    Pensez au tag

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Didier L Voir le message
    Bien vu pour ma première erreur et l'oubli du "&"

    Ensuite, pour le champ [Textlogin] est ce bien le nom du control du formulaire ou est-ce le nom d'un champ de la source du formulaire ?
    Est ce que ce code est dans le même formulaire ?
    Je veux dire est-ce que tu as plusieurs formulaires ouverts en même temps (formulaires ou boite de dialogue , etc ...)
    Car dans ce cas effectivement la syntaxe sera différente.
    J'avais présumé que tout se trouvait dans le même formulaire.
    Ensuite le nom de ta table c'est bien [User Login] ?
    Et tes champs se nomment bien Password et Username ?

    Le plus simple si tu le peux, poste un exemple de ta base simplifiée
    Merci beaucoup didier. J'ai fait une version très simplifiée de ce que tu peux avoir dans la base de données (elle est moche mais bon ). Seulement elle fait 24MB (trop grosse pour le forum)...

    Sur cette base il y a pas mal de problèmes autre que celui cité. Mais restons focus, je vais tâcher d'être clair.

    Tu as 1 table [User login] avec ces champs: username, password, firstname, lastname, country etc. and authorizations.

    Puis, 1 table pour rencenser leur activité sur la base (à chaque fois qu'ils se loguent, déloguent, font une recherche etc.): [user activity] avec les champs editrecordid (numéro automatique), date, user, sourcetable, searchhistory, comments

    Donc 2 tables.

    Tu as 3 formulaires:

    - 1 formulaire de navigation qui contient un subform (nom du subform qui ne change jamais: Navigationsubform)
    - 1 formulaire de changement de mot de passe (form change your password) avec les champs: textlogin, textpass, textnewpass, Textnewpassconfirmation
    - 1 formulaire de création de nouvel utilisateur (create a new user) : username, password, firstname, lastname, country, e-mail

    Le principe est simple: on sélectionne dans l'onglet du formulaire de navigation (dont le nom varie suivant l'autorisation) les onglets : create ou change password

    En cliquant sur ces onglets, le sous formulaire affiche le formulaire cible.

    Ce que je cherche à faire est double. le user se logue via un système de login. Son login est mémorisé en variable temporaire ([tmpuser_restricted] ou [tmpuser_unrestricted]) suivant son niveau d'accréditation. J'ai fait ce système pour pouvoir avoir deux sessions en cours simultanément sur la base de données.

    Son login est repris dans le formulaire "change your password" de sorte qu'il ne puisse qu'entrer un mot de passe. J'ai utilisé comme code source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz([TempVars]![tmpuser_unrestricted];[TempVars]![tmpuser_restricted])
    Voilà donc le nouveau code de mise à jour du mot de passe:

    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
    37
    38
    39
    40
    41
    42
    43
    44
     
    '------------------------------------------------------------
    ' Reset Password
    '
    '------------------------------------------------------------
    Public Function Resetpassword()
    'On Error GoTo Macro1_Err
    Dim frm As Form
    Set frm = Screen.ActiveForm
     
     
            If DLookup("[Password]", "[User login]", "[Username]='" & Forms!navigationsubform![Textlogin].Value & "'") = Forms!navigationsubform!Textpass.Value Then
                If Forms!navigationsubform!Textnewpass.Value = Forms!navigationsubform!Textnewpassconfirmation.Value Then
     
                 strsql = "UPDATE [User login]" _
                & "SET [User login].[Password] ='" & Forms!navigationsubform![Textnewpass].Value _
                & "' WHERE ((([User login].[Username])='" & Forms!navigationsubform![Textlogin].Value & "'));"
     
     
                DoCmd.RunSQL strsql
     
     
                Beep
                    MsgBox "Your password has been effective. Thanks!", vbOKOnly, "Success"
                Exit Function
                Else
                    Beep
                    MsgBox "You must confirm you new password.", vbOKOnly, ""
                End If
            Else
                Beep
                MsgBox "You might have enter an invalid password, please retry.", vbOKOnly, ""
            End If
     
     
     
    'Macro1_Exit:
        'Exit Function
     
    'Macro1_Err:
        'MsgBox Error$
        'Resume Macro1_Exit
     
    End Function
    Et j'en profite pour te coller le truc d'historique (pour curiosi

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
     
     
    Const cDQ As String = """"
     
    Public Function Loginyes()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity]([Date], [User], SourceTable, Comments)" _
    & "" & "VALUES(Now()," & "'" & frm.[login].Value & "','" & frm.Name & "', 'Login Success');"
     
     
            'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
     
     
    End Function
     
    Public Function Loginwrong()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity]([Date], [User], SourceTable, Comments)" _
    & "" & "VALUES(Now()," & "'" & frm.[login].Value & "','" & frm.Name & "', 'Wrong Password'" & "'" & frm.[passwordlogin].Value & "');"
     
     
            'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
    Public Function Loginfail()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm.active
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity]([Date], [User], SourceTable, Comments)" _
    & "" & "VALUES(Now()," & "'" & frm.[login].Value & "','" & frm.Name & "', 'Unknown User');"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
     
    Public Function Logoff()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, Comments )" _
    & "" & "VALUES(Now()," & "'" & frm.[usernamedisplay].Value & "','" & frm.Name & "', 'Logoff');"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
     
    Public Function Searchhistory()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
     
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, SearchHistory, Comments )" _
    & "SELECT Now(),'" & frm.[userinfo].Value & "','" & frm.Name & "'," _
    & "'Between " & frm.[Textstartdate].Value & " and " & frm.[Textenddate].Value _
    & " in " & frm.[Textcountry].Value & frm.[Textarea].Value & " concerning " & frm.[Textrecruiter].Value _
    & " for " & frm.[Textproject].Value & " project " & frm.[Textsales].Value & " sales positions', 'Search';"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
    Public Function Changepasswordtracking()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
     
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, Comments )" _
    & "SELECT Now(),'" & frm.Forms.navigationsubform.[Textlogin].Value & "','" & frm.Forms.navigationsubform.Name & "'," _
    & "'Password change from " & frm.Forms.navigationsubform.[Textpass].Value & " to " & frm.Forms.navigationsubform.[Textnewpass].Value & "';"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
     
     
    Public Function Usercreationtracking()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
     
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, Comments )" _
    & "SELECT Now(),'" & frm.Forms.navigationsubform.[usernamedisplay].Value & "','" & frm.Forms.navigationsubform.Name & "'," _
    & "'User created: " & frm.Forms.navigationsubform.[Username].Value & "';"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
    Const cDQ As String = """"
     
    Public Function Loginyes()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity]([Date], [User], SourceTable, Comments)" _
    & "" & "VALUES(Now()," & "'" & frm.[login].Value & "','" & frm.Name & "', 'Login Success');"
     
     
            'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
     
     
    End Function
     
    Public Function Loginwrong()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity]([Date], [User], SourceTable, Comments)" _
    & "" & "VALUES(Now()," & "'" & frm.[login].Value & "','" & frm.Name & "', 'Wrong Password'" & "'" & frm.[passwordlogin].Value & "');"
     
     
            'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
    Public Function Loginfail()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm.active
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity]([Date], [User], SourceTable, Comments)" _
    & "" & "VALUES(Now()," & "'" & frm.[login].Value & "','" & frm.Name & "', 'Unknown User');"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
     
    Public Function Logoff()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, Comments )" _
    & "" & "VALUES(Now()," & "'" & frm.[usernamedisplay].Value & "','" & frm.Name & "', 'Logoff');"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
     
    Public Function Searchhistory()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
     
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, SearchHistory, Comments )" _
    & "SELECT Now(),'" & frm.[userinfo].Value & "','" & frm.Name & "'," _
    & "'Between " & frm.[Textstartdate].Value & " and " & frm.[Textenddate].Value _
    & " in " & frm.[Textcountry].Value & frm.[Textarea].Value & " concerning " & frm.[Textrecruiter].Value _
    & " for " & frm.[Textproject].Value & " project " & frm.[Textsales].Value & " sales positions', 'Search';"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
    Public Function Changepasswordtracking()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
     
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, Comments )" _
    & "SELECT Now(),'" & frm.Forms.navigationsubform.[Textlogin].Value & "','" & frm.Forms.navigationsubform.Name & "'," _
    & "'Password change from " & frm.Forms.navigationsubform.[Textpass].Value & " to " & frm.Forms.navigationsubform.[Textnewpass].Value & "';"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
     
     
     
    Public Function Usercreationtracking()
     
    'Define the elements dimensions
    Dim frm As Form
    Dim strsql As String
     
    'Set the equality to have the current form used taken into account
    Set frm = Screen.ActiveForm
     
     
    'Use it to find values of the given controls
     
    strsql = "INSERT INTO [User Activity] ( [Date], [User], SourceTable, Comments )" _
    & "SELECT Now(),'" & frm.Forms.navigationsubform.[usernamedisplay].Value & "','" & frm.Forms.navigationsubform.Name & "'," _
    & "'User created: " & frm.Forms.navigationsubform.[Username].Value & "';"
     
        'View evaluated statement in Immediate window.
            Debug.Print strsql
            DoCmd.SetWarnings False
            DoCmd.RunSQL strsql
            DoCmd.SetWarnings True
     
    End Function
    Merci encore pour ton aide j'espère avoir été clair et représenté assez complètement la structure de la base.
    Bien à toi,

  6. #6
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Essaye de compresser ta base et ensuite de faire un fichier Zip ou RAR
    Je regarderai cela cet après midi.
    ce qui me dérange et que je ne comprend pas bien c'est le fait que tu parle de subform.
    Pour moi c'est un sous formulaire et si c'est bien le cas et que ta zone de texte est dedans la syntaxe est différente.
    car ce sous formulaire n'existe pas dans la collection Forms. même s'il est ouvert il est encapsulé dans le formulaire principal
    donc pour faire référence à un control d'un sous formulaire la syntaxe est la suivante.

    Depuis l'extérieur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Forms!MonFormPrincipal!NomDuControlSousFormulaire.form!NomduControl
    ou
    Forms("MonFormPrincipal")!NomDuControlSousFormulaire.form!NomduControl
    Depuis mon formulaire principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomDuControlSousFormulaire.form!NomduControl
    @+


    Pensez au tag

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Février 2015
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Didier L Voir le message
    Essaye de compresser ta base et ensuite de faire un fichier Zip ou RAR
    Je regarderai cela cet après midi.
    ce qui me dérange et que je ne comprend pas bien c'est le fait que tu parle de subform.
    Pour moi c'est un sous formulaire et si c'est bien le cas et que ta zone de texte est dedans la syntaxe est différente.
    car ce sous formulaire n'existe pas dans la collection Forms. même s'il est ouvert il est encapsulé dans le formulaire principal
    donc pour faire référence à un control d'un sous formulaire la syntaxe est la suivante.

    Depuis l'extérieur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Forms!MonFormPrincipal!NomDuControlSousFormulaire.form!NomduControl
    ou
    Forms("MonFormPrincipal")!NomDuControlSousFormulaire.form!NomduControl
    Depuis mon formulaire principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomDuControlSousFormulaire.form!NomduControl
    Bonjour Didier,

    Merci beaucoup pour tes réponses et ton soutien. J'ai le plaisir de t'annoncer qu'en adoptant la syntaxe que tu m'as fourni, j'ai pu résoudre ce problème et mon code marche dorénavant parfaitement.

    1 problème de résolu sur les 360 de la base de données ahah. Si seulement toutes mes autres discussions avançaient comme celles ci cela serait parfait.

    Merci encore et bonne journée à toi

    P.S: Par curiosité, voici le code si cela peut aider d'autres personnes:

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Option Compare Database
     
    '------------------------------------------------------------
    ' Reset Password
    '
    '------------------------------------------------------------
    Public Function Resetpassword()
    'On Error GoTo Macro1_Err
    Dim frm As Form
    Set frm = Screen.ActiveForm
     
     
            If DLookup("[Password]", "[User login]", "[Username]='" & frm.navigationsubform.Form![Textlogin].Value & "'") = frm.navigationsubform.Form!Textpass.Value Then
                If frm.navigationsubform.Form!Textnewpass.Value = frm.navigationsubform.Form!Textnewpassconfirmation.Value Then
     
                 strsql = "UPDATE [User login]" _
                & "SET [User login].[Password] ='" & frm.navigationsubform.Form![Textnewpass] _
                & "' WHERE ((([User login].[Username])='" & frm.navigationsubform.Form![Textlogin] & "'));"
     
     
                DoCmd.RunSQL strsql
     
     
                Beep
                    MsgBox "Your password has been effective. Thanks!", vbOKOnly, "Success"
                Exit Function
                Else
                    Beep
                    MsgBox "You must confirm you new password.", vbOKOnly, ""
                End If
            Else
                Beep
                MsgBox "You might have enter an invalid password, please retry.", vbOKOnly, ""
            End If
     
     
     
    'Macro1_Exit:
        'Exit Function
     
    'Macro1_Err:
        'MsgBox Error$
        'Resume Macro1_Exit
     
    End Function

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

Discussions similaires

  1. [VBA]Comment, dans le code VBA, hasher un mot de passe ?
    Par lord abortion dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/04/2007, 16h41
  2. [Interbase] Changement de mot de Passe
    Par touhami dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/12/2005, 16h37
  3. MySQL encrypt et changement de mot de passe
    Par Michaël dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/11/2005, 17h37
  4. Probleme avec changement du mot de passe utilisateur
    Par Davenico dans le forum Outils
    Réponses: 2
    Dernier message: 19/12/2003, 14h42

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