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

avec Java Discussion :

Avancer séquentiellement par bouton


Sujet :

avec Java

  1. #1
    Membre du Club Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Points : 61
    Points
    61
    Par défaut Avancer séquentiellement par bouton
    Bonsoir,

    J'ai un souci avec ce bout de code. Je suis sous Netbeans 7 !

    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
    private void jBDroiteActionPerformed(java.awt.event.ActionEvent evt) {                                         
            try {
                Connection con = SourceDonnees.getConnection();
                try {
                    Statement st = con.createStatement();
                    ResultSet rs = st.executeQuery("SELECT * FROM matable");
                    //avancer séquentiellement d'enregistrement en enregistrement
                    while (rs.next()) {
                        System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString(4) + " " + rs.getString(5) + " " + rs.getString(6));
     
                    }
     
                } finally {
                    con.close();
                }
     
            } catch (SQLException e) {
                System.out.println("Erreur:Anomalie lors de l'execution de la requête : " + e);
            }
        }
    Qui devrait, quand je clique soit sur le bouton droit ou gauche (avancer/reculer) séquentiellement dans ma table. Pour le moment ce n'est pas le cas il reste toujours sur le même enregistrement. Je précise que j'ai au moins 10 entrées dans ma table.

    Pouvez vous m'éclairer !

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Lu,

    Je pense que ton problème c'est le while. Mets un if plutot puisque tu veux juste avancé d'un cran non?

    En esperant que ca t'aide

    ++

  3. #3
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    je dirais qu'à chaque fois que vous appuyez sur le bouton, vous recommencez en fait toute la procédure.
    Donc vous ne sélectionnez pas l'enregistrement suivant de la base de données.
    J'ai du mal à comprendre ce que vous cherchez à faire dans votre code.
    Il vous faudrait un index en variable générale, qui soit incrémenté ou décrémenté en fonction de l'appui sur le bouton correspondant à jBDroiteActionPerformed ou jBGaucheActionPerformed.
    Ceci permettrait d'extraire l'enregistrement correspondant dans la BdD.

    Peut être que je suis complètement hors sujet ?!
    @ bientôt...

    Salut & @+ sur 3W!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Effectivement, il va oublier a chaque fois ou tu en es..

  5. #5
    Membre du Club Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Points : 61
    Points
    61
    Par défaut
    merci pour vos remarques.

    J'ai du mal à comprendre ce que vous cherchez à faire dans votre code.
    Tant que cela ?

    Le but est de sélectionner dans une db un enregistrement pour pouvoir le modifier (si besoin) avant de valider. Voir les boutons avec des fléches sur la capture d'écran ci-dessous.

    ET vous pouvez télécharger l'embryon du logiciel ici. Pour vous donner une idée !

    Avant de poser une question, j'ai cherché sur différents sites et notamment
    et je ne vois pas d'index ?



    Mettre un index... avez-vous une tite piste pour m'éclairer !

    Merci
    Images attachées Images attachées  

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Dans la mesure où c'est un client lourd, on peut créer un statement scrollable et le garder ouvert.
    Ensuite, il suffit d'avancer ou de reculer le curseur du ResultSet.

    Tu as des explications ici.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Bon j'avais rédigé ce message avant que OButterlin poste, donc tant pis je le met quand même .

    C'était juste pour te donner une idée et expliquer l'histoire de l'index. Et l'astuce, c'est que si tu veux te déplacer dans le resultset en fonction des clics, alors il faut charger ce resultset ailleurs. Exemple à la con:

    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
     
        private List<String> loadData() {   
    	List<String> data = new ArrayList<String>();
            try {
                Connection con = SourceDonnees.getConnection();
                try {
                    Statement st = con.createStatement();
                    ResultSet rs = st.executeQuery("SELECT * FROM matable");
                    //avancer séquentiellement d'enregistrement en enregistrement
                    while (rs.next()) {
                    	data.add(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString(4) + " " + rs.getString(5) + " " + rs.getString(6));
                    }
     
                } finally {
                    con.close();
                }
     
            } catch (SQLException e) {
                System.out.println("Erreur:Anomalie lors de l'execution de la requête : " + e);
            }
            return data;
        }
     
    	private List<String> myData = null;
    	private int index = 0;
     
    	private void jBDroiteActionPerformed(java.awt.event.ActionEvent evt) {
    		if(myData==null)
    			myData = loadData();
    		index--;
    		if(index==-1)
    			index+=myData.size();
    		System.out.println(myData.get(index));
    	}
    Je précise que ce code est non testé et non garanti. Purement illustratif, donc...
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre du Club Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Points : 61
    Points
    61
    Par défaut
    un grand merci pour ton bout de code qui fonctionne avec juste un soupçon de modifications.

    pour un info il faut faire un test quand j'arrive à la fin de la base de données sinon cela génère une erreur de type.

    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
    Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 11, Size: 11
    	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    	at java.util.ArrayList.get(ArrayList.java:322)
    	at efs.ui.Comptabilite.jBGaucheActionPerformed(Comptabilite.java:800)
    	at efs.ui.Comptabilite.access$1100(Comptabilite.java:31)
    	at efs.ui.Comptabilite$12.actionPerformed(Comptabilite.java:307)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6288)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    	at java.awt.Component.processEvent(Component.java:6053)
    	at java.awt.Container.processEvent(Container.java:2041)
    	at java.awt.Component.dispatchEventImpl(Component.java:4651)
    	at java.awt.Container.dispatchEventImpl(Container.java:2099)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    	at java.awt.Container.dispatchEventImpl(Container.java:2085)
    	at java.awt.Window.dispatchEventImpl(Window.java:2478)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    	at java.awt.EventQueue.access$000(EventQueue.java:84)
    	at java.awt.EventQueue$1.run(EventQueue.java:602)
    	at java.awt.EventQueue$1.run(EventQueue.java:600)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    	at java.awt.EventQueue$2.run(EventQueue.java:616)
    	at java.awt.EventQueue$2.run(EventQueue.java:614)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ouvrir lien hypertexte par bouton de commande
    Par tomas dans le forum IHM
    Réponses: 4
    Dernier message: 18/06/2007, 08h58
  2. Réponses: 12
    Dernier message: 23/06/2006, 17h07
  3. ajout par bouton
    Par shinrei dans le forum ASP
    Réponses: 7
    Dernier message: 02/06/2006, 12h25
  4. Tri d'une zone de liste par bouton
    Par illight dans le forum Access
    Réponses: 7
    Dernier message: 09/11/2005, 19h39
  5. [VB.NET] ouverture d'une DataGrid par bouton
    Par breizhou dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/04/2005, 18h08

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