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

NHibernate Discussion :

[FluentNhibernate] et configuration base de données


Sujet :

NHibernate

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut [FluentNhibernate] et configuration base de données
    Bonjour
    j ai le code suivant de la creation d une sessionfactory
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private static ISessionFactory CreateSessionFactory()
            {
                return Fluently.Configure()
          .Database(MsSqlConfiguration.MsSql2008
          .ConnectionString(m => m.Server(@".\SqlExpress")
              .Database("company")
              .TrustedConnection()))
          .Mappings(m => m
        .FluentMappings.AddFromAssemblyOf<??????????>())
      .BuildSessionFactory();
          .ExposeConfiguration((Configuration config) => new SchemaExport(config).Create(false, true))
          .BuildSessionFactory();
     
              }
    j'ai beau essayé de mettre les noms des entités dans la partie ou il y a des ??? mais y a tjrs une erreur.
    merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par hellalaboy Voir le message
    j'ai beau essayé de mettre les noms des entités dans la partie ou il y a des ??? mais y a tjrs une erreur.
    QUELLE erreur ? on est pas devins...

    dis ce que tu as essayé et ce que tu as obtenu comme erreur

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Apres plusieurs essai,voici le code sur lequel je me suis basé
    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
    private static ISessionFactory CreateSessionFactory()
            {
                return Fluently.Configure()
               .Database(MsSqlConfiguration.MsSql2005
               .ConnectionString(c => c
               .Server("(local)\\SQLEXPRESS")
               .Database("company")
               .Username("simo")
               .Password("mp")))
               .Mappings(m => m
               .FluentMappings.AddFromAssemblyOf<Program>())
               .BuildSessionFactory();
     
     
              }
    l'exception qui se déclenche est:
    An unhandled exception of type 'FluentNHibernate.Cfg.FluentConfigurationException' occurred in FluentNHibernate.dll

    Additional information: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.


    + Thrown: "Could not load file or assembly 'NHibernate.XmlSerializers, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. Le fichier spécifié est introuvable." (System.IO.FileNotFoundException) Exception Message = "Could not load file or assembly 'NHibernate.XmlSerializers, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. Le fichier spécifié est introuvable.", Exception Type = "System.IO.FileNotFoundException"

  4. #4
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Ta dll "NHibernate.XmlSerializers" est-elle correctement référencée dans ton projet ?
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    En fait voici les 3 dll auquelles j ai ajouté une référence:

    FluentNHibernate.dll

    NHibernate.dll

    NHibernate.ByteCode.Castle.dll

    quand j au telechargé fluent nhibernate ,je n ai pas trouvé de dll pour XMLserializers

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il me semble avoir déjà vu cette erreur, mais normalement c'est juste une "first-chance exception" qui est interceptée en interne par NHibernate, elle ne devrait pas planter ton programme

    (En fait, c'est le moteur de sérialisation XML qui regarde s'il y a des sérialiseurs déjà générés, et pour ça il regarde si l'assembly NHibernate.XmlSerializers existe. S'il existe pas ça le génère automatiquement...)

    Tu es sûr que c'est bien cette exception-là qui fait planter ? Mets un try/catch autour de l'instruction qui pose problème, et regarde l'exception générée

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Bonjour
    vous avez raison,c’était plutôt une deuxième exception concernant l'authentification qui arrêter l’exécution.
    Je savais pas le user et mot de passe adequat pour l'authentification et je les ai changé par un un .TrustedConnection()))
    voici le bout de code qui marche bien pour la création d'une session:
    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
    private static ISessionFactory CreateSessionFactory()
            {
                return Fluently.Configure()
               .Database(MsSqlConfiguration.MsSql2005
               .ConnectionString(c => c
               .Server("(local)\\SQLEXPRESS")
               .Database("company")
               .TrustedConnection()))
               //.Username("hcp\\simo")
               //.Password("")))
               .Mappings(m => m
               .FluentMappings.AddFromAssemblyOf<Program>())
               .BuildSessionFactory();
     
     
              }
    L'execution marche tres bien jusqu'a le processus d'insertion dans la base ou j ai :

    could not insert: [FirstProject.Entities.Store][SQL: INSERT INTO [Store] (Name) VALUES (?); select SCOPE_IDENTITY()]

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    voici le code de la classe store:
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace FirstProject.Entities
    {
        public class Store
        {
            private int id;
            private string name;
            private IList<Product> products;
            private IList<Employee> staff;
            public virtual int Id
            {
                get { return id; }
                set { id = value; }
            }
            public virtual string Name
            {
                get { return name; }
                set { name = value; }
            }
     
            // list of product that are stored in the store
            public virtual IList<Product> Products
            {
                get { return products; }
                set { products = value; }
            }
            //list of employe that work in the store
            public virtual IList<Employee> Staff
            {
                get { return staff; }
                set { staff = value; }
            }
            public Store() 
            {
                Products = new List<Product>();
                Staff = new List<Employee>();
            }
            public virtual void AddProduct(Product product)
            {
                // ajouter le magasin a la liste magasin qui ont ce produit
                product.StoresStockedIn.Add(this);
                // ajouter produit a une liste de produit
                products.Add(product);
            }
            public virtual  void AddEmployee(Employee employee)
            {
                employee.Store_id = this;
                Staff.Add(employee);
            }
        }
    }

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par hellalaboy Voir le message
    L'execution marche tres bien jusqu'a le processus d'insertion dans la base ou j ai :

    could not insert: [FirstProject.Entities.Store][SQL: INSERT INTO [Store] (Name) VALUES (?); select SCOPE_IDENTITY()]
    Quelle est l'exception interne (InnerException) ?

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Generic Ado Exception est déclenché

    could not insert: [FirstProject.Entities.Store][SQL: INSERT INTO [Store] (Name) VALUES (?); select SCOPE_IDENTITY()]

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ca c'est pas la InnerException, c'est la même que tu avais déjà postée... poste toutes les InnerExceptions, normalement ça doit te donner plus de détails

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Bonjour

    J'ai pas compris ce que vous voulez dire par poster toutes les Innerexceptions?
    Pouvez vous être plus explicite

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Chaque exception X a une propriété de InnerException, qui peut contenir une exception Y qui est la cause de X. Mais Y étant aussi une exception, elle a aussi une propriété InnerException, qui peut contenir une exception Z qui est la cause de Y. Et ainsi de suite, jusqu'à ce que InnerException ne contienne rien du tout (null)
    Ce que je te demande, c'est toutes ces exceptions X, Y, Z etc

    Exemple (fictif) :
    Exception : impossible d'insérer un objet en base.
    Pourquoi ? => InnerException : erreur d'exécution de la requête SQL
    Pourquoi ? => InnerException : la clé existe déjà

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Merci pour l'explication:

    ADO.net:Execute Reader "INSERT INTO [Store] (Name) VALUES (@p0); select SCOPE_IDENTITY()" Command Text = "INSERT INTO [Store] (Name) VALUES (@p0); select SCOPE_IDENTITY()", Connection String = "Data Source=P-ELECTIONS-32\\SQLEXPRESS;Initial Catalog=company;Integrated Security=True"


    Exception: Thrown: "Cannot insert the value NULL into column 'Id', table 'company.dbo.Store'; column does not allow nulls. INSERT fails.
    The statement has been terminated." (System.Data.SqlClient.SqlException) Exception Message = "Cannot insert the value NULL into column 'Id', table 'company.dbo.Store'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated.", Exception Type = "System.Data.SqlClient.SqlException"
    merci

  15. #15
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    l'exception se declenche lors de la sauggarde de la session
    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
    class Program
        {
            static void Main(string[] args)
            {
                var sessionFactory = CreateSessionFactory();
                using (var session = sessionFactory.OpenSession())
                {
                    using (var transaction = session.BeginTransaction())
                    {
                         // create a couple of stores each with some products and employee
                        var barginBasin=new Store{Name="Bargin_Basin"};
                        //var superMart = new Store { Name = "super Mart" };
     
                        var potatoes = new Product { Name = "Potatoes", Price = 3.60 };
                        var fish = new Product { Name = "Fish", Price = 4.49 };
                        var milk = new Product { Name = "Milk", Price = 0.79 };
                        var bread = new Product { Name = "Bread", Price = 1.29 };
                        var cheese = new Product { Name = "Cheese", Price = 2.10 };
                        var waffles = new Product { Name = "Waffles", Price = 2.41 };
     
                        var daisy = new Employee { FirstName = "Daisy", LastName = "Harrison" };
                        var jack = new Employee { FirstName = "Jack", LastName = "Torrance" };
                        var sue = new Employee { FirstName = "Sue", LastName = "Walkters" };
                        var bill = new Employee { FirstName = "Bill", LastName = "Taft" };
                        var joan = new Employee { FirstName = "Joan", LastName = "Pope" };
     
                        // add products to the stores, there's some crossover in the products in each
                        // store, because the store-product relationship is many-to-many
                        AddProductsToStore(barginBasin, potatoes, fish, milk, bread, cheese);
                        //AddProductsToStore(superMart, bread, cheese, waffles);
     
                        // add employees to the stores, this relationship is a one-to-many, so one
                        // employee can only work at one store at a time
                        AddEmployeesToStore(barginBasin, daisy, jack, sue);
                        //AddEmployeesToStore(superMart, bill, joan);
     
                        // save both stores, this saves everything else via cascading
                        session.SaveOrUpdate(barginBasin);
                        //session.SaveOrUpdate(superMart);
     
                        transaction.Commit();
                    }
                }
     
     
            }

    ça se fait au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.SaveOrUpdate(barginBasin);

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Apparemment tu as du indiquer dans ton mapping que l'id était auto-généré par la base, mais en fait ce n'est pas le cas. Donc il faut soit donner explicitement une valeur à l'id, soit modifier le schéma de la BDD pour que la colonne Id soit une colonne identité.

    Montre la définition de la colonne Id dans la base, et le mapping de la classe Product

    EDIT: ok, j'avais pas réalisé que tu avais suivi le tuto sur le site de FluentNH...
    Apparemment par défaut le générateur est "identity", mais si la colonne en base n'est pas une colonne identité ça marche pas...

    Il doit y avoir un truc pour indiquer comment la valeur de l'Id est générée, par exemple quelque chose dans ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Id(x => x.Id).GeneratedBy.Increment();
    Je peux pas vérifier si c'est ça, j'ai pas FluentNH sous la main, et il n'y a pas de doc de référence de l'API (pas plus que pour NH... c'est vraiment abusé que des projets aussi importants ne se donnent pas la peine de documenter l'API )

  17. #17
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Je n'ai pas indiqué que l'ID est autogeneré par la base:
    voici la definition d'id dans la base
    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
    CREATE TABLE [dbo].[Store](
    	[Id] [int] NOT NULL,
    	[Name] [nvarchar](50) NULL,
     CONSTRAINT [PK_Store] PRIMARY KEY CLUSTERED 
    (
    	[Id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
     
    ALTER TABLE [dbo].[Store]  WITH CHECK ADD  CONSTRAINT [FK_Store_Store] FOREIGN KEY([Id])
    REFERENCES [dbo].[Store] ([Id])
    GO
     
    ALTER TABLE [dbo].[Store] CHECK CONSTRAINT [FK_Store_Store]
    GO
    et voici le mapping de la classe store:
    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
    public class StoreMap:ClassMap<Store>
        {
            public StoreMap()
            {
                Id(x => x.Id);
                Map(x => x.Name);
                HasMany(x => x.Staff)
                    .Inverse()
                    .Cascade.All();
                HasManyToMany(x => x.Products)
                    .Cascade.All()
                    .Table("StoreProduct");
     
            }
        }
    Ce que j ai pu comprendre est que Nhibernate est celui qui a le droit de donner une valeur a L'id.Je l ai lu sur une doc sur internet:
    There's two things that may stand out to you if you're unfamiliar with NHibernate. Firstly, the Id property has a private setter, this is because it's only NHibernate that should be setting the value of that Id. Secondly, all the properties are marked virtual; this is because NHibernate creates "proxies" of your entities at run time to allow for lazy loading, and for it to do that it needs to be able to override the properties.
    http://wiki.fluentnhibernate.org/Getting_started

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    J'ai édité ma réponse entre temps, mais à cause de problèmes de connexion j'ai pas pu la poster avant que tu répondes... regarde mon message précédent, ça répondra peut-être à ta question

  19. #19
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    D'apres ce qu'il y a dans le tuto sur le site de FluentNH...
    quand fluentNh voit que L ID est int alors automatiquement il le mappe comme une identité autoincrem.Or c est pas le cas ici,car j ai forcé l'identité comme vous m aviez dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Id(x => x.Id).GeneratedBy.Increment();
    ça permet de dépasser le problème d'identité.Mais j ai constaté que il faut faire l identité directement dans la BD car une autre exception se declenche:
    Exception Message "Cannot insert explicit value for identity column in table 'Employee' when IDENTITY_INSERT is set to OFF." string
    je pense que cette exception est du au fait que sur la base de donnée,Il n y a pas d'identité déclaré.

    Comme vous aviez dit
    c'est vraiment abusé que des projets aussi importants ne se donnent pas la peine de documenter l'API
    J'ai longtemps cherché avant d'opter pour fluent car il me semble que c est le plus documenté

  20. #20
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par hellalaboy Voir le message
    il me semble que c est le plus documenté
    Perso, un petit wiki avec 4 ou 5 articles de type tutoriel, c'est pas ce que j'appelle une "documentation"... Ce que je voudrais, c'est une documentation de référence de l'API, avec les descriptions des classes et de leurs membres. Même sur un tout petit projet comme Dvp.NET on l'a fait, alors ça me gonfle un peu que sur des gros projets matures comme NH ils le fassent pas

Discussions similaires

  1. [Drupal] Configuration base de données
    Par skawll dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 16/02/2011, 16h32
  2. [1.x] Configuration base de données multiples
    Par LordBob dans le forum Symfony
    Réponses: 5
    Dernier message: 24/08/2010, 21h31
  3. [Drupal] [Drupal 6.4] Configuration base de données
    Par TheBananier dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/10/2009, 12h51
  4. Configurer base de donnée avec Dreamshield
    Par Tgaud dans le forum Dreamshield
    Réponses: 18
    Dernier message: 24/07/2009, 22h52
  5. Utilisation et configuration base de données cognos 8
    Par lilsandy dans le forum Cognos
    Réponses: 4
    Dernier message: 03/06/2009, 15h11

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