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 VCL Delphi Discussion :

Delphi & DOA


Sujet :

Composants VCL Delphi

  1. #41
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par juju1988 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure Tfrm_TestConnectOracleDBGrid.btnOKClick(Sender: TObject);
    begin
      ShowMessage(txtRequete.Text);
      OracleDataSet1.SQL.Add(txtRequete.Text);
      OracleDataSet1.Open;
    end;
    et j'ai une erreur ORA-00933 : la commande SQL ne se termine pas correctement alors que ma commande SQL est toute bête :

    J'ai essayé avec un ; mais je vois pas ce qu'il n'arrive pas à gérer là ...
    Il ne manque pas un Clear ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      ShowMessage(txtRequete.Text);
      OracleDataSet1.SQL.Clear;
      OracleDataSet1.SQL.Add(txtRequete.Text);
      OracleDataSet1.Open;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #42
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Je suis sur que TestADO2.zip que j'ai fait pour un autre sujet devrait te plaire

    c'est ADO et non DOA, il faut changer la chaine de connexion pour utiliser ton DSN Oracle !
    Cela peut t'inspirer

    Question conne : "param2" c'est le nom d'une table ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #43
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Oui il manquait le .Clear merci
    Par contre si je veux re-saisir une requête cela ne fonctionne pas et em garde mon ancienne j'ai tenté un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure Tfrm_TestConnectOracleDBGrid.btnOKClick(Sender: TObject);
    begin
      DBGrid1.CleanupInstance;  OracleDataSet1.SQL.Clear;
      OracleDataSet1.SQL.Add(txtRequete.Text);
      OracleDataSet1.Open;
    end;
    Mais sans succès...

    Oui param2 c'est le nom d'une table paramètre il me semble (on m'a donné la requête pour que je teste).

    Oui je pense que je vais jeter un coup d'oeil j'ai commencé à regarder hier pour DBExpress où il s'agissait de sauvegarder dans un fichier xml et de recharger ensuite dans le DBGrid ... Mais dans la fenêtre de connexion qu'ils proposent on ne peut sélectionner la base de données...enfin je n'ai pas pousssé plus loin pour le moment...
    Pourquoi tu me conseilles plutôt ADO que DOA ? DOA avait l'air bien foutu après je sais pas du tout ... je comptais tous les tester avant de choisir...
    Tu as le lien du sujet ? J'ai récupéré le .zip mais je n'arrive pas à accéder au sujet...
    Windows XP
    Delphi 7

    WinDev Mobile 17

  4. #44
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Euh, tu as lu l'aide de CleanupInstance
    C'est une fonction qu'il ne faut typiquement pas utilisé !
    Pitié, arrête de tenter des trucs au pif !
    Le marché de l'informatique est saturé de développeur médiocre, évite d'en devenir une, pour le moment ... c'est mal parti !

    Achève de libérer les chaînes longues, les variants et les variables d'interface d'une classe.

    void __fastcall CleanupInstance();

    Description

    N'appelez pas directement la méthode CleanupInstance. CleanupInstance est appelée automatiquement quand l'instance d'objet est détruite à l'aide du mot clé delete.

    CleanupInstance libère toutes les chaînes longues et les variants. Elle définit à vide les chaînes longues et les variants à Unassigned.
    tu n'as pas compris que le DBGrid n'est qu'une "vue" du DataSet lié au DataSource !
    Open pour afficher, donc Close pour masquer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure Tfrm_TestConnectOracleDBGrid.btnOKClick(Sender: TObject);
    begin
      OracleDataSet1.Close;
      OracleDataSet1.SQL.Text := txtRequete.Text;
      DataSource1.DataSet := OracleDataSet1;
      DBGrid1.DataSource := DataSource1;
      OracleDataSet1.Open;
    end;
    Version ClientDataSet;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure Tfrm_TestConnectOracleDBGrid.btnOKClick(Sender: TObject);
    begin
      ClientDataSet.Close;
      DataSource1.DataSet := ClientDataSet;
      DBGrid1.DataSource := DataSource1;
     
      OracleDataSet1.Close;
      OracleDataSet1.SQL.Text := txtRequete.Text;
      OracleDataSet1.Open;
      CopieDataSet(OracleDataSet1, ClientDataSet);
      OracleDataSet1.Close; // une fois la copie effectué, on ferme
      // ClientDataSet est lui ouvert par CreateDataSet dans CopieDataSet
    end;

    Le sujet concerne l'utilisation d'Image dans un BLOB avec ADO, tu n'es pas encore prête pour cela !
    Mon exemple était pour montrer les diverses solutions pour utiliser une Query !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #45
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Merci pour de développeur médiocre c'est vrai que quand on est stagiaire et pas encore complètement dans le monde du travail on a vraiment besoin d'entendre ça...

    Si j'avais compris pour le datasource et modifié mon code en conséquence avant ta réponse, mais pour le cleanupinstance il me semblait l'utiliser quand j'étais en BTS c'est pour ça que j'ai pas regardé l'aide, mais j'aurais dû apparemment.
    Merci ça fonctionne!
    Code fini :
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, StdCtrls, Oracle, DB, OracleData, DBClient;
     
    type
      Tfrm_TestConnectOracleDBGrid = class(TForm)
        bt_Connect: TButton;
        bt_Req: TButton;
        DBGrid1: TDBGrid;
        bt_Quitter: TButton;
        OracleSession1: TOracleSession;
        OracleDataSet1: TOracleDataSet;
        DataSource1: TDataSource;
        bt_Deco: TButton;
        OracleLogon1: TOracleLogon;
        ClientDataSet: TClientDataSet;
        txtRequete: TEdit;
        btnOK: TButton;
        procedure bt_QuitterClick(Sender: TObject);
        procedure bt_ConnectClick(Sender: TObject);
        procedure bt_ReqClick(Sender: TObject);
        procedure bt_DecoClick(Sender: TObject);
        procedure btnOKClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      frm_TestConnectOracleDBGrid: Tfrm_TestConnectOracleDBGrid;
      username : String;
      password : String;
      database : String;
      procedure CopieDataSet(OracleDataSet : TOracleDataSet; ClientDataSet : TClientDataSet);
     
    implementation
     
    {$R *.dfm}
     
    procedure Tfrm_TestConnectOracleDBGrid.bt_QuitterClick(Sender: TObject);
    begin
    frm_TestConnectOracleDBGrid.Close;
    end;
     
    procedure Tfrm_TestConnectOracleDBGrid.bt_ConnectClick(Sender: TObject);
    begin
    OracleLogon1.Execute;
    username := OracleSession1.LogonUsername;
    password := OracleSession1.LogonPassword;
    database := OracleSession1.LogonDatabase;
    end;
     
    procedure Tfrm_TestConnectOracleDBGrid.bt_ReqClick(Sender: TObject);
    begin
      if not OracleSession1.Connected then
      begin
        OracleSession1.LogonUsername := username;
        OracleSession1.LogonPassword := password;
        OracleSession1.LogonDatabase := database;
        OracleSession1.LogOn;
        ShowMessage('Connecté');
      end;
      OracleDataSet1.Close;
      OracleDataSet1.SQL.Text := 'Select * from entxres';
      DataSource1.DataSet := OracleDataSet1;
      DBGrid1.DataSource := DataSource1;
      OracleDataSet1.Open;
     
      CopieDataSet(OracleDataSet1, ClientDataSet);
      OracleDataSet1.Master := nil;
      ClientDataSet.MasterSource := nil;
      DataSource1.DataSet := ClientDataSet;
      DBGrid1.DataSource := DataSource1;
      OracleDataSet1.Close;
     
      OracleSession1.LogOff;
      ShowMessage('Déconnecté');
    end;
     
    procedure Tfrm_TestConnectOracleDBGrid.bt_DecoClick(Sender: TObject);
    begin
      OracleSession1.LogOff;
      ShowMessage('Déconnecté');
    end;
     
    procedure CopieDataSet(OracleDataSet : TOracleDataSet; ClientDataSet : TClientDataSet);
    var
      i : integer;
    begin
    ClientDataSet.Close();
    ClientDataSet.FieldDefs.Clear();
    for i := 0 to OracleDataSet.FieldCount - 1 do
      ClientDataSet.FieldDefs.Add(OracleDataSet.Fields[i].FieldName, OracleDataSet.Fields[i].DataType, OracleDataSet.Fields[i].Size);
      ClientDataSet.CreateDataSet();
      while not OracleDataSet.Eof do
      begin
        ClientDataSet.Append;
        for i := 0 to OracleDataSet.FieldCount - 1 do
          ClientDataSet.Fields[i].Value := OracleDataSet.Fields[i].Value;
          ClientDataSet.Post;
          OracleDataSet.Next;
      end;
    end;
     
    procedure Tfrm_TestConnectOracleDBGrid.btnOKClick(Sender: TObject);
    begin
      if not OracleSession1.Connected then
      begin
        OracleSession1.LogonUsername := username;
        OracleSession1.LogonPassword := password;
        OracleSession1.LogonDatabase := database;
        OracleSession1.LogOn;
        ShowMessage('Connecté');
      end;
      OracleDataSet1.Close;
      ClientDataSet.Close;
      OracleDataSet1.SQL.Text := txtRequete.Text;
      DataSource1.DataSet := OracleDataSet1;
      DBGrid1.DataSource := DataSource1;
      OracleDataSet1.Open;
     
      CopieDataSet(OracleDataSet1, ClientDataSet);
      OracleDataSet1.Master := nil;
      ClientDataSet.MasterSource := nil;
      DataSource1.DataSet := ClientDataSet;
      DBGrid1.DataSource := DataSource1;
      OracleDataSet1.Close;
     
      OracleSession1.LogOff;
      ShowMessage('Déconnecté');
    end;
     
    end.
    Tu penses que ADO est mieux que DOA ?
    Windows XP
    Delphi 7

    WinDev Mobile 17

  6. #46
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par juju1988 Voir le message
    Merci pour de développeur médiocre?
    Tu n'as tout lu !
    ... évite d'en devenir une ...
    Tu ne l'es pas encore, tu redresse la barre !

    Et puis après tout, je suis un TROLL Mechant !

    ...quand j'étais en BTS ...
    J'ai fait un DUT et une licence Pro, 3 ans d'apprentissage, stagiaire je connais !
    La seule chose utile que j'ai appris en 3 ans à l'école fut la recursivité, j'ai codé un explorateur de base de registre en pur itératif (mon 3eme projet d'entreprise servant à nettoyer la BDR parce Delphi 4 laissait trainer plein de truc), c'était bien lent et compliqué, après le cours sur la récursivité, j'ai peu diviser par 5 le temps du code !
    J'ai appris plus en 2 mois en entreprise que 3 ans à l'école !
    Le pire cela été les cours de Delphi en licence, j'ai séché les 3er TP de Delphi pour aller au Bureau (faire du vrai code en delphi), j'ai eu un bon zéro pointé, j'ai demandé au prof si je pouvais faire les 4 TP durant le temps du 4eme, je pense que j'ai baclé 16h de TP en 2h avec un bon 18/20 (je crois qu'il ma mis -2 parce que j'avais corrigé des erreurs dans sa Tortue)

    Oubli ton BTS, tu vas maintenant apprendre la vraie programmation des véritables entreprises qui doivent boucler des projets sous-vendus, sous-côtés à livrer la veille !

    Citation Envoyé par juju1988 Voir le message
    Tu penses que ADO est mieux que DOA ?
    Je ne connais pas DOA !
    Comme il est dédié à Oracle, il est théoriquement plus rapide !

    Surtout le TOracleQuery qui n'est pas un TDataSet, normalement, si il est codé correctement, on peut espérer un gain x2 ou x3 sur la récupération des données d'un SELECT !

    ADO étant fourni avec Delphi depuis plus de 10 ans (vraiment stable à partir de la 7), je n'ai jamais cherché ailleurs !

    En ce moment, je découvre DBExpress et Sybase, je dirais que c'est comme toutes les lib DB, cela n'as pas un grand intérêt, la DB c'est chiant, le SQL c'est très utile mais vraiment pas fun du tout !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #47
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Moi j'ai suivi tous les tp et tout mais bon ça remonte a y'a 3 ans et j'en reviens pas de la vitesse à laquelle on oublie !! Mais oui je suis d'accord avec toi l'apprentissage cours et entreprise est différent et je sais que je suis trop scolaire je vais m'améliorer mais ça se fera pas comme ça, merci de ton aide en tout cas.

    Pour DOA c'est vrai que la rapidité m'intéresse, parce qu'en fait ce sont des scanners qui vont lire des codes barres pour interroger une base de données : beaucoup de scanners : beaucoup d'interrogation de base il faut que ce soit transparent pour l'utilisateur... et intuitif...

    Genre la fenêtre de connexion LogOn que propose DOA est super bien pour l'utilisateur quoi il peut mettre login mot de passe et choisir une base de donnée...

    Mais je regarde ton programme pour me donner une idée...
    Windows XP
    Delphi 7

    WinDev Mobile 17

  8. #48
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Qu'est-ce que beaucoup ?

    Un de mes programmes servers devait lancer entre 20 et 50 requêtes par seconde, pour piloter un sytème de triage de vêtement (~7000 article/h)
    Le tout sous BDE\Paradox (au bout de 24h de ce traitement, le BDE plantait), la recherche dans la table article des code-barre était désastreuses, heureusement, je n'avais jamais plus de 1000 références simultanément, ce qui permettait d'avoir un mini catalogue calculé en fonction des commandes a dispatcher, une recherche sur 1000 contre 300000, il n'y a pas photo !

    Impact d'un SELECT sur une table de 1000 à 300000 records !
    Paradox, EAN13 en CHAR(13), c'est 1 ms à 120 secondes (même avec Index)
    Paradox, EAN13 en 2 Champs INT, c'est 1 ms à 30 secondes
    Machine : P4 1,6Ghz 1Go RAM - Win2K SP4

    Avec MySQL 4.1, EAN13 en CHAR(13), c'est 0,5 ms à 5 ms
    Avec MySQL 4.1, EAN13 en LargeInt, c'est 0,1 ms à 1 ms
    Machine : P4 1,4Ghz 512Mo RAM - Win2K SP2

    Même un vieux MySQL 4.1 fourni déjà des temps formidable !
    sur un vrai server avec un MySQL 5 bien configuré, les temps sont évidemment meilleure !

    Toujours tester sur la machine la plus pourri du parc !
    Je connais certains développeur qui doivent utiliser des Octo-Core et 8Go RAM pour faire tourner de petite application PHP !
    Un Développeur Delphi doit savoir affontrer un Win2K obselète du client mais aussi le WinSvr2008 d'un autre client !

    Avec Oracle, tu ne devrais pas avoir de soucis, c'est conçu pour les grands volumes !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #49
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Ok je te remercie pour ces informations !
    Windows XP
    Delphi 7

    WinDev Mobile 17

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Delphi 7 et DOA : valeurs nulles
    Par delphim dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/11/2004, 09h18
  2. [delphi 7 / DOA] valeur null dans setvariable
    Par delphim dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/11/2004, 10h14
  3. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  4. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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