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

JDBC Java Discussion :

Boucle while avec action sur table SQL


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 13
    Points
    13
    Par défaut Boucle while avec action sur table SQL
    Salutations à tous,

    je vais tenter d'expliquer brièvement ce que je voudrais faire avec ma boucle while.
    Je collecter des informations dans ma table "commandes" et "personnel" qui ont notamment les champs suivants : pour "commandes"(MATRAGENT, CODEART,TOTART,...) pour "personnel"(MATRAGENT, SOLDDISPO).
    En fonction du code d'article je dois sélectionner le MATRAGENT et le TOTART de ma table "commandes" pour additionner TOTART à SOLDDISPO de ma table personnel en fonction du MATRAGENT correspondant.
    La récupération des informations se fait correctement, mais la méthode boucle plusieurs fois sur le même MATRAGENT et récupère le SOLDDISPO du matricule précédent dans la table.
    Voici le code source de la méthode qui devrait faire cette opération:

    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
     
    private String sqlQuerySupCom,rechArtSup,rechAgtSD,rechAgtSDMaj,totArtSup,soldDispoArtSup,mAAS,mAASRet;
      private int soldDisposupp,totArtSu,matrAgent;
      private RequestDB selArtSup,selAgtArtSup,majSDAgt;
      private void SupToutCmdes(java.awt.event.ActionEvent evt)                              
      {                                  
        // TODO add your handling code here:
        majSDAgt = new RequestDB();
        selArtSup = new RequestDB();
        selAgtArtSup = new RequestDB();
        soldDisposupp = totArtSu=0;
        rechArtSup = "SELECT c.MATRAGENT , c.TOTART , p.SOLDDISPO FROM commandes AS c, personnel AS p LEFT JOIN personnel ON c.MATRAGENT = p.MATRAGENT WHERE CODEART ='"+codArtSuppress.getText()+"'";
        selArtSup.openMyDataBaseConnection();
     
        if (selArtSup.byStatementQuery(rechArtSup) != null)
        {JOptionPane.showMessageDialog(null,"CODEART : "+codArtSuppress.getText());
          while (selArtSup.myGoNext())
          {
            mAAS=selArtSup.myGetString("c.MATRAGENT");
            mAASRet = mAAS.toString();
            totArtSu=Integer.parseInt(selArtSup.myGetString("c.TOTART"));
            soldDispoArtSup=selArtSup.myGetString("p.SOLDDISPO");
            JOptionPane.showMessageDialog(null,"Matricule à updater 1 : "+
                    mAASRet+" total de l'article à supprimer : "+totArtSu+" Solde Disponible : "+soldDispoArtSup);
     
            JOptionPane.showMessageDialog(null,"SoldDispoArtSup : "+soldDispoArtSup);
     
            soldDisposupp=(Integer.parseInt(soldDispoArtSup))+totArtSu;
            JOptionPane.showMessageDialog(null, "après addition : "+soldDisposupp+" matricule à updater : "+mAASRet);
     
            rechAgtSDMaj = "UPDATE personnel SET SOLDDISPO='"+soldDisposupp+"' WHERE MATRAGENT ='"+ mAAS +"'";
     
            majSDAgt.openMyDataBaseConnection();
     
            majSDAgt.byStatementUpdate(rechAgtSDMaj);
     
     
            majSDAgt.closeMyDataBaseConnection();
     
            selArtSup.myGoNext();
     
          }
     
          selArtSup.myGoNext();
        }
        else
        {
          JOptionPane.showMessageDialog(null, "Aucune commande 96");
        }
        majSDAgt.closeMyDataBaseConnection();
        selArtSup.closeMyDataBaseConnection();
     
      }

    Merci de votre aide car je tourne en rond dessus

    Kamikazbe

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    bon ... j'ai pas lu et je pense que c'est le cas de tout le monde

    Utilise la balise code (#) pour la mise en forme et n'affiche que ce qui est nécessaire ...

    [EDIT] +1 avec le message ci-dessous. N'affiche que le bout de code nécessaire et explique clairement ce qui ne marche pas. Là ça donne pas envie de décortiquer le code pour comprendre ... surtout le matin
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Je comprends rien à ton pb : elle est ou ta boucle while, c'est quoi les trucs que tu veux ajouter, etc. En gros, donne plus de détails clairs

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  4. #4
    Membre actif Avatar de Roy Miro
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 273
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    A la fin du bloc d'instructions de ta boucle while, il faut ajouter cette instruction pour faire avancer l'itération de la boucle.


  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Moi je dirais plutot que ça serait ça (en même temps je ne suis pas sur d'avoir capté) :

    il faudrait que tu fasses ça en une seule requete, genre (à vérifier) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MATRAGENT, TOTART, nvl(SOLDDISPO,0)
    FROM commandes c LEFT JOIN personnel p ON c.MATRAGENT = p.NMATR
    WHERE CODEART ='"+codArtSuppress.getText()+"'
    en même temps, si cette requete est effectuée plusieurs fois, tu devrais passer par un PreparedStatement, ça serait mieux ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/11/2006, 23h04
  2. Réponses: 2
    Dernier message: 29/08/2006, 10h40
  3. Insert avec select sur table avec Trigger d'insertion
    Par bran_noz dans le forum Développement
    Réponses: 5
    Dernier message: 23/12/2005, 14h38
  4. URGENT: tri sur table SQL
    Par clairette dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h53
  5. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07

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