JAVA + ACCESS

JAVA + ACCESS - Java - Programmation

Marsh Posté le 05-05-2004 à 21:19:08    

Voila mon pb : je veux interfacer une base de donnees access avec une interface en java.
Donc pour le moment je me contente de coder les principales fonctions d'ajout/supression/modification.
 
Des informations concernant des etablissements sont affichés dans des zones de texte en fonction de l'établissement sélectionné (par son nom) dans une liste déroulante.
 
Lorsque ces informations sont affichées, un click sur le bouton modifier, permet de modifier l'enregistrement correspondant.
 
Mon premier problème est que lorsque je met à jour l'enregistrement je voudrais que le nom de l'établissement soit mis à jour.
 
Hors j'obtient le message suivant : "État de curseur non valide".
 
 
Mon second problème est que je ne parvient pas à insérer la variable "numeroetab" dans ma requete de mise a jour a la place de la valeur 6:
 
String updateString = "UPDATE ETABLISSEMENT " +
                               "SET nomet = '"+sNom+"' " +
                               "WHERE numet = 6";
 
Voila je m'excuse pour la naiveté de mes questions mais je suis débutant en JAVA.
 
Indication seule les fonctions : ItemStateChanged, recupdonnee, modif et recuptab sont concernés par mes problèmes.
 
PS : je code sous JBuilder et je vous joint le code complet de classe.
 

