IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

JTable Base de données Access


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 70
    Points : 30
    Points
    30
    Par défaut JTable Base de données Access
    Bonjour tous le monde

    j'ai un problème qui semble pour plusieurs d'entre vous banale mais coyez moi j'ai travaillé la dessus plus que 24 ans.
    je m'explique j'ai deux table (client) et (intervention), un client peut avoir 0 comme plusieurs interventions alors mon objectif c'est d'avoir les intervations de chaque client sous forme de tableau (Jtable). j'ai reussi à faire un code qui m'affiche qu'une seule ligne(intervention) quelque soit le nombre d'interventions d'un client plusque les colonnes (titres) ne s'affiche pas pourtant j'ai essaye de mentionner la commende de déclaration des colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	     	Object[] cols = {"N° d'intervention", "Date d'entrée", "Date d'intervention", "Date de facturation", "Date de sortie", "Problèmatique", "Coût", "Mode de paiement", "Statut"};
    à l'intérieur comme à l'extérieur du while mais toujours j'arrive pas à afficher les titres (colonnes). je vous laisse si dessous le code que j'ai fait tout en esperant qu'un geek pourra m'aider le plus tot possible. merci d'avance.






    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
                    final String url = "jdbc:odbc:dbrescue"; 
    		     	Connection con = null; 
    		     	Statement requete = null;
    		     	boolean trouv = false;
    				try {
    	     		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
    	     	    con = DriverManager.getConnection(url,"","");
     
    	     		requete = con.createStatement();
     
    	     	ResultSet	resultat1 = requete.executeQuery("select  N_INTERINT, DATE_ENTREE, DATE_INTERINT, DATE_FACTURATION, DATE_SORTIE, PROBLEMATIQUE, DESCRIPTION,  COUT, MODE_PAIEMENT, INTSTATUT, N_CLIENT from Interventioninter where  N_CLIENT ="+Rclient.Nmclient+" ");
     
    	     	Object[] cols = {"N° d'intervention", "Date d'entrée", "Date d'intervention", "Date de facturation", "Date de sortie", "Problèmatique", "Coût", "Mode de paiement", "Statut"};
     
     
         	          while (resultat1.next()) {
     
       	     	           Nveninter = resultat1.getString(1);
            	           Dentreinter= resultat1.getString(2);
            	           Dinterveninter = resultat1.getString(3);
            	           Dfacturinter =resultat1.getString(4);
                	       Dsorinter =resultat1.getString(5);
            	           Pveninter= resultat1.getString(6);
            	           Descripinter =resultat1.getString(7);
            	           Cveninter =resultat1.getString(8);
            	           Modpinter =resultat1.getString(9);        		     	    	          		     	     
            	           Statinter =resultat1.getString(10);
     
     
         	       Object[][] data =  
     
    {{Nveninter, Dentreinter, Dinterveninter, Dfacturinter, Dsorinter, Pveninter, Descripinter, Cveninter, Modpinter,Statinter}};		 
     
     
         	       JTable   tab = new JTable (data, cols);
        		   tab.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        	       tab.setBounds(200,250,800,100);
        		   JScrollPane stop = new JScrollPane(tab);
        		   pan.add(tab);                         }
     
         		     	try {
         		               if (Nveninter == null)
         			                throw new Exception();
     
         		          } catch (Exception e) {     		        	  
         		        	  JLabel  Labeltet=new JLabel("Aucune intervention trouvée"); 
         				     	Labeltet.setFont(new Font("TimesRoman", Font.BOLD, 40));
         				     	Labeltet.setForeground(Color.red);
         				     	Labeltet.setBounds(500,150,500,35);          
         				     	pan.add(Labeltet);        	       			        	 
         		                                 }
     
    				} catch (ClassNotFoundException e1) {
    	     		e1.printStackTrace();
    	     	    } catch (SQLException e2) {
    					e2.printStackTrace();
    				} catch (Exception e3) {
    					e3.printStackTrace();
    				                        }
     
    				finally { 
    				try {con.close();
    				   requete.close();
     
    				         } 
    				catch(final SQLException e1) {e1.printStackTrace();} 
    	                         }

  2. #2
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    salut.
    a vu de nez pour ce code mal organisé, la construction de ton JTable doit être à l'extérieur de la boucle while ainsi que la déclaration de
    l'objet data (qui est une matrice d'après ce que je vois ) et a chaque itération, ajouter une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Nveninter, Dentreinter, Dinterveninter, Dfacturinter, Dsorinter, Pveninter, Descripinter, Cveninter, Modpinter,Statinter
    à data.
    à la fin (fin boucle while) construire ton objet (JTable)

  3. #3
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Allez on en dit plus
    Bonjour, ce que dit Slim_Java est parfaitement vrai. Si vous instanciez votre JTable à l'interieur de votre boucle, ce dernier ne peut contenir que la dernière ligne.
    Procédez par étape.
    En premier, vous devez préparer vos 'deux' jeux de données necéssaire à la construction d'un tableau. La liste des noms des colonnes, et le tableau de tableaux d'objets qui contient les données. Votre boucle ne doit servir qu'à remplir ces deux objets.
    Une fois ces deux objets construits et remplis, il ne vous reste plus qu'à instancier directement JTable avec, ou passer par un DefaultTableModel si vous voulez en profiter pour régler la largeur des colonnes.
    Je préciserai une autre anomalie dans votre code. Comme vous utilisez un JScrollPane pour afficher votre tableau, définir sa position et sa taille via sa méthode setBounds ne sert strictement à rien. C'est au JScrollPane que vous devez définir une position et une dimension et ce en fonction de l'organisation graphique de vos layout.
    Bref, voici un petit code exemple qui affiche une petite fenêtre contenant un JScrollPane affichant une JTable de trois colonnes sur 5 lignes. J'ai volontairement fait en sorte que le jScrollPane n'en affiche que les trois premières afin de visualiser la barre de glissement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import javax.swing.*;
     
    public class exemple extends JFrame {
     
    	public exemple() {
    		super();
    		setLayout(null);
    		setSize(800, 300);
    		setLocationRelativeTo(null);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setTitle("EXEMPLE");
    		initialisation();
    		setVisible(true);
    		}
     
    	private void initialisation() {
    		Object[] nomsColonnes = { "Colonne 1", "Colonne 2", "Colonne 3" };
    		Object[][] donnees = new Object[5][3];
    		for (int i = 0 ; i < 5 ; i++) {
    			for (int o = 0 ; o < 3 ; o++) {
    				donnees[i][o] = "Donnée " + i + o;
    				}
    			}
    		JTable tableau = new JTable(donnees, nomsColonnes);
    		JScrollPane viewer = new JScrollPane(tableau);
    		viewer.setBounds(150, 20, 500, 4*(tableau.getRowHeight()));
    		getContentPane().add(viewer);
    		}
     
    	public static void main(String args[]) {
    		new exemple();
    		}
    	}
    Remarque :
    Si vous vous amusez à modifier quelque peu ce code en supprimant le JScrollPane et dans ce cas en règlant le setBounds du JTable, vous remarquerez qu'il n'y a plus d'entêtes de colonnes. Cela signifie simplement que le JTable (le tableau) et le JTableHeader (l'entete avec les noms des colonnes) sont deux choses totalement différentes. Et en dehors de son intégration dans un JScrollPane qui apparament se charge de mettre en place le JTableHeader, un JTable ne possède naturellement pas d'entetes.
    J'espère vous avoir éclairé de manière pertiente.
    Bonne chance...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/08/2009, 15h40
  2. [débutant] Connection à une base de donnée Access
    Par Lorenzox dans le forum JBuilder
    Réponses: 1
    Dernier message: 25/10/2004, 16h28
  3. Réponses: 15
    Dernier message: 25/10/2004, 11h50
  4. [Déploiement]Base de donnée Access
    Par Giovanny Temgoua dans le forum Bases de données
    Réponses: 9
    Dernier message: 09/08/2004, 20h48
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo