Gestion de stock avec du java sous netbeans

Résolu
smahaneAAI
Messages postés
68
Date d'inscription
jeudi 27 janvier 2011
Statut
Membre
Dernière intervention
7 février 2014
- Modifié le 29 mai 2012 à 18:04
 devloppeur - 3 juin 2015 à 22:37
Salut tout le monde !
je suis entraine de developper une petite application concernant une gestion de stock crée dans une BD MySql, cette derniere contient 5 tables=> Client,Produit,Fournisseur,Commande et ligne_commande. là mon probleme est dans le formulaire qui presente les commandes là je vais retourner les numeros d commandes avec les produits demandés et les prix convenables :
une commande peut contenir plusieur produits à la fois alors l'utilisateur peut ajouter une commande en choisissant "n" nombre de produits qu'il souhaite avoir dans cette commande puis pour chaque "n" il va selectionner un produit (le fait de selectionner c'est à partir de la table produit pour séléctionner des produits existant dans notre BD) alors ma question c'est :
est ce possible de faire ça ,puisqu'il s'agit de selection de produits dc j'aurai besoin des combobox, mais là le "n" qui controle le nombre de combo existant dans mon formulaire! alors comment créer des combo et cmt recuperer leur contenu pr l'ajouter dans mes 2 tables commandes et ligne_commande???
j'ai pensé à recupere le "n" d'un Jtextfield et mettre une boucle :

String champ1=jText1.getText();
int n=Integer.Parseint(champ1);
while(i=1;i=<n;i++){
//là la création de "n" combo et c'est le code que j'ignore
}

comment j vais savoir les noms des combo crées puisqu'ils vont etre crées dans une boucle et j'aurais besoin de leurs noms pour acceder a leur contenu par: comboX.getSelectedItem();
A voir également:

7 réponses

smahaneAAI
Messages postés
68
Date d'inscription
jeudi 27 janvier 2011
Statut
Membre
Dernière intervention
7 février 2014
10
Modifié par Whismeril le 18/01/2015 à 09:19
merciiiiiiiiiii
en fait j'ai trouvé une autre solution plus pratique pour pouvoir parcourir les elements de ma table de BDD et les sélectionner et récupérer ce qui est sélectionné!!!
et là j'ai utilisé 2 jTable: jTable1 qui affiche tout mon contenu et dont j sélectionne les éléments que j désir, et jTable2 dont j récupère les elements que j'ai sélectionné apres avoir cliquer sur un bouton et voilà mon code de remplissage de jTable1 qui récupère les elements de ma table dans ma base de données:

pour que mon jTable soit rempli dès le debut d'ouverture de ma fenetre j'ai mis ce code dans le event>>internalFrame>>internalFrameOpened de ma formulaire :

private void formInternalFrameOpened(javax.swing.event.InternalFrameEvent evt) { 
 Connexion conn;
try {
                conn.Connecter();
                Connection cnx;
                cnx = conn.con;
                Produit prd = new Produit();
                try {
                    prd.remplir(cnx, jTable1, ch);
                    
                    } catch (SQLException ex) {
                    Logger.getLogger(Produits.class.getName()).log(Level.SEVERE, null, ex);
                }
                cnx.close();

            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Produits.class.getName()).log(Level.SEVERE, null, ex);
}


pour le code de la connexion j l'ai mis dans une class "Connexion" qui comporte la methode Connecter():

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Connexion {

 String url ="jdbc:mysql://localhost:3306/gestion_stock";
public Connection con; 
        
        
        public void Connecter() throws ClassNotFoundException, InstantiationException, IllegalAccessException{
            try {
 Class.forName("com.mysql.jdbc.Driver").newInstance();
 con= DriverManager.getConnection(url,"root","");  
 System.out.println("pilote Mysql chargé"); 
  } catch(SQLException sqle) {
 System.err.println(" Erreur lors de la connexion : " + sqle.getMessage()) ;
 } 
        }
}

et pour la fonction remplir() qui rempli le jTable1 elle se trouve dans une autre class "Produit":

public class Produit {
  public Produit() {}
 public void remplir(Connection con,JTable Liste,String req)throws SQLException{
       
        DefaultTableModel d=(DefaultTableModel) Liste.getModel();
        d.setRowCount(0);
        Statement st=con.createStatement();
        ResultSet rst= st.executeQuery(req);
          while (rst.next()){
              d.insertRow(Liste.getRowCount(), new Object[]{rst.getInt("Num_prd"),
              rst.getString("Nom_prd"),rst.getInt("Prix"),rst.getInt("Qte_stock"),
              rst.getInt("Num_frn")});
          }    
}

voyons mnt le remplissage de notre jTable2 qui se fait a partir de selection des elements de jTable2:
ce remplissage se fait quand on click sur la bouton "ok", donc voilà le code de notre bouton :
NB: mes 2 jTables contiennent 3 colonnes num_prd,num_cmd et qte_cmd

 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     if (jTable1.getSelectedRow() == -1) {
                    JOptionPane.showMessageDialog(this, "Il Faut d'abord Selectionné un produit");
                } else {
                 
                    int row = jTable1.getSelectedRow();
                    String num_prd = jTable1.getValueAt(row, 0).toString();
                    String num_cmd = jTable1.getValueAt(row,1).toString();
                   String qte_cmd = jTable1.getValueAt(row,     2).toString();               
                  if (jTable2.getRowCount() == -1) {} 
                  else {
                    for (int i = 0; i <= jTable2.getRowCount() - 1; i++) {
//num_prd est le 1er element dans chaque colonne de jTable1 et jTable2
            if (Integer.parseInt(jTable2.getValueAt(i, 0).toString()) == Integer.parseInt(num_prd)) {

                                    index = i;

                                }

/*pour eviter l'ajout de la meme ligne plusieur fois si le num_prd n'existe pas déjà dans jTable2 là on va ajouter la ligne selectionnée du jtable1 dans jTable2 */
                        if (index == -1) {
       DefaultTableModel d = (DefaultTableModel) jTable2.getModel();
   d.insertRow(jTable2.getRowCount(), new Object[]{num_prd, num_cmd, qte_cmd});
                        } else {

                           index = -1;
 JOptionPane.showMessageDialog(this, "l'element Selectionné existe déjà!");
                        }

                    }
                
    }             


eeeeet voilà j'ai essayé de mettre l'essentiel du code et c'est à chaqu'1 de mettre ces propres conditions

Merci!
2