aide sur access, enfin plus une question ^^

aide sur access, enfin plus une question ^^ - Logiciels - Windows & Software

Marsh Posté le 06-03-2009 à 12:42:21    

bonjour, j'ai une BDD a realiser sur une gestion de stock, de client...
j'aimerais que l'identification d'un client soit de type CLI0000 (mis en masque de saisie pour eviter toute erreur)
ma question est de savoir si il y a possibilité d'incrementer de 1 ce CLIXXXX a chaque nouvelle entrée de client.
merci d'avance

Reply

Marsh Posté le 06-03-2009 à 12:42:21   

Reply

Marsh Posté le 06-03-2009 à 13:19:21    

luffyfr a écrit :

bonjour, j'ai une BDD a realiser sur une gestion de stock, de client...
j'aimerais que l'identification d'un client soit de type CLI0000 (mis en masque de saisie pour eviter toute erreur)
ma question est de savoir si il y a possibilité d'incrementer de 1 ce CLIXXXX a chaque nouvelle entrée de client.
merci d'avance


 
Salut luffyfr,
J'ai déjà fais une Bdd sous access pour un centre de vision avec patients, suivi de pathologie, ect... et je viens de vérifier la seule solution d'incrémenter de 1 c'est de mettre au format NuméroAuto plutôt qu'au format texte avec masque de saisie. En effet grâce au NuméroAuto tu auras ce que tu souhaites et en plus cette fonction te permets d'éviter les doublons... Tiens moi au courant de la suite de ton projet. @+

Reply

Marsh Posté le 07-03-2009 à 09:58:17    

j'y avait pensé mais je dois gereraussi des employe, des fournissur, c'est pour ca que je mets 3 lettres avant les chiffres. d'autre par, sais tu si l'on peut faire une sorte de login sans passer par le code ?(sql possible)?

Reply

Marsh Posté le 07-03-2009 à 11:17:35    

Salut,
 
Je pense que tu débutes, donc voici quelques conseils pour ton application.
 
Tout d'abord dans une base de données, créé toujours une clef unique par enregistrement (numéro auto ca va bien sous Access) et utilise cette clef de manière systématique pour accéder à un enregistrement (l'utilisateur final n'a pas besoin de voir que tu travailles sur des IDs).
 
Ensuite ne mélange pas le "type" et le "numéro" pour une personne ce sont deux données distinctes et donc tu dois les stocker dans des champs différents. C'est une très mauvaise idée de les regrouper et de vouloir "parser" des chaînes de caractères (c'est lent et vraiment pas pratique).
 
Idéalement tu auras une table liée qui contiendra pour un ID donné les libellés ("client", "fournisseur", "employé", ... si je suis ta logique), si une "personne" peut être de plusieurs "types" il faudra une table intermédiaire faisant la liaison ID_TYPE et ID_PERSONNE. Voici un petit exemple :
 
http://img7.imageshack.us/img7/6493/access01.jpg
Les champs ID sont en numéro automatiques, les ID dans la table de jonction "RelationsPersonneType" ils sont simplement en numériques (pas de numéro auto !), une clef primaire est créé sur les deux champs ID.
 
Ensuite une bonne idée est de séparer dans deux fichiers ta base Access. L'un qui contient les données, les tables, ... et l'autre qui contient les formulaires et les états.
 
Si tu penses utiliser ton application en réseau et sur plusieurs postes simultanément, mon meilleur conseil serait d'éviter Access pour le stockage de données. Si tu souhaites rester dans le monde Microsoft, oriente toi directement vers SQL Server 2005 Express Edition, voir SQL Server pour la partie stockage des données (tu peux continuer à faire l'interface utilisateurs avec Access). Ton application sera plus fiable, plus stable et bien plus rapide.
 
Pour le login je te réponds dans un autre message car il y a d'autres considérations.


Message édité par Requin le 07-03-2009 à 11:21:49
Reply

Marsh Posté le 07-03-2009 à 11:43:27    

Pour un login c'est en fait assez simple. On va supposer que tu n'as pas une gestion très fine des droits
 
Dans le cas contraire reprends l'exemple ci-dessus pour attribuer des droits à tes utilisateurs, une table avec les droits une table avec les utilisateurs et un table intermédiaire qui lie des droits à des utilisateurs.
 
Revenons à un login simple ta table doit avoir au moins 3 champs :
- ID
- NomLogin
- MotDePasse
 
Après tu peux ajouter des champs, genre le nom, prénom, nombre de logins effectués,  si le compte est activé ou non, ... mais dans l'immédiat voici ce qu'il te faut au minimum.
 
