Écran de connexion dans l'Accès à des formulaires, macros et queriesms-
J'ai une question embarrassante concernant l'Accès. Je peux construire des bases de données relationnelles dans mon sommeil, mais j'ai toujours utilisé le PHP, mySQL et HTML pour construire mes applications.
J'ai détesté l'Accès avec une passion pour diverses raisons, depuis que je me souvienne, mais maintenant je suis coincé à l'utiliser pour un projet particulier.
J'ai un certain nombre de tables, dont l'une est customer
, qui entre autres choses a un username
et password
champ.
Quand j'ai commencer à la base de données, je veux un formulaire de connexion à apparaître, à laquelle je peux faire à l'aide de la AutoExec
macro, j'ai fait un formulaire avec un nom d'utilisateur et le mot de passe de domaine. Après cela, je me retrouve coincé avec la logique de l'interrogation pour le nom d'utilisateur/mot de passe puis en montrant un nouveau formulaire si elle est correcte ou une erreur si pas.
Quelqu'un pourrait-il m'aider à faire de la macro et de la requête de travailler ensemble?
Précisions: je suis en train de le faire sans codage ensemble de macros Visual Basic, si possible, je veux être en mesure de le faire à l'aide de la macro builder thingumy.
Grâce
- Êtes-vous coincé à l'interrogation de la base de données dans Access en général? Êtes-vous à l'aise avec les jeux d'enregistrements?
- Je peux créer des requêtes dans Access et je pourrais sans doute de créer une requête qui affiche une boîte de dialogue pour demander le nom d'utilisateur et mot de passe, puis renvoie le dossier de l'utilisateur, mais qui relie cette requête à une fantaisie de forme et que l'ouverture d'une nouvelle forme, si la requête retourne un enregistrement est au delà de moi (dans l'accès!).
- astander de l'approche pourrait être le chemin à parcourir. oui elle implique un abandon en VBA
- ne soyez pas si fritghtened par VBA. Vous pourriez être en mesure de le faire avec des macros (pas sûr ...), mais l'essayer en VBA. Vous aurez beaucoup plus de possibilités là.
Vous devez vous connecter pour publier un commentaire.
Malphas -
Il est effectivement possible de le faire sans l'aide de VBA, mais je me demande si la raison pour laquelle vous ne souhaitez pas utiliser le VBA est à cause de la question de Confiance. Dans ce cas, ce ne sera pas possible, parce que les actions de macro Près et Quitter sont interdits si la base de données n'est pas digne de confiance.
Alors que vous pouvez exécuter des actions dans le AutoExec macro-delà du point où vous utilisez le OpenForm commande, je pense que c'est plus lisible pour continuer les actions suivantes sur le formulaire lui-même. D'abord parce que vous ne pouvez pas vraiment de ramification dans une macro; ensuite, parce qu'il est plus modulaire pour garder les actions à faire avec le formulaire en réalité sur la forme.
Dans l'exemple ci-dessous, mon exemple de formulaire de connexion est appelé LoginForm, et le nom d'utilisateur de la zone de texte est txtUserName, et le mot de passe de la zone de texte est appelé txtPassword.
La première chose à faire est de protéger le dialogue entre le simple fait de laisser à l'utilisateur de fermer le dialogue et de s'échapper dans la conception de base de données de l'écran. La meilleure façon de le faire est de définir un indicateur appelé ValidLogin lors du chargement du formulaire. Vous allez définir cet indicateur au cours du processus de connexion. Lorsque le formulaire est fermé, vérifier si le drapeau est vrai. Si ValidLogin est faux, puis fermez la base de données.
Sur le OnLoad événement du formulaire de Connexion, cliquez sur le bouton de sélection, et choisissez Macros Constructeur. Dans la Macro de l'écran, utilisez les actions suivantes (à noter que la Condition colonne est masquée par défaut, mais vous aurez seulement besoin pour les deux prochaines macros):
Sur le OnUnload événement du formulaire de Connexion, faire la même chose que ci-dessus, et d'ajouter:
Si vous exécutez ce maintenant, dès que vous fermez le formulaire, la base de données de près. Pour être utile, vous devez ajouter les éléments suivants actions de macro à l'événement OnClick de votre Connexion bouton:
Noter que dans tous ces exemples, j'ai utilisé les macros incorporées, non nommé, de macros, de sorte que vous pouvez les garder ensemble avec le formulaire. Notez également les points de suspension (...) dans la dernière macro, qui représente la valeur de la dernière condition.
Donné une forme frmLogin, avec 2 zones de texte, txtUserName et txtPassword, et un bouton de commande, vous pouvez essayer ce qui suit
Un léger réglage de ce qui précède que le code ci-dessus doit être ouverte à des attaques par injection SQL (oui je sais c'est seulement l'accès, mais il ne fait jamais de mal)