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

C# Discussion :

Applications exportable & Gestion Congés


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut Applications exportable & Gestion Congés
    Bonsoir a tous,

    Je developpe une applications pour une entreprise dans le cadre de mon stage,
    mais j'ai 2-3 soucis :

    Je vais avoir besoin de stocker des données quelques part donc je pensai utiliser une BDD :

    Problème : Il va me falloir installer SQL Server sur le Serveur de l'entreprise

    Ou utiliser une gestion par fichier, mais c'est plus laborieux

    Quelqu'un connaitrai t'il une solution entre les 2 : Une base de donnée exportable ?
    (à moins que mon raisonnement soit faux et pas besoin d'installer sql serveur ?)

    Mon deuxieme soucis, est de gérer des congés, alors la je sèche
    Je pensais faire un calendrier avec la possibilité d'ajouter des congés mais niveau enregistrement je vois pas du tout !!!

    Si quelqu'un pouvait m'éclairer

  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 flo_053 Voir le message
    Je vais avoir besoin de stocker des données quelques part donc je pensai utiliser une BDD :

    Problème : Il va me falloir installer SQL Server sur le Serveur de l'entreprise
    SQL Server n'est pas la seule base de données au monde, loin de là
    Tu pourrais utiliser MySQL, Oracle, PostgreSQL, ou n'importe quoi d'autre.

    Je pense que pour ce type d'application, une base de données est beaucoup plus adaptée qu'un simple fichier. Après, ça dépend de comment l'application sera utilisée... C'est une appli Windows ou Web ? Elle sera utilisée par plusieurs personnes ou par une seule ? Ces critères auront une influence déterminante sur le choix du mode de stockage...

    Citation Envoyé par flo_053 Voir le message
    Mon deuxieme soucis, est de gérer des congés, alors la je sèche
    Je pensais faire un calendrier avec la possibilité d'ajouter des congés mais niveau enregistrement je vois pas du tout !!!
    Si on va au plus simple, il te faudra une table "congés", avec l'identifiant de la personne (*), une date de début, une date de fin, éventuellement le type de congés (CP, RTT, récup...), un commentaire, le statut (validé, refusé...)

    (*) : cela suppose d'avoir aussi une table avec la liste des personnes

    Mais bon, ça c'est vraiment le modèle le plus basique... après, tout dépend des besoins, mais c'est tout ce que je peux te dire avec les éléments que tu donnes

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse,

    J'ai pas trop détaillé parceque je sais pas trop ce que je veux a vrai dire.
    J'ai appris que Sql Serveur (en cours), cest pour ca je parle que de cette base, mais utiliser autre chose ne me dérange pas.
    Tu me parle de : MySQL, Oracle, PostgreSQL mais est ce que ses base utilise aussi des serveur pour fonctionner (je pense que oui mais je demande quand meme).
    J'ai vu qu'il existais une reference System.Data.Sqlite qui permet d'avoir une base de donnée exportable est ce vrai ??


    Pour les congés, oui il y aura une table personne, mais cela risque t'il de pas faire une grosse base de donnée ?
    Par exemple pour 20 employés, 35 jours de congés sur 10 ans : 20*35*10
    Ca fait quand meme 7000 entrées, pour la lecture ca risque de faire beaucoup non ??
    Dans ce cas il faudrait plutot vider la table chaque année

  4. #4
    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 flo_053 Voir le message
    Tu me parle de : MySQL, Oracle, PostgreSQL mais est ce que ses base utilise aussi des serveur pour fonctionner (je pense que oui mais je demande quand meme).
    Oui, ce sont des bases serveur

    Citation Envoyé par flo_053 Voir le message
    J'ai vu qu'il existais une reference System.Data.Sqlite qui permet d'avoir une base de donnée exportable est ce vrai ??
    SQLite est une base de données fichier (comme Access ou SQL Server Compact Edition). Perso, j'aime beaucoup, mais je l'ai pas mentionnée parce que ça me semblait pas très adapté pour le type d'application que tu vas développer. Enfin, encore une fois, ça dépend de comment l'application est utilisée (mono ou multi utilisateur)

    Citation Envoyé par flo_053 Voir le message
    Pour les congés, oui il y aura une table personne, mais cela risque t'il de pas faire une grosse base de donnée ?
    Par exemple pour 20 employés, 35 jours de congés sur 10 ans : 20*35*10
    Ca fait quand meme 7000 entrées, pour la lecture ca risque de faire beaucoup non ??
    Dans ce cas il faudrait plutot vider la table chaque année
    Là je t'arrête tout de suite : 7000 enregistrements, c'est rien du tout... quand tu commenceras à atteindre les dizaines de millions d'enregistrements, tu pourras commencer à t'en préoccuper

    De toutes façons, tu n'as pas forcément besoin d'une entrée par jour de congé, une entrée par congé avec date de début et date de fin devrait suffire.

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par tomlev Voir le message
    SQLite est une base de données fichier (comme Access ou SQL Server Compact Edition). Perso, j'aime beaucoup.
    Salut TomLev

    Actuellement je switche entre SQL Server et MySql

    Peux tu dire pourquoi tu aime beaucoup Sql Lite ?
    J'y ai parfois pensé pour des petites applications légères mais j'ai vraiment jamais osé par peur de faire trop leger ?

    Les avis a ce sujet sont bienvenus et sans doute utile pour flo_053
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  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
    Citation Envoyé par olibara Voir le message
    Peux tu dire pourquoi tu aime beaucoup Sql Lite ?
    J'y ai parfois pensé pour des petites applications légères mais j'ai vraiment jamais osé par peur de faire trop leger ?
    Ben justement, parce que c'est léger
    Evidemment c'est pas adapté à tous les types d'application... c'est plus pour des applications locales avec des quantités de données relativement réduites. C'est utilisé par exemple par Firefox pour gérer les favoris, l'historique, etc, ou encore par pas mal d'applications iPhone (et oui, ça marche même sur iPhone...)

    Les avantages principaux (pour moi en tous cas) :
    - gratuit et open source
    - pas d'installation nécessaire
    - provider ADO.NET très léger (800ko tout mouillé, provider + moteur dans la même DLL)
    - bon support d'Entity Framework (Linq to Entities)
    - bonnes performances

    Pour les inconvénients, c'est un peu les conséquences des avantages... comme c'est très léger, y a pas énormément de fonctionnalités : pas de procédures stockées, support des triggers très limité... Mais bon, dans une appli de bureau qui travaille sur une base locale, en général on s'en passe très bien

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Oui, ce sont des bases serveur
    Il faut donc les installer sur le PC qui utilisera l'application ??

    Citation Envoyé par tomlev Voir le message
    SQLite est une base de données fichier (comme Access ou SQL Server Compact Edition). Perso, j'aime beaucoup, mais je l'ai pas mentionnée parce que ça me semblait pas très adapté pour le type d'application que tu vas développer. Enfin, encore une fois, ça dépend de comment l'application est utilisée (mono ou multi utilisateur)
    Application multi utilisateur, multi poste.
    J'ai testé SQL Server Compact Edition, ca corresponde presque a mes besoins sauf que ca gere pas toutes les fonctions sql (pas de date, seulement datetime par exemple).
    Je suis en train tester SQLLite mais vide complet apres avoir referencer la libraire je suis perdu

    Citation Envoyé par tomlev Voir le message
    Là je t'arrête tout de suite : 7000 enregistrements, c'est rien du tout... quand tu commenceras à atteindre les dizaines de millions d'enregistrements, tu pourras commencer à t'en préoccuper
    Ok je savais pas, une prise de tete en moins alors Merci bien pour toutes tes réponses.

  8. #8
    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 flo_053 Voir le message
    Il faut donc les installer sur le PC qui utilisera l'application ??

    Application multi utilisateur, multi poste.
    J'ai testé SQL Server Compact Edition, ca corresponde presque a mes besoins sauf que ca gere pas toutes les fonctions sql (pas de date, seulement datetime par exemple).
    Je suis en train tester SQLLite mais vide complet apres avoir referencer la libraire je suis perdu
    Si c'est multi-utilisateur et multi-poste, il faut que la base de données soit commune à tout le monde, donc qu'elle soit installée sur un serveur accessible à tous les clients. Ca exclut d'office les base de données fichier comme SQLite ou SQL Server CE...

    Pour SQL Server, a priori il n'y a pas besoin d'installer quoi que ce soit sur les clients : le provider ADO.NET pour SQL Server est déjà inclus dans le .NET Framework

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Si c'est multi-utilisateur et multi-poste, il faut que la base de données soit commune à tout le monde, donc qu'elle soit installée sur un serveur accessible à tous les clients. Ca exclut d'office les base de données fichier comme SQLite ou SQL Server CE...
    Ouep l'installation sera installé sur un server, et ceux qui veule l'utiliser iront sur le serveur pour la lancé. (Multi-utilisateur est un plus )

    Pour SQL Server, a priori il n'y a pas besoin d'installer quoi que ce soit sur les clients : le provider ADO.NET pour SQL Server est déjà inclus dans le .NET Framework
    J'avais appris en c# avec sql server Express mais Sql Server Compact ne supporte pas tout, par exemple ce code ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Program.DataBasePcmi.AddToEMPLOYES(myFormAjoutEmployes.Employes);
    Program.DataBasePcmi.SaveChanges();
    donc je suis encore plus perdu sur quoi utiliser, je vais essayer une base access pour voir.
    SqlLite je ne vois pas du tout comment l'utiliser, je reference la libairie SqlNet.dll et après je crée un element ado.net mais je bloque a la connexion je ne sais pas quoi mettre

  10. #10
    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 flo_053 Voir le message
    J'avais appris en c# avec sql server Express mais Sql Server Compact ne supporte pas tout, par exemple ce code ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Program.DataBasePcmi.AddToEMPLOYES(myFormAjoutEmployes.Employes);
    Program.DataBasePcmi.SaveChanges();
    C'est quoi ce code ? Tu utilises Entity Framework ?

    Citation Envoyé par flo_053 Voir le message
    SqlLite je ne vois pas du tout comment l'utiliser, je reference la libairie SqlNet.dll et après je crée un element ado.net mais je bloque a la connexion je ne sais pas quoi mettre
    C'est quoi SqlNet.dll ?
    Le provider pour SQLite est ici :
    http://sqlite.phxsoftware.com/

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par tomlev Voir le message
    C'est quoi ce code ? Tu utilises Entity Framework ?
    Oui j'utilise EF et après quelque recherche SQLCE n'est pas compatible avec la propiété auto-increment !!!


    C'est quoi SqlNet.dll ?
    Le provider pour SQLite est ici :
    http://sqlite.phxsoftware.com/
    SqLite.Net.dll que j'ai telecvhargé sur le site que tu indique, parmi les 3 dll c'est la seule que je peux référencer

  12. #12
    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 flo_053 Voir le message
    Oui j'utilise EF et après quelque recherche SQLCE n'est pas compatible avec la propiété auto-increment !!!
    Ah oui effectivement, je me suis déjà heurté au problème... c'est un peu casse bonbons
    Il faut définir toi-même la valeur de l'ID. En fait, le plus simple (je trouve), c'est de déclarer la colonne id comme étant de type GUID (uniqueidentifier en SQL) : comme ça tu peux l'initialiser sans problème à partir du code C#, en appelant juste . Ca génère un identifiant globalement unique : le risque de collision avec un ID existant n'est pas nul, mais il est tellement faible qu'on peut le considérer comme négligeable (un GUID fait 128 bits, ce qui fait 2^128 =~ 3.4x10^38 possibilités...)

    Citation Envoyé par flo_053 Voir le message
    SqLite.Net.dll que j'ai telecvhargé sur le site que tu indique, parmi les 3 dll c'est la seule que je peux référencer
    Euh, c'est pas System.Data.SQLite.dll plutôt ? J'utilise aussi ce provider, mais il n'y a que 2 DLL, et aucune qui s'appelle SQLite.Net.dll... Tu n'as pas du télécharger le bon fichier

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    J'avais pas vu que contrairement a SQL CE SQLITE necessitait une installation supplémentaire pour visual studio, d'ou le fait que je ne comprenais pas comment l'utiliser.

    Je viens de tester ca, et cela fonctionne parfaitement, cela reponds a mes attentes.

    Merci a tous pour vos conseils, je fais la gestion des congés demain, je tiens au courant.

    Concernant Guid.NewGuid(), pour ceux que ca interesse, je crois avoir lu que comme valeur par default il fallait mettre newguid() et en cas de mise a jour de l'edmx cela risque de poser des problèmes. J'ai lu ca sur un forum anglais quelq'un pourra peux etre confirmé.

  14. #14
    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 flo_053 Voir le message
    Concernant Guid.NewGuid(), pour ceux que ca interesse, je crois avoir lu que comme valeur par default il fallait mettre newguid() et en cas de mise a jour de l'edmx cela risque de poser des problèmes. J'ai lu ca sur un forum anglais quelq'un pourra peux etre confirmé.
    Non, avec EF il ne faut pas mettre de valeur par défaut sur la colonne, parce que le provider SQL CE ne sait pas insérer et récupérer la valeur en 1 seule commande (c'est aussi pour ça que les clés autogénérées ne fonctionnent pas)

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    SQLLITE ne gère pas les contraintes "ADD CONSTRAINT"
    Il y a t'il une autre alternative ?

  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
    Citation Envoyé par flo_053 Voir le message
    SQLLITE ne gère pas les contraintes "ADD CONSTRAINT"
    De quel type de contraintes tu parles ? Jusqu'à récemment, les contraintes de clé étrangère n'étaient pas vérifiées (mais elles étaient correctement interprétées), mais depuis la version 3.6 (je crois), c'est géré correctement

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Du genre ceci n'est pas supporté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IF NOT EXISTS (SELECT * FROM [sys].[foreign_keys] WHERE [name]='FK_EMPLOYE_SERVICE')
    BEGIN
    ALTER TABLE [EMPLOYE]
    	ADD CONSTRAINT [FK_EMPLOYE_SERVICE] FOREIGN KEY ([EMP_ID])
    	REFERENCES [SERVICE] ([SER_ID])
    	ON DELETE NO ACTION
    	ON UPDATE NO ACTION;
     
    	END
    GO

  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
    Citation Envoyé par flo_053 Voir le message
    Du genre ceci n'est pas supporté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IF NOT EXISTS (SELECT * FROM [sys].[foreign_keys] WHERE [name]='FK_EMPLOYE_SERVICE')
    BEGIN
    ALTER TABLE [EMPLOYE]
    	ADD CONSTRAINT [FK_EMPLOYE_SERVICE] FOREIGN KEY ([EMP_ID])
    	REFERENCES [SERVICE] ([SER_ID])
    	ON DELETE NO ACTION
    	ON UPDATE NO ACTION;
     
    	END
    GO
    Euh... forcément, si tu essaies d'exécuter du T-SQL (dialecte SQL utilisé par SQL Server) sur une base SQLite, ça risque pas de marcher

    Ce n'est pas le "ADD CONSTRAINT" qui ne fonctionne pas, mais instructions procédurales (IF, BEGIN...END, GO...). D'autre part, la table [sys].[foreign_keys] est spécifique à SQL Server, elle n'existe pas dans SQLite

    Sinon, il faut savoir que le support de ALTER TABLE est assez limité dans SQLite. On peut ajouter des colonnes ou renommer la table, et c'est tout. Pour les contraintes de clé étrangère, il faut les créer en même temps que la table

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Oui j'utilisai juste le alter table, mais il ne marchait pas, ce que j'avais vu dans la documentation.

    Je vais faire un exmple simple pour que tu comprenne ( et surtout que je comprenne ce qui va pas) ce que je souhaite :

    En cours, je crée ma table et les clés etrangeres comme ca :
    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
    USE [master]
    GO
     
    IF NOT EXISTS (SELECT * FROM [sys].[databases] where (name) = 'TEST')
    BEGIN
    	CREATE DATABASE [TEST];
    END
    GO
     
    USE [TEST];
    GO
     
     
    IF NOT EXISTS (SELECT * FROM [sys].[tables] where (name)= 'EMPLOYE')
    CREATE TABLE [EMPLOYE]
    (
    	[EMP_ID] BIGINT NOT NULL,
    	[EMP_SER] BIGINT NOT NULL,
    	[EMP_GEN]  CHAR(1),
    	[EMP_DAT_EMB] DATE NOT NULL,
    	[EMP_DAT_NAI] DATE NOT NULL,
    	CONSTRAINT [PK_EMPLOYE] PRIMARY KEY ([EMP_ID])
    );
    GO
     
    IF NOT EXISTS (SELECT * FROM [sys].[tables] where (name)= 'SERVICE')
    CREATE TABLE [SERVICE]
    (
    	[SER_ID] BIGINT IDENTITY NOT NULL,
    	[SER_NOM] NVARCHAR(30) NOT NULL,
    	CONSTRAINT [PK_SERVICE] PRIMARY KEY ([SER_ID])
    );
    GO
     
    --Clé étrangères
     
     
    IF NOT EXISTS (SELECT * FROM [sys].[foreign_keys] WHERE [name]='FK_EMPLOYE_SERVICE')
    BEGIN
    ALTER TABLE [EMPLOYE]
    	ADD CONSTRAINT [FK_EMPLOYE_SERVICE] FOREIGN KEY ([EMP_ID])
    	REFERENCES [SERVICE] ([SER_ID])
    	ON DELETE NO ACTION
    	ON UPDATE NO ACTION;
     
    	END
    GO
    Apres je fais mon edmx et cela crée les tables et les relations parfaitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TABLE [EMPLOYES]
    (
    	[EMP_ID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    	[EMP_NOM] NVARCHAR(30) NOT NULL,
    	[EMP_PRE]  NVARCHAR(30) NOT NULL,
    	[EMP_ROL] INT NOT NULL
    );
    CREATE TABLE [ROLE]
    (
    	[ROL_ID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    	[ROL_NOM] NVARCHAR(30) NOT NULL,
    	FOREIGN KEY (ROL_ID) REFERENCES EMPLOYES(EMP_ROL)
    );
    Mais quand je fait pareil avec SQLlite, ca me crée juste ls tables et une petite erreur :
    Message 1 La relation «*FK_ROLE_0*» a des colonnes qui ne font pas partie de la clé de la table du côté primaire de la relation, ce qui n'est pas pris en charge*; la relation a été exclue.
    C'est cela mon problème en fait, et je ne vois pas comment crée tout ca :s

    Merci en tout cas de prendre du temps a me répondre.

  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
    Elle est dans le mauvais sens ta foreign key... c'est employes qui doit référencer role, et non l'inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE [ROLE]
    (
    	[ROL_ID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    	[ROL_NOM] NVARCHAR(30) NOT NULL
    );
     
    CREATE TABLE [EMPLOYES]
    (
    	[EMP_ID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    	[EMP_NOM] NVARCHAR(30) NOT NULL,
    	[EMP_PRE]  NVARCHAR(30) NOT NULL,
    	[EMP_ROL] INT NOT NULL,
            FOREIGN KEY (EMP_ROL) REFERENCES ROLE(ROL_ID)
    );
    Je sais pas si c'est pour ça qu'il y a une erreur, mais on sait jamais

    EDIT: en fait si, je suis sûr que c'est pour ça... ta clé étrangère faisait référence à un champ qui n'était pas la clé primaire de l'autre table, et ça correspond bien à ce que disait le message d'erreur

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [REPORTING] export excel, gestion onglets
    Par marie253 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2007, 15h09
  2. gestion congés avec fichier xls
    Par didou038 dans le forum C++Builder
    Réponses: 9
    Dernier message: 15/01/2007, 14h48
  3. Export Excel - Gestion des couleurs
    Par Shansson dans le forum Access
    Réponses: 7
    Dernier message: 21/04/2006, 15h25
  4. Recherche d'application web (PHP) :: Gestion de fichiers
    Par KissCoolMan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 08/01/2006, 15h43

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