Un des gros problèmes c'est que quelqu'un qui peut lire ta table des "Utilisateurs" peut lire tous le mots de passes de tout le monde (donc protection zéro et obligé de changer TOUS les mots de passes). Il ne faut donc JAMAIS stocker le mot de passe en clair. Au lieu de cela tu va passer le mot de passe de l'utilisateur via une fonction de hachage avant de le stocker dans ta table (il faudra que tu cherches comment le faire avec Access, SQL Server propose HashBytes()).
 
Pour authentifier un utilisateur c'est assez simple, tu prends le login de l'utilisateur, tu filtres tout caractère qui n'a rien à y faire, tu prends mot de passe, tu le haches, puis ensuite tu regarde si tu as un enregistrement qui correspond au nom d'utilisateur + mot de passe haché... si oui c'est qu'il y a un login qui correspond.
 
Avec Access je pense que tu devras passer par un peu de code VBA pour réaliser quelque chose qui tient la route.

Reply

Marsh Posté le 07-03-2009 à 12:53:47    

Voila luffyfr,
Je pense que requin à vraiment bien répondu à tes questions. Désolé de ne pas avoir donné plus de renseignements à temps mais j'étais pas mal occupé et je n'ai vu que ta réponse maintenant et requin m'a pris de vitesse mais en tout cas bravo à lui pour sa précision je n'aurai pas fais mieux. Tiens nous au courant de l'avancé de ton projet. @+

Reply

Marsh Posté le 07-03-2009 à 15:37:05    

merci a vous deux, c'est vrai que requin a ete assez precis ^^.
 
j'ai encore une question,  
J'aimerais entrer un numero de bon et ce qu'il contient.
j'ai créer un formulaire qui me permet d'introduire mon numero de bon (clef primaire), lorsque je clic sur le bouton, il ouvre un autre formulaire pour rentrer toute les informations concernant ce bon, mais je dois a chaque fois rentrer le numero de bon que j'ai rentrer avant sur l'autre formulaire, n'y a t il pas un moyen de recuperer ce numero de bon (clef etrangere) automatiquement ?

Reply

Marsh Posté le 07-03-2009 à 15:59:05    

Je regarde dés que possible comment faire, je me rappel de quelque chose de similaire dans ce que j'avais fais mais il me semble que j'avais utilisé des onglets et pas un formulaire indépendant. D'ailleurs petite question quelle version d'access utilises tu? je te tiens au courant. @+

Reply

Marsh Posté le 07-03-2009 à 16:03:52    

Ah oui je ne sais pas si tu les a déjà consulté mais je te laisses 2 liens de sites qui peuvent être utiles
1) http://access.developpez.com/
2) http://www.self-access.com/cms/access/
 
Bon courage et je te tiens au courant de ma recherche par rapport à ta question sur les formulaires liés. @+

Reply

Marsh Posté le 07-03-2009 à 16:14:48    

merci coxwen, j'utilise la version 2007.
oui deja fait un tour sur ces site, mais je n'ai pas trouver d'information pouvant m'aider malheureument :(

Reply

Marsh Posté le 07-03-2009 à 16:14:48   

Reply

Marsh Posté le 07-03-2009 à 16:16:13    

le 2eme non, j'avais consulter...je regade si je peux trouver des chose interessaantes.....

Reply

Marsh Posté le 07-03-2009 à 18:36:04    

luffyfr a écrit :

merci a vous deux, c'est vrai que requin a ete assez precis ^^.
 
j'ai encore une question,  
J'aimerais entrer un numero de bon et ce qu'il contient.
j'ai créer un formulaire qui me permet d'introduire mon numero de bon (clef primaire), lorsque je clic sur le bouton, il ouvre un autre formulaire pour rentrer toute les informations concernant ce bon, mais je dois a chaque fois rentrer le numero de bon que j'ai rentrer avant sur l'autre formulaire, n'y a t il pas un moyen de recuperer ce numero de bon (clef etrangere) automatiquement ?


 
Salut, la requête SQL pour obtenir le dernier ID inséré est "select @@identity as LastId" si ma mémoire est bonne. Et c'est supporté par Access et SQL Server.
 
Sinon une autre astuces consiste à faire un "select MAX(ID) as LastId from Table" comme les numéro auto sont incrémentés celui qui a la valeur la plus élevée est ton dernier ID inséré (toutefois autant préférer @@identity quand le SGDB le supporte).


Message édité par Requin le 07-03-2009 à 18:36:50
Reply

Marsh Posté le 07-03-2009 à 18:46:45    

merci beaucoup ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed