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

SAP Crystal Reports Discussion :

[CR] Infos sur l'utilisation de dll


Sujet :

SAP Crystal Reports

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [CR] Infos sur l'utilisation de dll
    Bonjour,

    je voudrais savoir si il est possible d'utiliser gratuitement des dll de crystal reports. Ceci en vue de les redistribuer chez un client. Si oui lesquelles.

    Merci.

  2. #2
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Oui tu peux
    Voici la liste
    • CRAXDRT.DLL*(Click here to see the object/collection list for the properties, methods, and events that are provided Royalty-free.)

      BN4C2nt2.DLL· C2SUPPRT.DLL· CDO32.DLL· CPEAUT32.DLL· CRBAS14.DLL· CRBAS15.DLL· CRBAS15R.DLL· CRCVT01.DLL· CRDB214.DLL· CRFLT14.DLL· CRFLT15.DLL· CRFLT15R.DLL· CRGUP14.DLL· CRIADX07.DLL· CRIADX07R.DLL· CRINF14.DLL· CRINF914.DLL· CROR714.DLL· CROR814.DLL· CRPAIG80.DLL· CRPE32.DLL· CRSYB14.DLL· CRTSLV.DLL· CRUTL14.DLL· CRUTL15.DLL· CRVIEWER.DLL· CRWRAP32.DLL· CRXF_PDF.DLL· CRXF_RTF.DLL· CRXML15.DLL· CRXML15R.DLL CRXML15S.DLL· CRXMLX07.DLL· CRXMLX07R.DLL· CRYSTL32.OCX· EXLATE32.dll· EXPORTMODELLER.DLL· IMPLODE.DLL· LIBCS.DLL· LIBCT.DLL
      · MAPINFOW.PRJ· MAPX30.LIC· MAPX30.OCX· MFC42.DLL· MFCANS32.DLL· MIDLG30.DLL· MIDLIN30.DLL· MITMDL30.DLL· MITMIN30.DLL· MSPX3032.DLL· MSVCIRT.DLL· MSVCP60.DLL· MSVCRT.DLL· MSXB3032.DLL· MXINTL30.DLL· OLEPRO32.DLL· P2BACT.DLL· P2BACT3.DLL· P2BBDE.DLL· P2BBND.DLL· P2BBTRV.DLL· P2BDAO.DLL· P2BXBSE.DLL· P2CTBTRV.DLL· P2CTDAO.DLL· P2IRACT.DLL· P2IRACT3.DLL· P2IRDAO.DLL· P2IXBSE.DLL· P2LDB2.DLL· P2LIFMX.DLL· P2LODBC.DLL· P2LORA7.DLL· P2LSQL.DLL· P2LSYB10.DLL· P2MOLAP.DLL· P2SACL.DLL· P2SBAAN.DLL· P2SDB2.DLL· P2SEVT.DLL· P2SEXSR.DLL· P2SFS.DLL· P2SIFMX.DLL· P2SMAPI.DLL· P2SMCUBE.DLL· P2SMON.DLL· P2SMSIIS.DLL· P2SNOTE.DLL· P2SODBC.DLL· P2SOLAP.DLL· P2SOLEDB.DLL· P2SORA7.DLL· P2SOUTLK.DLL· P2SREPL.DLL· P2SRFC.DLL· P2SRFCAQ.DLL· P2SRFCFA.DLL· P2SSQL.DLL· P2SSYB10.DLL· P2STRACK.DLL· P2SWBLG.DLL· PG32CONV.DLL· QECR.LIC· RULE1.DFA· RULE1.LLR· S2SQLPRS.DLL· SSCSDK80.DLL· U2DAAP.DLL· U2DDISK.DLL· U2DMAPI.DLL· U2DNOTES.DLL· U2DPOST.DLL· U2DVIM.DLL· U2FCR.DLL· U2FDIF.DLL· U2FHTML.DLL· U2FODBC.DLL· U2FPDF.DLL· U2FRDEF.DLL· U2FREC.DLL· U2FRTF.DLL· U2FSEPV.DLL· U2FTEXT.DLL· U2FWKS.DLL· U2FWORDW.DLL· U2FXLS.DLL· U2FXML.DLL

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour cette liste, cela va vraiement m'aider. J'aurais deux autres questions à te poser. Parmi ces dll, sais-tu s'il y a celle(s) qui permet d'utiliser Server.CreateObject("CrystalRuntime.Application") (commande permettant d'utiliser un objet crystal en ASP). De plus pourrais tu me dire où tu as trouver cette liste.

    Merci encore.

  4. #4
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Alors 1er pour utiliser Crystal en ASP c'est la CRAXDRT.DLL.
    Donc si tu utilise la CRAXDRT tu n'as plus besoin de la CRPE32.DLL. Car il faut savoir que segeate a développé plusieurs moteur crystal. Il y a

    CRW32.EXE : Pour construire les fichiers rpt

    crpe32.dll : Crystal Report API Interface, declares encapsulated in either global32.bas or crpe.h

    cpeaut32.dll : Crystal Report Print Engine 8 Object Library 32-bit COM object model, dispatch only

    craxdrt.dll : Crystal Report 8 ActiveX Designer Runtime library 32-bit only COM object model, dual interface, apartment model

    Et celui que Segeate recommande d'utiliser c'est le craxdrt.dll

    2e tu trouves tout cela sous C:\Program Files\Seagate Software\Crystal Reports\Developer Files\Help


  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Nouvelle question sur les dll !!!
    Désolé de ne pas t'avoir remercié plutôt, mais j'étais en vacances. J'ai bien pris en compte les infos de ton dernier message et je t'en remercie. Cependant j'ai encore un problème, c'est apparemment un problème de connexion aux bases de données. J'ai le message d'erreur suivant : "Error Occurred Reading Records: Physical database not found.". J'imagine qu'il me manque encore une ou plusieurs dll, mais je n'arrive pas à savoir lesquelles. Peux-tu m'aider à résoudre ce problème.

    Merci, cordialement.

  6. #6
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Ce message d'erreur n'est pas parce qu'il n'a pas trouvé la bonne dll, mais plutôt parce qu'il na pas pu connecter les tables du rapport à la base de donnée.

    Quel est ton code pour connecter ton rpt à ta BD ?

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    après avoir rajouter des dll qui me semblaient importantes sur le serveur, j'ai un autre message d'erreur, qui est le suivant :

    CRAXDRT Error Occured on Server. Error Number: -2147221005 Error Description: 006~ASP 0177~Échec de Server.CreateObject~Chaîne de classe non valide

    de plus, lorsque que je veux registrer certaines dll (crutl14.dll, crbas14.dll, ...) j'ai un message qui me dit qu'elles sont déjà chargées, puis DllRegisterServer may not exported, or corrupt version of crutl14.dll may be in memory. Consider using PView to detect and remove.

    je t'avouerai que je suis un peu perdu dans tout cela. Si tu peux me donner des indications sur ces erreurs elles seront les biens venues.

    code pour connecter mon rpt à ma db : je me sert d'une appli existante pour faire mes tester si elle fonctionne sur le serveur où je registre mes dll. Je t'avouerais que pour l'instant, je n'est pas trop touché au code et par conséquent, j'ai un peu de mal à comprendre comment ça ce passe. Je ne sais pas non plus si la liaison se fait dans le rpt ou au sein du code asp pourrais-tu me donner un exemple. Je vais tout de même essayer de comprendre comment ça se passe en attendant ton aide.

    Merci encore, cordialement.

  8. #8
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Je ne vois pas trop de quoi ton erreur provient. Peut-être que la CRAXDRT n'est pas enregistré. "regsvr32.exe"

    Voici un exemple de code en ASP.

    Le principe :

    '=======================================================================
    ' WORKING WITH THE REPORT DESIGNER COMPONENT AND ASP TO PREVIEW A REPORT
    '=======================================================================
    '
    ' CONCEPT
    '
    ' ALWAYS REQUIRED STEPS
    ' - create the application object
    ' - create the report object
    ' - open the report
    '
    ' MORE ALWAYS REQUIRED STEPS
    ' - retreive the records
    ' - create the page engine
    '
    ' DISPLAY THE REPORT
    ' - display the report using a smart viewer

    Le code ASP/VB pour utiliser la CRAXDRT
    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
     
    <%@ LANGUAGE="VBSCRIPT" %>
    <%
    reportname = "SimplePreviewReport.rpt"
    '===================================================================================
    'Create the Crystal Reports Objects
    '===================================================================================
    '
    'You will notice that the Crystal Reports objects are scoped as session variables.
    'This is because the page on demand processing is performed by a prewritten
    'ASP page called "rptserver.asp".  In order to allow rptserver.asp easy access 
    'to the Crystal Report objects, we scope them as session variables.  That way
    'any ASP page running in this session, including rptserver.asp, can use them.
     
     
    ' - 1 -                                                               
    ' CREATE THE APPLICATION OBJECT                                                                     
    If Not IsObject (session("oApp")) Then                              
    Set session("oApp") = Server.CreateObject("CrystalRuntime.Application")
    End If                                                                
     
    'This "if/end if" structure is used to create the Crystal Reports Application
    'object only once per session.  Creating the application object - session("oApp")
    'loads the Crystal Report Design Component automation server (craxdrt32.dll) into memory.
    '
    'We create it as a session variable in order to use it for the duration of the
    'ASP session.  This is to elimainate the overhead of loading and unloading the
    'craxdrt32.dll in and out of memory.  Once the application object is created in
    'memory for this session, you can run many reports without having to recreate it.                                                       
     
     
    ' - 2 -                                                               
    ' CREATE THE REPORT OBJECT                                     
    '                                                                     
    'The Report object is created by calling the Application object's OpenReport method.
     
    Path = Request.ServerVariables("PATH_TRANSLATED")                     
    While (Right(Path, 1) <> "\" And Len(Path) <> 0)                      
    iLen = Len(Path) - 1                                                  
    Path = Left(Path, iLen)                                               
    Wend                                                                  
     
    'This "While/Wend" loop is used to determine the physical path (eg: C:\) to the 
    'Crystal Report file by translating the URL virtual path (eg: http://Domain/Dir)                                                                        
     
    'OPEN THE REPORT (but destroy any previous one first)                                                     
     
    If IsObject(session("oRpt")) then
    	Set session("oRpt") = nothing
    End if
     
    'Response.Write (path & reportname)
     
    Set session("oRpt") = session("oApp").OpenReport(path & reportname, 1)
     
    'This line uses the "PATH" and "reportname" variables to reference the Crystal
    'Report file, and open it up for processing.
    '
    'Notice that we do not create the report object only once.  This is because
    'within an ASP session, you may want to process more than one report.  The
    'rptserver.asp component will only process a report object named session("oRpt").
    'Therefor, if you wish to process more than one report in an ASP session, you
    'must open that report by creating a new session("oRpt") object.
     
    session("oRpt").MorePrintEngineErrorMessages = False
    session("oRpt").EnableParameterPrompting = False
     
    'These lines disable the Error reporting mechanism
     
    '====================================================================================
    ' Retrieve the Records and Create the "Page on Demand" Engine Object
    '====================================================================================
     
    On Error Resume Next                                                  
    session("oRpt").ReadRecords                                           
    If Err.Number <> 0 Then                                               
      Response.Write "An Error has occured on the server in attempting to access the data source"
    Else
     
      If IsObject(session("oPageEngine")) Then                              
      	set session("oPageEngine") = nothing
      End If
    set session("oPageEngine") = session("oRpt").PageEngine
    End If 
     
    'Contains the HTML code to instantiate the Smart Viewer ActiveX.      
    '                                                                     
    'You will notice that the Report Name parameter references the rptserver.asp file.
    'This is because the report pages are actually created by rptserver.asp.
    'Rptserver.asp accesses session("oApp"), session("oRpt") and session("oPageEngine")
    'to create the report pages that will be rendered by the ActiveX Smart Viewer.
    '
    %>
    <HTML>
    <HEAD>
    <TITLE>Seagate ActiveX Viewer</TITLE>
    </HEAD>
    <BODY BGCOLOR=C6C6C6 LANGUAGE=VBScript ONLOAD="Page_Initialize">
     
    <OBJECT ID="CRViewer"
    	CLASSID="CLSID:C4847596-972C-11D0-9567-00A0C9273C2A"
    	WIDTH=100% HEIGHT=95%
    	CODEBASE="/viewer/activeXViewer/activexviewer.cab#Version=8,0,0,224">
    <PARAM NAME="EnableRefreshButton" VALUE=1>
    <PARAM NAME="EnableGroupTree" VALUE=1>
    <PARAM NAME="DisplayGroupTree" VALUE=1>
    <PARAM NAME="EnablePrintButton" VALUE=1>
    <PARAM NAME="EnableExportButton" VALUE=1>
    <PARAM NAME="EnableDrillDown" VALUE=1>
    <PARAM NAME="EnableSearchControl" VALUE=1>
    <PARAM NAME="EnableAnimationControl" VALUE=1>
    <PARAM NAME="EnableZoomControl" VALUE=1>
    </OBJECT>
     
    <SCRIPT LANGUAGE="VBScript">
    <!--
    Sub Page_Initialize
    	On Error Resume Next
    	Dim webBroker
    	Set webBroker = CreateObject("WebReportBroker.WebReportBroker")
    	if ScriptEngineMajorVersion < 2 then
    		window.alert "IE 3.02 users on NT4 need to get the latest version of VBScript or install IE 4.01 SP1. IE 3.02 users on Win95 need DCOM95 and latest version of VBScript, or install IE 4.01 SP1. These files are available at Microsoft's web site."
    		CRViewer.ReportName = "rptserver.asp"
    	else
    		Dim webSource
    		Set webSource = CreateObject("WebReportSource.WebReportSource")
    		webSource.ReportSource = webBroker
    		webSource.URL = "rptserver.asp"
    		webSource.PromptOnRefresh = True
    		CRViewer.ReportSource = webSource
    	end if
    	CRViewer.ViewReport
    End Sub
    -->
    </SCRIPT>
     
    </BODY>
    </HTML>
    Voilà

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je te remercie pour le code asp cela va vraiement m'aider.
    Le message d'erreur que j'ai actuellement est :
    Error Occurred Reading Records: Error detected by database DLL.
    Bien évidemment je ne sais pas d'où cela provient pour l'instant, peut-être que tu peux encore une fois m'aider ?

  10. #10
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Pour cette erreur vas fair un tour par la
    http://support.crystaldecisions.com/...db_dll.pdf.asp

  11. #11
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Une nouvelle fois j'ai besoin de toi. Je souhaite "webiser" un état rpt qui utilise les éléments d'une base de données access. Seulement lorsque j'utilise le code que tu m'a envoyé, j'ai le message d'erreur suivant :
    Error Occurred Reading Records: Server has not yet been opened. (encore un qui me pose problème). J'ai essayé de complèter ton code avec les instructions suivantes :

    <%
    '- add the database
    f = AddDatabase(Path)

    'Function: AddDatabase
    Function AddDatabase(Path)
    'Variables used to setup the Database connection
    Dim crDBTables
    Dim sDatabasePath
    Dim sTableName1
    Dim sTableName2
    Dim sTableName3
    Dim sTableName4
    Dim sTableName5

    'Get the Tables collection because it has the Add() method needed
    'to add a connection to the report
    Set crDBTables = session("oRpt").Database.Tables

    'Set the values for the connection variables
    'The full path and name of the Access database.
    'The database resides in the same directory as the application
    sDatabasePath = Path & "EDFData.mdb"
    Response.Write "chemin : " & sDatabasePath & "<br>"
    Response.Write "Creating the database succeeded" & "<br>"

    'The name of the first Access table
    sTableName1 = "Contacts"
    sTableName2 = "Emplois"
    sTableName3 = "Z_Fonctions"
    sTableName4 = "Etablissements"
    sTableName5 = "Villes"


    'Use the .Add() method to add the database table to the report.
    'There are several optional arguments for the Add method. Which arguments are passed
    'will depend on the type of database, the type of table and the type of connection.

    Response.Write "ici<br>"
    'Add the 'Contacts' table
    crDBTables.Add cstr(sDatabasePath), cstr(sTableName1)
    Response.Write "Adding the first database table succeeded" & chr(10)

    crDBTables.Add cstr(sDatabasePath), cstr(sTableName2)
    Response.Write "Adding the second database table succeeded" & chr(10)

    crDBTables.Add cstr(sDatabasePath), cstr(sTableName3)
    Response.Write "Adding the third database table succeeded" & chr(10)

    crDBTables.Add cstr(sDatabasePath), cstr(sTableName4)
    Response.Write "Adding the fourth database table succeeded" & chr(10)

    crDBTables.Add cstr(sDatabasePath), cstr(sTableName5)
    Response.Write "Adding the fifth database table succeeded" & chr(10)

    AddDatabase = true

    end function



    j'ai trouvé d'autres infos mais j'ai du mal comprendre à quoi cela sert et je n'arrive pas à me débarasser de ce message d'erreur.

    Pourrais-tu me me donner un exemple d'implémentation pour "webiser" un état utilisant les informations d'une base de données.

    Je te remercie par avance et je te remercie aussi pour m'avoir fourni le code précédent, cela m'a permis de "webiser" un état simple (sans dbb).

  12. #12
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Pour cette erreur Server has not yet been opened
    C'est parce que ta connexcion DB entre les tables définit dans le fichier rpt et les tables de la DB n'est pas établit.
    Et dans le bout de code que tu m'a montré tu ajoutes de nouvelle table dans ton rpt, alors qu'il faut connecter les tables existante à la DB.

    Voici le code que j'utilise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ConnectTable
    	if RptTmp.Database.Tables.Count >0 Then
    		For ILogOn = 1 to RptTmp.Database.Tables.Count
     	  	RptTmp.Database.Tables.Item(CInt(ILogOn)).SetLogOnInfo Cstr(session("Server")),"",Cstr(session("Name")),Cstr(session("Password"))
    		Next
    	End if
    End Sub
    En fait j'utilise la méthode SetLogOnInfo de Crystal.

    Ce qu'il faut savoir c'est que le SetLogOnInfo doit être fait pour toutes les tables du rpt, sous-rapport icomprit

    J'ai donc ajouter un fonction qui parcourt tout le rpt à la recherche de sous-rapport.
    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
    'Loop through each section, one by one, checking for subreports
    Set session("sections") = session("oRpt").Sections
    Dim sectionCnt
    sectionCnt = session("sections").Count
    For i = 1 to sectionCnt
    	Set section = session("sections").Item(CInt(i))
    	Set sectionobjects = section.ReportObjects
    	Dim objectCnt
    	objectCnt = sectionobjects.Count
     
    'When a subreport is found, store in a array
    	For e = 1 to objectCnt
    	  If sectionobjects.Item(CInt(e)).Kind = 5 then
                         aName = sectionobjects.Item(CInt(e)).SubreportName
                         Set RptTmp = session("oRpt").OpenSubreport(CStr(aName))
                         ConnectTable
                      EndIf
    	Next
    Next
    Voilà

    La je t'ai tous servis sur un plateau

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

Discussions similaires

  1. [Généralités] Info sur l'utilisation de thread
    Par mail.spam dans le forum WinDev
    Réponses: 5
    Dernier message: 27/07/2009, 12h01
  2. Réponses: 1
    Dernier message: 06/03/2009, 10h02
  3. Besoin d'infos sur fonction utilisant des lookup table
    Par Phelix2003 dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 24/10/2008, 11h07
  4. [Info] Comment utiliser un DLL
    Par Yanos dans le forum Eclipse Java
    Réponses: 37
    Dernier message: 03/09/2007, 12h09
  5. Complément d'info sur l'utilisation de settimeout
    Par WhyMee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/08/2006, 13h08

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