Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1658 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Conception de base de donnée

 



 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Conception de base de donnée

n°2324398
aculy
Posté le 19-11-2018 à 09:52:52  profilanswer
 

Bonjour à tous,
cela fait .... 15 ans que j'ai pas touché à de la base de données et j'aurais besoin de faire une petite base pas trop compliquée (je pense).
 
J'ai un stock de consommable moins de 100 ref (cartouches imprimantes, kit de maintenance, papier, etc) que je commande chez plusieurs fournisseurs (suivant la référence).
Bien entendu certains fournisseurs peuvent me vendre plusieurs référence.
 
j'ai besoin de savoir en temps réel ce que j'ai en stock, de pouvoir faire un inventaire si besoin en comparant mon stock a la base et d'être alerter lorsque certaines ref arrivent sous un seuil définit par ref.
car certaines ref (papier a entête) mettent un certains temps avant d'être livré.
il faut que je puisse suivre sur plusieurs années les dates à laquelle je fais des sorties et des entrées.
 
A la fin quand elle sera finie avec cette base, je pourrais faire des stats de conso par service et surtout faire des bons de commande rapidement....
 
j'ai donc fait un dictionnaire des données et mon MCD (sans les relations et les cardinalités)....
 
mais voila truc déjà très con...
est ce que je pars bien sur mon MCD et un autre truc con.... je sais plus les différents types de données existants...
 
voici mon MCD actuel
https://imageshack.com/a/img921/2066/bQ7jxW.jpg
 
et mon dictionnaire des données
https://imageshack.com/a/img921/6665/y9gys6.png
 
si vous avez des remarques sur le MCD je prends
pour les types de données j'aurais besoin d'un petit rappel
(et sur le Web pas facile de trouver les bonnes informations.
 
Merci

mood
Publicité
Posté le 19-11-2018 à 09:52:52  profilanswer
 

n°2324461
rufo
Pas me confondre avec Lycos!
Posté le 19-11-2018 à 23:06:03  profilanswer
 

Déjà, il manque les relations entre tes tables sur ton MCD. Ca n'aide donc pas pour savoir si t'as bien fait les liens entre les tables :/
 
A priori, une commande est composée de plusieurs produits commandés. Il te faut donc une autre table (genre Lignecommande) avec une relation 1-n avec la table Commandes.
Je ne connais pas le type "caractère long". C'est un VARCHAR ? Le nb entre ( ), ça représente quoi ? Le nb de caractères ? Si oui, 999, c'est un peu violent, non ?
 
Perso, pour mes clés primaires, je préfère prendre un entier auto-incrémenté. Plus facile à gérer en tant que clé étrangère dans d'autres tables. Ca peut prendre aussi moins de place. Pour le champ qui doit être unique (genre, une réf constructeur), tu peux définir le champ avec un index unique.
Edit : je t'invite à regarder la forme 3NF de Codd ;) Ca t'évitera de faire d'éventuelles boulettes dans la construction de ton MCD.


Message édité par rufo le 19-11-2018 à 23:07:03

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2324473
aculy
Posté le 20-11-2018 à 10:23:46  profilanswer
 

Merci Rufo
Edit :  
je me remets sur cette base que jeudi mais
ok pour les clefs primaires, effectivement cela sera mieux un entier auto-incrémenté que les ref
ok pour le rajoute de la table "ligne de commande
 
je vais lire la 3NF de Codd (pour le moment je ne sais pas de quoi tu parles...)
et....
au fait oui... le 999 c'était le nombre de caractère.... j'ai mis un chiffre pour le moment ne sachant pas...
 
Merci


Message édité par aculy le 20-11-2018 à 18:21:40
n°2324639
aculy
Posté le 22-11-2018 à 11:59:10  profilanswer
 

j'ai rajouter ma lignecommande, j'ai mis des relations...
mais je sais pas si cette base est viable...
 
https://www.cjoint.com/c/HKwk6cRyNHJ

n°2324665
rufo
Pas me confondre avec Lycos!
Posté le 22-11-2018 à 17:43:09  profilanswer
 

Je suis très étonné de trouver une relation entre la lignecommande et la conso :/
De même, je suis étonné de ne pas trouver de relation entre lignecommande et produitfournisseur.
 
Il faudrait aussi un mécanisme pour transformer ta commande en entrée stock. Il devrait y avoir une relation 1-n entre ta commande et les entrées histoire de pouvoir gérer des commandes livrées en plusieurs fois.
 
Edit : ton truc ressemble fortement voire carrément à de la GMAO. T'as regardé si des outils en licence libre de ce genre existaient ? Ca éviterait de réinventer la roue :o


Message édité par rufo le 22-11-2018 à 17:45:08

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2324666
aculy
Posté le 22-11-2018 à 17:45:18  profilanswer
 

alors je t avoue entre le moment ou j'ai posté cela et maintenant....
j'ai tout cassé et recommencé
cela me prends la tete de faire une BDD... cela fait trop longtemps que je n'en ai pas fait
faut que je me remette dans le bain et vite....

n°2324679
rufo
Pas me confondre avec Lycos!
Posté le 22-11-2018 à 23:17:43  profilanswer
 

Concevoir une BD (correctement), c'est un métier (c'est comme tout tu me diras).
Si ça peut t'aider : https://www.appvizer.fr/magazine/op [...] o-gratuits


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2324710
aculy
Posté le 23-11-2018 à 17:32:21  profilanswer
 