Code :
  1. //Import + package
  2. package projetjavaiie;
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.awt.event.ActionEvent;
  7. //package pour les acces bd
  8. import java.io.*;
  9. import java.util.*;
  10. import java.sql.*;
  11. //Constructeur/////////////////////////////////////////////////////////////////
  12. public class Etablissement extends JPanel implements ActionListener, ItemListener {
  13.   //definition des objet de la fenetre
  14.   public JTextField NomE = new JTextField();
  15.   JTextField Adr = new JTextField();
  16.   JTextField Tel = new JTextField();
  17.   JTextField Fax = new JTextField();
  18.   JTextField MailEt = new JTextField();
  19.   JTextField SiteEt = new JTextField();
  20.   JTextField CodeEt = new JTextField();
  21.   JLabel Lnom = new JLabel();
  22.   JLabel Ladr = new JLabel();
  23.   JLabel Ltel = new JLabel();
  24.   JLabel Lfax = new JLabel();
  25.   JLabel Lmail = new JLabel();
  26.   JLabel Lsite = new JLabel();
  27.   JLabel Lcode = new JLabel();
  28.   JButton AjoutDonnees = new JButton();
  29.   JButton RAZ = new JButton();
  30.   JButton Modifier = new JButton();
  31.   JLabel Titre = new JLabel();
  32.   JComboBox listeetab = new JComboBox();
  33.   Vector Snom = new Vector();
  34.   Vector Snum = new Vector();
  35.   Vector Sadresse = new Vector();
  36.   Vector Smail = new Vector();
  37.   Vector Stel = new Vector();
  38.   Vector Sfax = new Vector();
  39.   Vector Ssite = new Vector();
  40.   Vector Scode = new Vector();
  41.   int numeroetab=0;
  42. //Si la valeur de la liste change//////////////////////////////////////////////
  43.   public void itemStateChanged(ItemEvent ie)
  44.    {
  45.      if(ie.getSource()==listeetab)
  46.      {
  47.        int num = listeetab.getSelectedIndex();
  48.        NomE.setText((String) Snom.elementAt(num));
  49.        Adr.setText((String) Sadresse.elementAt(num));
  50.        MailEt.setText((String) Smail.elementAt(num));
  51.        Tel.setText((String) Stel.elementAt(num));
  52.        Fax.setText((String) Sfax.elementAt(num));
  53.        SiteEt.setText((String) Ssite.elementAt(num));
  54.        CodeEt.setText((String) Scode.elementAt(num));
  55.        recupetab();
  56.        System.out.println(numeroetab);
  57.        //System.out.println(listeetab.getSelectedIndex());
  58.      }
  59.    }
  60. ///////////////////////////////////////////////////////////////////////////////
  61. //Methode//////////////////////////////////////////////////////////////////////
  62.   public Etablissement() {
  63.         //Ajout de l'ecoute des evenements du boutton
  64.         listeetab.addActionListener(this);
  65.         setBackground(Color.yellow);
  66.     try {
  67.       jbInit();
  68.       listeetab.addItemListener(this);
  69.       AjoutDonnees.addActionListener(this);
  70.       RAZ.addActionListener(this);
  71.       Modifier.addActionListener(this);
  72.     }
  73.     catch(Exception e) {
  74.       e.printStackTrace();
  75.     }
  76.   }
  77. ///////////////////////////////////////////////////////////////////////////////
  78. //initialisation des objet sur la fenetre//////////////////////////////////////
  79.   private void jbInit() throws Exception
  80.   {
  81.     //definition de proprietes de objets
  82.     Titre.setFont(new java.awt.Font("Dialog", 1, 20));
  83.     Titre.setText("Edition Etablissement" );
  84.     Titre.setBounds(new Rectangle(83, 7, 225, 25));
  85.     NomE.setText("" );
  86.     Adr.setText("" );
  87.     Tel.setText("" );
  88.     Fax.setText("" );
  89.     MailEt.setText("" );
  90.     SiteEt.setText("" );
  91.     CodeEt.setText("" );
  92.     NomE.setBounds(130,40,100,17);
  93.     Adr.setBounds(130,70,100,17);
  94.     Tel.setBounds(130,100,100,17);
  95.     Fax.setBounds(130,130,100,17);
  96.     MailEt.setBounds(130,160,100,17);
  97.     SiteEt.setBounds(130,190,100,17);
  98.     CodeEt.setBounds(130,220,100,17);
  99.     Lnom.setText("Nom Etablissement :" );
  100.     Ladr.setText("Adresse :" );
  101.     Ltel.setText("Telephone :" );
  102.     Lfax.setText("Fax :" );
  103.     Lmail.setText("E-Mail :" );
  104.     Lsite.setText("Site :" );
  105.     Lcode.setText("Code Etablissement :" );
  106.     Lnom.setBounds(10,36,130,25);
  107.     Ladr.setBounds(10,66,100,25);
  108.     Ltel.setBounds(10,96,100,25);
  109.     Lfax.setBounds(10,126,100,25);
  110.     Lmail.setBounds(10,156,100,25);
  111.     Lsite.setBounds(10,186,100,25);
  112.     Lcode.setBounds(new Rectangle(10, 216, 130, 25));
  113.     AjoutDonnees.setBounds(new Rectangle(125, 256, 119, 28));
  114.     AjoutDonnees.setText("Ajout Données" );
  115.     RAZ.setBounds(new Rectangle(5, 256, 115, 28));
  116.     RAZ.setText("Remise à zéro" );
  117.     Modifier.setBounds(new Rectangle(245, 256, 115, 28));
  118.     Modifier.setText("Modifier" );
  119.     listeetab.setSelectedItem(NomE);
  120.     listeetab.setBounds(new Rectangle(256, 40, 102, 20));
  121.     this.setRequestFocusEnabled(true);
  122.     this.setToolTipText("" );
  123.     //initialisation de la fenetre
  124.     this.setLayout(null);
  125.     //ajout des objets
  126.     this.add(NomE, null);
  127.     this.add(Adr, null);
  128.     this.add(Tel, null);
  129.     this.add(Fax, null);
  130.     this.add(MailEt, null);
  131.     this.add(SiteEt, null);
  132.     this.add(CodeEt, null);
  133.     this.add(Lnom, null);
  134.     this.add(Ladr, null);
  135.     this.add(Ltel, null);
  136.     this.add(Lfax, null);
  137.     this.add(Lmail, null);
  138.     this.add(Lsite, null);
  139.     this.add(Lcode, null);
  140.     this.add(AjoutDonnees, null);
  141.     this.add(RAZ, null);
  142.     this.add(Modifier, null);
  143.     this.add(Titre, null);
  144.     this.add(listeetab, null);
  145.     recupDonnee();
  146.   }
  147. //Ecoute des evenements sur objet//////////////////////////////////////////////
  148.   public void actionPerformed(ActionEvent action) {
  149.     Object ob = action.getSource();
  150.     if (ob == AjoutDonnees)
  151.     {
  152.       ajoutDonnee();
  153.     }
  154.     if (ob == RAZ)
  155.     {
  156.       raz();
  157.     }
  158.     if (ob == Modifier)
  159.     {
  160.       modif();
  161.     }
  162.   }
  163. ///////////////////////////////////////////////////////////////////////////////
  164. //Ajout des donnees dans la BDD////////////////////////////////////////////////
  165.   public void ajoutDonnee()
  166.   {
  167.         //On récupere les donnees du formulaire
  168.         String sNom = NomE.getText();
  169.         String sAdr = Adr.getText();
  170.         String sTel = Tel.getText();
  171.         String sFax = Fax.getText();
  172.         String sMail = MailEt.getText();
  173.         String sSite = SiteEt.getText();
  174.         String sCode = CodeEt.getText();
  175.         //driver de connexion a la base de donnees
  176.         String data = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb); DBQ=D:/MesDocuments/JAVAIIE/ProjetJAVAIIE/JAVA.mdb;";
  177.         try{
  178.           //connexion a la base de donnees
  179.           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  180.           Connection con = DriverManager.getConnection(data,"","" );
  181.           Statement st = con.createStatement();
  182.           //definition et execution de requete
  183.           String maj = "INSERT INTO ETABLISSEMENT (nomet, adresseet, telet, faxet, mailet, siteet, codeet) VALUES ('"+sNom+"','"+sAdr+"','"+sTel+"','"+sFax+"','"+sMail+"','"+sSite+"','"+sCode+"')";
  184.           st.executeUpdate(maj);
  185.           recupDonnee();
  186.         }
  187.         catch (Exception e){System.out.println("erreur :" +e.toString());}
  188.   }
  189. ///////////////////////////////////////////////////////////////////////////////
  190. //Recuperation des donnees pour affichage dans la liste////////////////////////
  191.   public void recupDonnee()
  192.          {
  193.          String data = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb); DBQ=D:/MesDocuments/JAVAIIE/ProjetJAVAIIE/JAVA.mdb;";
  194.          Snom.removeAllElements();
  195.          //Snum.removeAllElements();
  196.          try {
  197.            //int num = ListeE.getSelectedIndex();
  198.            //int numero;
  199.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  200.             Connection con = DriverManager.getConnection(data,"","" );
  201.             Statement st = con.createStatement();
  202.             ResultSet rs = st.executeQuery("SELECT * FROM ETABLISSEMENT" );
  203.             //ResultSet rs2 = st.executeQuery("SELECT numet FROM ETABLISSEMENT where nomet='"+(String) Snom.elementAt(num)+"';" );
  204.             while (rs.next())
  205.             {
  206.               //numeroetab= rs.getInt("numet" );
  207.               Snom.addElement(rs.getString("nomet" ));
  208.               Sadresse.addElement(rs.getString("adresseet" ));
  209.               Smail.addElement(rs.getString("mailet" ));
  210.               Stel.addElement(rs.getString("telet" ));
  211.               Sfax.addElement(rs.getString("faxet" ));
  212.               Ssite.addElement(rs.getString("siteet" ));
  213.               Scode.addElement(rs.getString("codeet" ));
  214.             }
  215.             listeetab.removeAllItems();
  216.             for (int i=0; i<Snom.size(); i++)
  217.             {
  218.               listeetab.addItem((String)Snom.elementAt(i));
  219.             }
  220.             rs.close();
  221.             st.close();
  222.             con.close();
  223.          }
  224.        catch(Exception e){System.out.println("erreur :" +e.toString());}
  225.          }
  226. ///////////////////////////////////////////////////////////////////////////////
  227. ///remise a zero des valeurs///////////////////////////////////////////////////
  228.          public void raz()
  229.          {
  230.            NomE.setText("" );
  231.            Adr.setText("" );
  232.            Tel.setText("" );
  233.            Fax.setText("" );
  234.            MailEt.setText("" );
  235.            SiteEt.setText("" );
  236.            CodeEt.setText("" );
  237.          }
  238. ///Modification de l'enregistrement selectionne///////////////////////////////
  239.          public void modif()
  240.          {
  241.          String data = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb); DBQ=D:/MesDocuments/JAVAIIE/ProjetJAVAIIE/JAVA.mdb;";
  242.          Snom.removeAllElements();
  243.         String sNom = NomE.getText();
  244.         String sAdr = Adr.getText();
  245.         String sTel = Tel.getText();
  246.         String sFax = Fax.getText();
  247.         String sMail = MailEt.getText();
  248.         String sSite = SiteEt.getText();
  249.         String sCode = CodeEt.getText();
  250.         String updateString = "UPDATE ETABLISSEMENT " +
  251.                                "SET nomet = '"+sNom+"' " +
  252.                                "WHERE numet = '"+numeroetab+"'";
  253.          try {
  254.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  255.             Connection con = DriverManager.getConnection(data,"","" );
  256.             Statement st = con.createStatement();
  257.             System.out.println(numeroetab);
  258.             st.executeUpdate(updateString);
  259.             //listeetab.removeAllItems();
  260.             //recupDonnee();
  261.             for (int i=0; i<Snom.size(); i++)
  262.             {
  263.               listeetab.addItem((String)Snom.elementAt(i));
  264.             }
  265.             st.close();
  266.          }
  267.        catch(Exception e){System.out.println("erreur :" +e.toString());}
  268.          }
  269. ///recuperation du numero de l'etablissment correspondant a la liste pour traitement///////
  270.          public void recupetab()
  271.   {
  272.     String data = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb); DBQ=D:/MesDocuments/JAVAIIE/ProjetJAVAIIE/JAVA.mdb;";
  273.        try{
  274.          //connexion a la base de donnees
  275.          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  276.          Connection con2 = DriverManager.getConnection(data,"","" );
  277.          Statement st2 = con2.createStatement();
  278.          //definition et execution de requete
  279.          ResultSet rs2 = st2.executeQuery("SELECT * FROM ETABLISSEMENT " );
  280.          int i=1;
  281.          numeroetab=0;
  282.          System.out.println(listeetab.getSelectedIndex()+1);
  283.          while (i != (listeetab.getSelectedIndex()+1))
  284.            {
  285.              i=i+1;
  286.              rs2.next();
  287.            }
  288.          numeroetab= rs2.getInt("numet" );
  289.          //numeroetab= rs.getInt(0);
  290.          rs2.close();
  291.          //rs.close();
  292.          //st.close();
  293.          //listeetab.removeAllItems();
  294.          //recupDonnee();
  295.        }
  296.        catch (Exception e){System.out.println("erreur :" +e.toString());}
  297.   }
  298. /////////////////////////////////////////////////////////////////////////////////////
  299. }

Reply

Marsh Posté le 05-05-2004 à 21:19:08   

Reply

Marsh Posté le 05-05-2004 à 22:00:33    

n'hésitez pas à me dire si je ne suis pas assez clair, ou si vous avez besoin d'infos...

Reply

Marsh Posté le 06-05-2004 à 10:42:56    

up

Reply

Marsh Posté le 06-05-2004 à 13:54:44    

Citation :

je ne parvient pas à insérer la variable "numeroetab" dans ma requete de mise a jour


C'est quoi le problème ? Qu'est ce qui fait que tu n'y arrives pas ?

Reply

Marsh Posté le 06-05-2004 à 15:46:23    

ben en fait il me sort que le type est incompatible alors que dans le code la variable est de type int et que dans la bdd c aussi une variable de type int le problème se situe la :
 
String updateString = "UPDATE ETABLISSEMENT " +  
                                     "SET nomet = '"+sNom+"' " +  
                                     "WHERE numet = '"+numeroetab+"'";

Reply

Marsh Posté le 06-05-2004 à 15:55:22    

un nombre ca se met pas entre '', mets directement la valeur :  "WHERE numet = "+numeroetab;  
 
sinon, tu peux aussi utliser les PreparedStatement pour éviter de te prendre la tête avec ce genre de truc ...

Reply

Marsh Posté le 06-05-2004 à 18:56:23    

ok merci de ta reponse j'essaie ça de suite

Reply

Marsh Posté le 06-05-2004 à 19:03:14    

ça maaaaaaaaaaaaarcheuuuuuuuu merci beaucoup sinon qi quelqu'un de courageux a une idee pour mon autre pb je suis toujours preneur mais merci beaucoup de ton aide benou

Reply

Marsh Posté le 06-05-2004 à 19:20:35    

benou a écrit :

un nombre ca se met pas entre '', mets directement la valeur :  "WHERE numet = "+numeroetab;  
 
sinon, tu peux aussi utliser les PreparedStatement pour éviter de te prendre la tête avec ce genre de truc ...


 
PreparedStatement putain!

Reply

Marsh Posté le 06-05-2004 à 19:25:06    

c'etait vraiment indispensable les 400 lignes de code inutile [:autobot]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-05-2004 à 19:25:06   

Reply

Marsh Posté le 06-05-2004 à 19:28:34    

the real moins moins a écrit :

c'etait vraiment indispensable les 400 lignes de code inutile [:autobot]


 
c'est l'interface utilisateur, bien brouillée et greffé sur le code business :jap:

Reply

Marsh Posté le 06-05-2004 à 19:30:03    

j'aime bien aussi le commentaire
//Constructeur/////////////////////////////////////////////////////////
au dessus de la definition de classe
 
et  
//Methode/////////////////////////////////////////////////////////
au dessus du constructeur
(qui au passage est au milieu de 2 methodes)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-05-2004 à 19:36:38    

les 2 zozos là, vous faites quoi à part critiquer ?
 
sinon, j'ai pas compris ton 1er problème ...

Reply

Marsh Posté le 06-05-2004 à 19:37:31    

moi , rien.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-05-2004 à 19:38:32    

benou a écrit :

les 2 zozos là, vous faites quoi à part critiquer ?
 
sinon, j'ai pas compris ton 1er problème ...


 
bin lui dire d'utiliser un PreparedStatement au lieu de créer du SQL hardcodé, bourrain staÿle

Reply

Marsh Posté le 06-05-2004 à 19:41:54    

DarkLord a écrit :

bin lui dire d'utiliser un PreparedStatement au lieu de créer du SQL hardcodé, bourrain staÿle


y a des façons plus normales de le dire :o

Reply

Marsh Posté le 06-05-2004 à 19:42:40    

benou a écrit :

y a des façons plus normales de le dire :o

[:mlc][:kiki]
on est pas sa mère non plus


Message édité par the real moins moins le 06-05-2004 à 19:42:52

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-05-2004 à 21:33:34    

j'insiste sur le fait que je suis un newb's en JAVA, voir ça m'emmerde carrément dans la mesure ou j'aime pas ça (C++ powa)
 
Ensuite g mis tout le code de la classe pour que l'on evite de me demander des morceaux de code que je n'aurais pas mis.
 
Mes commentaires c n'importe koi, effectivement dans la mesure ou je suis en train de changer tout ce que je fais au fur et a mesure pour voir ce qui marche le mieux (quand ça marche) donc le commentaire ne correspond pas vraiment au code (voir pas du tout)
 
Enfin j'essaie effectivement les PreparedStatement sur vos conseils.
 
Maintenant que ceux qui s'y connaissent soit un peu constructifs et me dise exactement ce qu'il y a de bien dans le java (sans me sortir la grosse connerie de la compatibilité qui si elle est réelle, n'en reste pas moins tres contraignante)

Reply

Marsh Posté le 06-05-2004 à 22:01:50    

frere tuck a écrit :

n'en reste pas moins tres contraignante


 :heink:  
 
et les trolls sur les langages c'est pas dans ce topic

Reply

Marsh Posté le 06-05-2004 à 22:31:38    

C t pas pour un troll c'était une réelle demande d'infos puisque je vois que vous vous y connaissez. M'enfin vous avez raison ce n'est peut être pas l'endroit pour ça.
 
Sinon j'ai appliquer vos conseils :
 

Code :
  1. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
  2.          Connection con = DriverManager.getConnection(data,"","" );
  3.          Statement st = con.createStatement();
  4.          System.out.println(nometab);
  5.          PreparedStatement pstmt = con.prepareStatement("SELECT numet FROM ETABLISSEMENT WHERE nomet = ?" );
  6.          pstmt.setString(1, nometab);
  7.          ResultSet rs = pstmt.executeQuery();
  8.          int truc = rs.getInt("numet" );


 
et lorsque je veux récupérer le numero de mon etablissement j'obtient :"etat de curseur non valide"  
 
c'est toujours le meme message qu'auparavant et je ne comprend pas d'ou cela vient. Un ultime coup de main siouplait.

Reply

Marsh Posté le 06-05-2004 à 22:33:48    

bah regarde dans la doc de ta base à quoi correspond cette erreur


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-05-2004 à 23:04:20    

ben soi disant que ce serait que je demanderai a lire une donnee qui n'existerai pas mais je ne suis pas plus avancé

Reply

Marsh Posté le 06-05-2004 à 23:07:37    

EUH HA OUAIS
bon , tu vas relire la doc de ResultSet vite fait toi [:itm]
ou au moins un tuto sur jdbc.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-05-2004 à 23:44:21    

OUAI enfin la entre lire la doc de ma base et relire la doc de ResultSet y quand même une sacré différence.
 
Soit dit en passant il reste assez désagréable de demander des infos a des gens qui s'adresse à toi comme a un demeuré. Le coup de "tu vas relire la doc" (syndrome du "man" dès que tu poses une question a un connaisseur de linux) c un peu limite quand même, surtout quand j'ai bien spécifié que je suis un super débutant en JAVA.
 
Néanmoins j'ai mon info ce qui est un peu le principe de l'entraide sur des forums (certains ont tendance à l'oublier) alors je vous remercie pour votre aide (un peu agaçant quand même le coup du je le sais mais je te nargue) et pour m'avoir aiguiller dans mes recherche.

Reply

Marsh Posté le 07-05-2004 à 00:50:56    

faut que tu fasse un next sur le resultset.
 
une resultset ca s'utilise habituellement dans un while (rs.next())
 
mais comme le dit moins moins, ce genre de truc se trouve dans n'importe quel tutorial jdbc [:spamafote]

Reply

Marsh Posté le 07-05-2004 à 09:19:51    

Merci Benou mais j'ai bien trouvé ma réponse, c'était effectivement un next dans un boucle while.
Je ne conteste pas que la solution se trouve dans une doc JDBC mais ce que je dis simplement c'est qu'il faut encore savoir ou chercher (et quand on est un newb c pas ça)

Reply

Marsh Posté le 07-05-2004 à 09:37:12    

benou a écrit :

mais comme le dit moins moins, ce genre de truc se trouve dans n'importe quel tutorial jdbc [:spamafote]

ouais mais c'est plus facile de venir le demander sur un forum, y'a des gens qui sont là et qui et que ça à foutre [:kiki]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 07-05-2004 à 23:02:15    

Je clarifie une fois pour toute : dans mon cas je planche sur un projet en JAVA pour mon école... je suis donc un super noobs et quand j'ai un probleme du genre de  celui que j'ai eu avec les curseurs, ça n'est pas que je poste un message parce que je suis trop paresseux pour chercher (car j'ai bel et bien fait des recherches) simplement je ne savais pas OU chercher. Dorénavant cette lacune est comblé. Si j'avais pu trouver la réponse sur google je l'aurai fait, j'aurai obtenu une réponse beaucoup plus vite alors dans la mesure ou on est déjà embeté par un probleme il reste assez peu agéable d'avoir l'impression qu'on se faout de sa gueule en plus. Maintenant il est vrai moins moins que si tu viens sur le forum uniquement pour etre non seulement peu constructif, mais en plus casse bonbon c'est réussi. Sur ce je cloture en vous remerciant pour votre aide.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed