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 :

comparer une valeur stockée dans un formulaire à champs d'une table


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut comparer une valeur stockée dans un formulaire à champs d'une table
    Bonjour, je créé (enfin j'essaie!) une base Access et suis confronté à un problème.

    Je dispose d'une table, Table1 , comportant 3 champs: cod-utilisateur, password_util et type_util.

    Un formulaire d'identification Formulaire1 invite l'utilisateur à s'identifier:

    texte0 correspond au code utilisateur et texte1 à son password.
    Un bouton devrait permettre à l'utilisateur d'accéder au Formulaire2 si sa saisie est correcte cad si elle répértoriée dans Table1.

    Comment faire pour que le code vba (je suppose qu'il est de cette nature) teste la correspondance texte0 et cod_utilisateur?
    On a d'un côté une valeur et de l'autre n valeurs.
    Faut-il parcourir Table1, comparer chacun des enregistrements de cod_utilisateur et en fonction du résultat ouvrir ou ne pas ouvrir Formulaire2?
    Si oui, comment procéder?

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu as plusieurs possibilités, le plus simple serait avec la fonction DLookup, je te renvoie sur pour la syntaxe, et fais des recherches sur le Forum pour avoir des exemples.

    Il y'en a d'autres, mais ne connaissant pas tes connaissances en VBA ?

    Starec

  3. #3
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Salut grandchef et welcome on board

    Il te suffit d'employer la fonction Dlookup pour arriver à tes fins.

    Bernard.
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut et bienvenue.

    Avant de répondre à ta question, je vais te dire ceci : la sécurité d'une base access ne passe pas par une sécurité telle que tu es en train de la définir car trop vulnérable.

    Je te conseille ce tutoriel sur la sécurité.

    Sinon la réponse à ta question :
    Comment faire pour que le code vba (je suppose qu'il est de cette nature) teste la correspondance texte0 et cod_utilisateur?
    Il faut que tu ouvres un Recordset sur Table1 et que tu compares ensuite la valeur de texte1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim rst as DAO.Recordset
    set rst = CurrentDB.OpenRecordset("SELECT cod-utilisateur, password_util From Table1 WHERE cod-utilisateur =" & Me.texte0)
     
    rst.movefirst
    if me.texte1 = rst![password_util] then
    ...
    End If
     
    rst.close
    set rst = nothing
    Un peu de lecture sur les recordset.


  5. #5
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Et je viens de (re)trouver ceci dans les sources.
    http://access.developpez.com/sources...frms#Verfifmdp

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut
    Merci de votre accueil!

    La fonction Dlookup me permet effectivement de résoudre le problème.
    Merci!

    Lou Pitchoun, ton alerte est la bienvenue, je m'en vais de ce pas parcourir le tuto pour m'informer de la sécurisation de la base.

    Une petite question:
    si la base est utilisée en réseau interne et qu'elle n'est pas reliée à Internet, le hackage ne peut que venir de l'intérieur?
    Est-il alors nécessaire d'avoir recours à une sécurisation plus poussée?

    ?

  7. #7
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    La réponse serait toujours oui.
    Pourquoi ?
    Parce qu'il y a toujours un petit malin qui arrivera à contourner la protection et à faire ce qu'il veut :
    Changer des données, modifier l'interface etc...

    Comme on dit : mieux vaut prévenir que guérir

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut
    La base est alimentée automatiquement par des fichiers Excel sur lesquels l'utilisateur n'a en aucun moment la main.
    L'utilisateur n'a qu'une fonction de consultation au niveau de la base.
    Il rentre son identifiant et regarde les beaux états (que c'est moi qui les ai faits!) disponibles.

    J'insiste car je dispose de très peu de temps mais je voudrais toutefois éviter de rendre une base facilement attaquable.

    Permets moi de reposer la question... loool!

  9. #9
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Mettre en place la sécurité utilisateur telle que définie dans le tutoriel sera plus sécurisée que celle que tu mets en place.

    Même s'il ne regarde que les (beaux) états, s'il arrive à contourner ta "protection", il pourra toujours bidouiller les tables...

    Bref. Si tu prends l'option de suivre cette voie (la sécurité utilisateur disponible dans Access) : fais une copie de ta base, du mdw d'origine (cf le tuto) et vas-y.
    Il m'a fallu 1 journée pour comprendre et mettre en place une sécurité sur une base de données. (loufab n'avait pas encore écrit son tuto )

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut
    ok je vais donc m'y atteler.

    Merci encore!

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut effet création fichier MDE
    Bonjour,

    J'ai encore une fois une zone d'ombre...

    Je me réfère au tutoriel de sécurisation de BDD suivant:

    http://loufab.developpez.com/securite/#LI
    (si le lien ne fonctionne pas cliquez sur celui de Lou pitchoun )

    On conseille de créer un fichier MDE.

    J'utilise Access 97 donc je suis contraint de convertir la base en 2002.
    Je créé effectivement le fichier MDE.

    Quelles conséquences cela entraine-t-il?
    Que dois-je faire ensuite?
    L'utilisateur a uniquement accès au fichier MDE?

  12. #12
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Des réponses :
    http://www.developpez.net/forums/sho...&highlight=mde

    Citation Envoyé par Aide access
    Remarques

    Vous pouvez convertir une base de données en fichier .mde en pointant sur Utilitaires de base de données dans le menu Outils, puis en cliquant sur Créer fichier MDE. Lorsque vous enregistrez une base de données comme fichier .mde, Microsoft Access supprime tout le code source modifiable, compile tous les modules et compacte la base de données. Votre code Visual Basic reste opérationnel, mais le code ne peut pas être affiché ou modifié. De plus, vous ne pouvez pas ajouter ou apporter des modifications aux objets de formulaire ou d'état.

    Avertissement Veillez à avoir une copie de votre base de données d'origine. Si vous devez modifier le code ou la définition d'objets dans une base de dommée .mde, vous devez le faire aussi dans la base d'origine puis créer une nouvelle base de données .mde. Vous aurez aussi besoin de la base d'origine pour passer aux versions futures de Microsoft Access parce que la conversion directe des fichiers .mde est impossible.

    L'enregistrement d'une base de données comme fichier .mde s'avère le plus approprié lorsque vous voulez empêcher la modification de formulaires ou d'états ou lorsque vous voulez masquer votre code Visual Basic pour les utilisateurs de la base de données. Vous pouvez également convertir une base de données en fichier .mde lorsque vous créez vos propres Assistants ou pour la partie frontale d'une application frontale/principale.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 135
    Points
    135
    Par défaut
    Je te remercie.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/01/2013, 16h35
  2. [PHP-JS] Passer une valeur $_POST dans un formulaire
    Par ddami1 dans le forum Langage
    Réponses: 10
    Dernier message: 18/07/2008, 21h05
  3. probleme:recuperer une valeur stockée dans une session
    Par oasma dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 26/03/2007, 00h38
  4. test d'une valeur stocké dans une table
    Par EssaiEncore dans le forum ASP
    Réponses: 3
    Dernier message: 18/02/2005, 11h39
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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