je crois que je suis bon sur les tables...
 
https://www.cjoint.com/c/HKxqGdh4wdg

n°2324773
aculy
Posté le 26-11-2018 à 17:01:38  profilanswer
 

Bonjour,
ma base fonctionne bien et fait presque tout ce que je veux (pour le moment).
Je fais maintenant de la mise en page pour mes datas facile (je n'ai pas encore commencer la partie commande avec les quantités et prix liés aux tarifs).
 
Et la un nouveau souci... :
j'ai créé un état pour avoir ma liste de fournisseur, jusque là pas trop de difficulté cela m'affiche bien la liste de ma table fournisseur,  
mais quand je lui demande de rajouter pour chaque fournisseur le ou les contacts, cela ne m'affiche plus que les fournisseurs ayant un contact.
Par exemple si j'ai pas de contact dans la table contact pour un fournisseur rien ne s'affiche pour celui-ci (ex :pour Amazon j'ai pas une personne physique en contact).
 
je continue de chercher mais si quelqu'un à une idée je suis preneur.
 
MERCI

n°2324785
rufo
Pas me confondre avec Lycos!
Posté le 26-11-2018 à 17:39:38  profilanswer
 

C'est parce que ta requête est construite via un INNER JOIN (équi-jointure) alors que tu devrais faire un LEFT JOIN.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
mood
Publicité
Posté le 26-11-2018 à 17:39:38  profilanswer
 

n°2324899
aculy
Posté le 28-11-2018 à 14:01:09  profilanswer
 

Merci Rufo cela fonctionne niquel (DSL j'avais pas eu le temps de vérifier)...
Maintenant autre soucis, j'ai fait un peu de VB sur mes formulaires, bien entendu je les ai tester au fur et à mesure.
Mais d'un coup impossible de relancer la console VB, dès que je fais appel à la console cela plante ma base.
Un truc simple ouverture, fermeture de formulaire avec aller au dernier enregistrement ou enregistrer, suivant si on va sur un form ou si on en part.
Sur un autre poste informatique cela fonctionne bien pourtant du coup cela doit venir de mon PC mais je ne sais pas ou chercher...
si quelqu'un a une idée....
car la première fois j'ai refait ma base complète en me disant que j'avais du faire une erreur.
et j'ai pas envie de tout refaire....
 
Pour info: je bosse sur ACCESS 2010 avec un PC sous Windows 10.
et l'autre test a été fait sur un PC sous Windows 7....

n°2324901
aculy
Posté le 28-11-2018 à 14:15:23  profilanswer
 

je viens de tester d'ouvrir ACCESS en choisissant l'option
"Exécuter ce programme en mode de compatibilité pour Windows 7"
.....
toujours pareil
 
je sèche

n°2324903
rufo
Pas me confondre avec Lycos!
Posté le 28-11-2018 à 14:27:40  profilanswer
 

Tu peux toujours essayer avec un VM Win7 sur le PC qui est en W10.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2324904
aculy
Posté le 28-11-2018 à 14:30:52  profilanswer
 

alors.... se serait effectivement une super solution si est seulement si...  je pouvais faire mumuse avec mon poste au bureau....
je suis un simple utilisateur ou je bosse et je n'ai pas a dispo de VM sous Win7.....
et j'avais pris mon Pc portable perso en me disant que si besoin je pouvais bosser dessus... mais j'ai pas access .... j'ai beaucoup pleuré.....

n°2324906
aculy
Posté le 28-11-2018 à 14:39:49  profilanswer
 

je viens de trouver ceci
"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" "chemin de mon fichier" /decompile
je peux rouvrir ma base et cela refonctionne....
on va voir avec le temps

n°2324987
aculy
Posté le 29-11-2018 à 09:49:23  profilanswer
 

je suppose qu'il est possible lorsque je fais un enregistrement dans une table que cela additionne ou supprime dans une autre table...
j'ai une table stock et 2 tables pour les E/S de Stocks
quand je fais une E ou S j'aimerais que cela change la valeur dans ma table Stock...
 
je cherche sur le net mais je pense que je ne trouve pas la bonne expression à écrire car tout ce que je trouve ne correspond pas à me recherche...

n°2324989
rufo
Pas me confondre avec Lycos!
Posté le 29-11-2018 à 09:56:29  profilanswer
 

Ca s'appelle les triggers.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325015
aculy
Posté le 29-11-2018 à 15:59:43  profilanswer
 

je vais regarde ça Merci

n°2325023
aculy
Posté le 29-11-2018 à 16:38:32  profilanswer
 

je comprends pas comment fonctionne les "trigger"
pourtant je suis aller voir  
https://grenier.self-access.com/acc [...] cess-2010/
et d'autres trucs mais je comprends pas comment faire...
 
j'ai trouvé ceci
http://www.info-3000.com/access/macrodonnee/index.php
 
mais cela ne fonctionner pas  
alors j'ai essayer en faisant un truc du genre
 

Code :
  1. Private Sub Qt_input_AfterUpdate()
  2. stock.Qt_conso_stock = Qt_conso_stock + Qt_input
  3. End Sub


 
je continue de chercher du coup...


Message édité par aculy le 29-11-2018 à 16:39:16
n°2325028
rufo
Pas me confondre avec Lycos!
Posté le 29-11-2018 à 18:11:19  profilanswer
 

C'est ce qu'il me semblait : Access ne gère pas les triggers au sens SQL du terme mais les émule via des macros. Y'a pas à dire, c'est vraiment de la merde ce truc. :/
J'ai laissé tomber Access depuis la fin de mon projet de fins d'étude d'école d'ingé (soit 16 ans !). Déjà à l'époque, cette bouse m'avait bien fait chier : c'était pour une appli web genre Wordpress avec BD et on nous avait imposé Access comme "SGBD" (la bonne idée  :sarcastic: ). Du coup, je vais pas pouvoir t'aider plus. Regarde les applis libres existantes peut-être. Parce que te lancer dans le dév d'une appli web avec un vrai SGBD, ça me paraît overkill pour ton besoin. :(


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325029
aculy
Posté le 29-11-2018 à 18:15:42  profilanswer
 

lol oui je pense aussi
je continue de creuser
j'ai vu un truc ou il disait de passer d'essayer de cacher la valeur dans le formulaire puis de les additionner et de les reinjecter....
pas tout compris mais je verrais si c'est possible....
 
après je me dis que je m'y prends peut être mal a vouloir passer par 3 tables Stock/input/output  
peut etre que tout dans une table serait une solution avec des - et de + et ensuite de tout additionner....
 
je vais réfléchir d'ici lundi prochain...
 
 

n°2325041
rufo
Pas me confondre avec Lycos!
Posté le 29-11-2018 à 21:49:25  profilanswer
 

Non, je pense que c'est ce qu'il faut faire : les entrées, les sorties et le stock courant. Sinon, pour connaître la quantité en stock courante, va falloir reprendre à chaque fois toutes les entrées/sorties et calculer. Au bout d'un moment, ça risque de ramer et avec une bouse comme Access, ça risque d'arriver assez vite :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325060
aculy
Posté le 30-11-2018 à 08:43:49  profilanswer
 

ok donc je continue sur mon idée
Merci en tout cas a toi

n°2325312
aculy
Posté le 03-12-2018 à 17:21:35  profilanswer
 

Est il possible dans Acces de
- Cacher des boutons en passant d'un formulaire a une autre sous condition (j'aimerais avoir un formulaire ou un bouton apparaît suivant si il vient de formsX ou formsY)
- Récupérer une donnée dans un formulaire quand on passe dans un autre (sachant que pour le moment j'avais voulu que dans le 2eme formulaire ce soit une liste déroulante)
- Faut'il créer plusieurs formulaires si les 2 cas précédent ne sont pas possible.... (si oui... 5 formulaires de plus a créer).
Merci

n°2325315
rufo
Pas me confondre avec Lycos!
Posté le 03-12-2018 à 17:28:37  profilanswer
 

Je pense qu'avec les variables globales, tu dois pouvoir faire ça facilement. Après, je ne sais pas si c'est le mieux.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325317
aculy
Posté le 03-12-2018 à 17:49:46  profilanswer
 

ok mais j'ai testé çà
avec un msbgox pour me retourner la valeur que j'ai dans ma premiere zone
 

Code :
  1. Private Sub input_Click()
  2. Dim var_test As Integer
  3.    
  4.     DoCmd.RunCommand acCmdSaveRecord
  5.     Forms.Stock_KN.Ref_conso = var_test
  6.     MsgBox var_test
  7.     DoCmd.OpenForm "Input_Stock", acNormal, , , acFormAdd
  8.     DoCmd.Close acForm, "Stock_KN"
  9.    
  10. End Sub


mais cela me retourne un 0....


Message édité par aculy le 03-12-2018 à 17:50:51
n°2325318
rat de com​bat
attention rongeur méchant!
Posté le 03-12-2018 à 18:18:01  profilanswer
 

Ben oui, tu n'affectes aucune valeur à var_test. Ligne 5 c'est pas plutôt var_test=...?

n°2325319
aculy
Posté le 03-12-2018 à 18:18:45  profilanswer
 

oh le boulet.....
au moins cela ressort la bonne valeur...
par contre cela ne la remets pas dans l'autre formulaire...
 

Code :
  1. Private Sub input_Click()
  2. Dim var_test As String
  3.    
  4.     DoCmd.RunCommand acCmdSaveRecord
  5.     var_test = Forms.Stock_KN.Ref_conso
  6.     MsgBox var_test
  7.     DoCmd.OpenForm "Input_Stock", acNormal, , , acFormAdd
  8.     Forms.Input_Stock.Ref_input = var_test
  9.     DoCmd.Close acForm, "Stock_KN"
  10.    
  11. End Sub


 
j'ai une valeur non valide pour ce champ...
vais aller controler mes tables...


Message édité par aculy le 03-12-2018 à 18:26:30
n°2325330
rufo
Pas me confondre avec Lycos!
Posté le 03-12-2018 à 20:40:16  profilanswer
 

Je pensais à des variables globales qu'on met dans les modules.
 
Sinon, autre solution : tu passes par une table avec 2 champs (nom de la variable et sa valeur) et tu fais des requêtes pour alimenter ou lire cette table. Ca simule des variables globales et c'est sans doute plus propre.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325365
aculy
Posté le 04-12-2018 à 11:59:18  profilanswer
 

du coup ce que j'ai fait fonctionne
j'en avais besoin dans 3 formulaires et niquel.....
maintenant je bloque sur le dernier gros sujet...
additionner et soustraire dans ma table stock
quand je fais des entrées et sorties....
 
c'est mon gros point noir
je continu de chercher
 
encore MERCI Rufo pour les pistes que tu me donnes à chaque fois.

n°2325379
rufo
Pas me confondre avec Lycos!
Posté le 04-12-2018 à 13:58:06  profilanswer
 

Si les macros qui émulent les triggers ne fonctionnent pas, tu peux toujours ajouter le code VBA sur l'événement qui permet d'enregistrer une entrée ou sortie de stock. J'imagine que c'est un bouton "valider". Du coup, une fois la requête de MAJ de ta table entrées sou sorties faite, tu rajoutes une autre requête pour mettre à jour ta table stocks.


Message édité par rufo le 04-12-2018 à 13:58:17

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325381
aculy
Posté le 04-12-2018 à 14:02:19  profilanswer
 

j'ai testé effectivement de créer une requête que j'appel ensuite dans mon code VBA... (avant d'aller déjeuner)
 

Code :
  1. Private Sub input_Click()
  2.     Dim LeSQL As String
  3.         LeSQL = "UPDATE Stock_KN INNER JOIN Input_Stock ON Stock_KN.Ref_conso = Input_Stock.Ref_Input SET Stock_KN.Qt_conso_stock = Stock_KN.Qt_conso_stock+Input_Stock.Qt_input;"
  4.        
  5.         DoCmd.RunSQL LeSQL
  6.         DoCmd.RunCommand acCmdSaveRecord
  7.         DoCmd.GoToRecord , , acNewRec
  8. End Sub


 
la requête se lance
j'ai le message mais rien n’apparaît dans ma table...
je dois la relire pour voir si j'ai pas oublié un truc

n°2325394
rufo
Pas me confondre avec Lycos!
Posté le 04-12-2018 à 15:51:59  profilanswer
 

Je parie que le autocommit de la BD ou table n'est pas à true.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325396
aculy
Posté le 04-12-2018 à 16:07:25  profilanswer
 

ok je verrais cela..

n°2325480
aculy
Posté le 05-12-2018 à 11:22:22  profilanswer
 

je ne trouve pas comment activer le autocommit...

n°2325484
rufo
Pas me confondre avec Lycos!
Posté le 05-12-2018 à 12:17:48  profilanswer
 

https://codekabinett.com/rdumps.php [...] ransaction
Le use transaction devrait être à Non. S'il est à Oui, ça explique ton pb.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325629
aculy
Posté le 06-12-2018 à 09:34:06  profilanswer
 

Salut Rufo,
j'ai pas les memes infos dans mes propriétés....
je regarde si cela n a pas bougé entre les versions.

n°2325636
aculy
Posté le 06-12-2018 à 10:01:48  profilanswer
 

du coup j'ai essayé de faire comme ce qu'il explique dans le lien...
en adaptant avec mon code

Code :
  1. DAO.DBEngine.BeginTrans
  2.     CurrentDb.Execute "UPDATE Stock_KN SET Stock_KN.Qt_conso_stock = Stock_KN.Qt_conso_stock+Input_Stock.Qt_input WHERE Stock_KN.Ref_conso = Input_Stock.Ref_Input"
  3.     DAO.DBEngine.CommitTrans


et j'ai une erreur 3061 trop peu de paramètre. 2 attendu.
 
je lui dis pourtant de bien updater la table
lui dit le changement a faire
et la ou faut le faire.....

n°2325806
rufo
Pas me confondre avec Lycos!
Posté le 07-12-2018 à 20:20:32  profilanswer
 

Je pense qu'il manque l'instruction pour indiquer le début de la transaction.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2325922
aculy
Posté le 10-12-2018 à 09:15:37  profilanswer
 

D'apres l'aide de ACCESS/VBA
 

Code :
  1. DAO.DBEngine.BeginTrans


 --> c'est pour débuter la transaction
 

Code :
  1. CurrentDb.Execute "UPDATE Stock_KN SET Stock_KN.Qt_conso_stock = Stock_KN.Qt_conso_stock+Input_Stock.Qt_input WHERE Stock_KN.Ref_conso = Input_Stock.Ref_Input"


--> je lance mon code pour faire ce que je veux
 

Code :
  1. DAO.DBEngine.CommitTrans


--> je dis que c'est fini et qu'il faut écrire
 
mais j'ai trouvé ... enfin une partie.. j'arrive a écrire dans ma table
ok c'est pas au bon endroit et cela ne fait pas ce que je veux tout a fait...
 
La table était vide et en mettant simplement un 0 cela incrémente (pas les bons chiffres mais cela se modifie...)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Conception de base de donnée

 

Sujets relatifs
Conception d'un gestionnaire généalogiqueUn compteur d'affichages avec base de données
liaison entre datagrid et base de donnéesBien placer la base de données sur PHPmyadmin
Conception plateforme achats (problème remue méninges)Création base de données avec Entity code first
LibreOffice.Base : Dédoublonner : Jointure de 2 tablesSauvegarde d'images dans une base de donnée
[RESOLU] Renseigner automatiquement une donnée de registrefreeware de conception base de donnée?
Plus de sujets relatifs à : Conception de base de donnée


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR