Eclipse est certainement bien, mais comme je ne le connais pas, j'aurai du mal à te guider.
NetBeans a la réputation d'être meilleur pour la composition des écrans.
Perso, je n'ai jamais eu l'occasion de comparer.
Version imprimable
Eclipse est certainement bien, mais comme je ne le connais pas, j'aurai du mal à te guider.
NetBeans a la réputation d'être meilleur pour la composition des écrans.
Perso, je n'ai jamais eu l'occasion de comparer.
c'est ok pour le CRUD de Fabricant!!!:ccool:
Et je fais quoi pour la suite??
Tu as fait un écran JFrame avec lequel on peut créer la fiche d'un fabricant dans MySQL, retrouver cette fiche, la modifier et la supprimer éventuellement ?
Vous pouvez regarder le projet!!!
je suis arrivé a me connecter dans la base,a modifier,ajouter et supprimer des fabricants!!!
Au fait j'ai pas utilisé JFrame mais plutot JPabel!!!
C'est parfait. :ccool:
Bien sûr, je n'ai pas pu le faire fonctionner car je n'ai pas la base.
Cependant, j'ai vu que tu fais une bonne utilisation du preparedStatement.
Tu n'es pas aussi débutant que tu le disais :)
euh ben si, tu as bien utilisé des JFrame comme IHM, tout va bienCitation:
Au fait j'ai pas utilisé JFrame mais plutot JLabel!!!
J'ai vu que tu composes ton écran entièrement à la main.
Comme tu es sur NetBeans, je te recommande de consacrer un peu de temps (un ou deux jours)
à la prise en main de la composition d'écran :
Dans ton projet, tu fais :
clic droit sur ton package "controleur" -> New -> JFrame form -> nom du JFrame "MonTest" -> validate
Sous tes yeux émerveillés, apparaît alors un JFrame au centre et une palette de composant
(JTextfield, JList, JButton, etc ...) que tu peux faire glisser dans le JFrame et positionner à ta guise.
Il y a, au-dessus du JFrame un bouton "source" qui te permet de voir NetBeans pondre le code à ta place 8-)
Bien sûr, tu ajoutes le code nécessaire. Par exemple, en cours de placement d'un bouton,
tu fais un clic-droit sur le bouton -> events -> Action - > Actionperformed -> et paf tu peux y mettre tout de suite
le code qui doit se déclencher quand on clique sur le bouton.
Une fois maîtrisé, ce système te fais gagner des millions d'heures dans la composition des écrans
et puis tu vois directement ce que tu fais !!!
La suite du projet est classique :
- faire un écran d’accueil avec des boutons ou un menu pour ouvrir les différents écrans que tu auras composés.
- il faudra compléter la base de données des champs manquants afin de faire des écrans de saisie assez complet
pour les présenter au client (ou commanditaire) et montrer l'avancement du projet
Avec ce que j'ai vu de ce que tu sais déjà faire, tu devrais y arriver sans trop de problème.
N'hésites pas à poster en cas de difficulté ponctuelle.
Dès que cela va se compliquer (écrans complexes, Impression d'état, statistiques, déploiement, ...)
alors on continue notre discussion.
à+
Salut,de retour....
bon je crois que j'ai fait toutes les vues necessaires que j'avais dans mon modele,maintenant alors que me reste t-il a faire???
je ne sais pas mais je pense bien que le plus difficile est a venir!!!!!!:(
Les écrans de saisie CRUD ?
Si ce n'est pas top secret, peux-tu poster la structure de la base (script sql ou schéma) pour que je compare avec ton cahier des charges ?
Si la base est bien structurée alors pas de problème.
Par ailleurs, je trouve que si tu continues à avancer à ce rythme, la partie écran pourrait être bouclée la semaine prochaine.
Là où tu passeras le plus de temps c'est sur les états (on en reparlera)
Oui les ecrans de saisie CRUD...
voici la structure de le base:
CREATE DATABASE GestioNRJ;
use GestioNRJ;
mysql> Create table Equipement(id_equipement varchar(15) not null,nom_equipement varchar(50),num_serie varchar(20) REFERENCES serie(num_serie),num_type varchar(20) not null REFERENCES Type_equipement(num_type),id_fabricant varchar(25) REFERENCES fabricant(id_fabricant),prix_equi string,primary key(id_equipement));
Interventions :
mysql> Create table Interventions(id_intervention varchar(15) not null,nom_intervention varchar(20),id_equipement varchar(15) references Equipement(id_equipement),date_deb varchar(15),date_fin varchar(15),type_intervention varchar(25),primary key(id_intervention));
Type_equipement :
mysql>Create table Type_equipement(num_type varchar(20), nom_type varchar(25),primary key(num_type));
Fabricants :
mysql> create table fabricant(id_fabricant varchar(25) not null,nom_fabricant varchar(25),tel varchar(15),adresse varchar(35),email varchar(35),primary
key(id_fabricant));
Zone :
mysql>Create table Zone(num_zone varchar(15),nom_zone varchar(25),primary key(num_zone)) ;
Sont_transmis :
mysql> create table sont_transmis(id_equipement varchar(15) references Equipement(id_equipement),num_zone varchar(15) references zone(num_zone),date_deb_affect varchar(15),date_fin_affect varchar(15);
Serie :
mysql> Create table serie(num_serie varchar(20),nom_serie varchar(25),primary key(num_serie));
et pour le cahier de charge je crois que je l'avais mis en piece jointe!!!
table Equipement :
- id_equipement varchar(15) : OK si la numérotation de l'équipement existe déjà, sinon il est malin d'utiliser un entier auto-incrémenté
- il n'y a pas de champs pour enregistrer les capacités d’utilisation
- je suppose que la date de mise en service = 1ère date de la table "sont_transmis"
- prix_equi ne doit pas être en varchar (string ?) il faut le mettre en numérique (sinon pb de calcul)
table Serie :
- à quoi sert-elle exactement ?
table Interventions :
- ajouter un champ descriptif (varchar(2000) par exemple) pour mettre un compte-rendu d'intervention
- ajouter une date de clôture de l'intervention
- ajouter un champ varchar(200) indiquant éventuellement une suite à donner (très fréquent)
- ajouter un champ coût (numérique) qui sera alimenté par une table d'interventions-type (voir plus bas)
et qui sera modifiable pour chaque intervention
Créer une table de d'interventions-types ce qui permet d'y mettre un libellé et un coût standard
D'une façon générale, il vaut mieux pour les ID (clés primaires des tables) de les mettre en entier auto-incrémenté
comme ça c'est la base MySQL qui s'occupe de créer la clé.
Dans un environnement multi-utilisateurs, c'est essentiel (il ne faut pas que l'application cliente soit en charge des clés primaires)
oui mais je n'est jamais utilise auto-increment dans mes programmes,je ne c'est pas si je pourrais les gerer??
demain matin j'y travaillerais essentiellement!!!!
je l'avais creee pour connaitre exactement la serie de l'equipement,comme dans les telephones portable!!!!Citation:
table Serie :
- à quoi sert-elle exactement ?
je comprend pas trop!!!!Citation:
Créer une table de d'interventions-types ce qui permet d'y mettre un libellé et un coût standar
Mettre un label dans une base de données :sm: super pour l'internationalisation, par contre j'y mettrais un code ;-)
La table "sont_transmis" n'a pas de primary key.
Ca manque cruellement d'index si tu veux effectuer des recherches, analyses tes requêtes SQL pour voir quelles colonnes tu utilises dans les clauses WHERE ou JOIN.
De plus, je ne sais pas si MySQL fonctionne comme Oracle, mais Oracle ne crée pas d'index pour les clés étrangères (clause REFERENCES de tes ordres CREATE TABLE).
Explication pour auto-incrément (ou numérotation automatique ou encore compteur ...) :
Dans ta table intervention, chaque intervention doit être numérotée.
Avant même d'être une règle informatique, c'est une règle de gestion
car les bons d'interventions "papiers" que les personnes auront entre leurs mains
doivent comporter une date et un numéro.
Du coup, pour que l'application fournisse un numéro unique (fiable),
il faut que la base MySql s'occupe elle-même de la numérotation.
Il suffit de spécifier AUTO_INCREMENT sur le champ ID au format entier.
exemple ici : http://dev.mysql.com/doc/refman/5.0/...increment.html
Pourquoi ne pas le faire calculer par Java ?
1) Parce que l'application est multi-utilisateurs et donc si 2 utilisateurs cherchent à ajouter une fiche d'intervention en même temps, on a de bonnes chances qu'ils se retrouvent avec le même numéro au même moment.
2) Parce qu'il faudrait lancer une requête pour trouver le numéro le plus grand, ajouter +1 et finalement refaire une requête d'insertion.
Fais des tests avec l'exemple cité plus haut. Par rapport à la structure de ta base,
avec l'AUTO_INCREMENT tu élimineras pratiquement tous les problèmes de clés primaires.
Je n'ai toujours pas bien compris à quoi sert la table Series
Vraiment très interessant ce topic, j'ai appris beaucoup de choses :ccool:
Oui Népomucène je c'est bien comment faire l'auto-increment sur mysqlCitation:
Du coup, pour que l'application fournisse un numéro unique (fiable),
il faut que la base MySql s'occupe elle-même de la numérotation.
Il suffit de spécifier AUTO_INCREMENT sur le champ ID au format entier.
mais mon probléme c'est comment le gerer dans mon programme :oops:?
Il parle d'optimisation d'accès aux données.
Il est trop top pour s'en préoccuper, on en est seulement au stade de la maquette.
La base va très bien fonctionner sans cela pour l'instant.
Tu dois te concentrer sur le choix des champs et leur type
@Nemek
Je ne vois pas de quoi tu parlesCode:Mettre un label dans une base de données
Justement, l'intérêt du système c'est que dans ton programme ... tu n'as rien à faire :mrgreen:
Quand un utilisateur ajoutera une fiche d'intervention,
l'application utilisera une requête "INSERT" pour les champs de la table SAUF pour l'ID qui sera généré automatiquement par la base.