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

Windows Forms Discussion :

[C# 2.0] Suspendre une contrainte sur une colonne


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Par défaut [C# 2.0] Suspendre une contrainte sur une colonne
    Salut,


    J'ai un piti problème.

    J'ai un dataset, des tables, des colonnes...logique jusque là.


    Sur une colonne j'ai mis une contrainte Unique. Le problème est que je voudrais pouvoir soit suspendre cette contrainte, soit autorisé l'ajout de valeure nulle.

    Car si j'ajoute 2 ligne avec pour toutes 2 une valeure null dans la colonne ayant la contrainte il ne veut pas vu que unique.

    J'aurais voulu savoir quelle était la meilleure méthode à appliquer dans un tel cas.

    J'ai tenté de retirer la contrainte, pas de problème. Puis de la rajouter, mais il n'apprécie pas...


    Merci

  2. #2
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    Soit c'est la clé unique qui n'est pas adéquate, soit tu devras faire le contrôle par programmation (équivalent des triggers en base de données).

  3. #3
    Membre éclairé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Par défaut
    En fait je vais expliquer en quelques mots mon programme.

    Il s'agit d'une simple médiathèque, chaque enregistrement est un média.

    Chaque média peut être ajouté "à la main" ou dynamiquement.

    J'explique, je peux par exemple ajouter le media "Rocky 3", et retenir dans le champs "DVD", qu'il se trouve sur le DVD 7. Il y a d'autres champs qui peuvent être completé ou non, par exemple le champ "chemin" qui donne le chemin ou se trouve le media (sur disque dur).

    J'ai rajouté une clef unique sur le champ "chemin", j'ai fait ceci à cause de la seconde méthode d'encodage (dynamique).

    Cet encodage demande simplement le chemin d'un répertoire, le programme va alors scanner ce repertoire et tous les sous répertoire afin d'ajouter chaque media.

    Grace à cette contrainte, je m'asure qu'un même fichier n'est pas ajouté 2*...l'ajout se résume à;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try
    {
         dataSetVid.Tables[0].Rows.Add(dr);
    }
    catch{}
    Je vois déjà la question "mais pourquoi ne pas simplement mettre la clef unique sur uniquement le nom du fichier?"
    Parce que j'ai plusieurs fois le fichier CD1.avi...par exemple


    Voilà pour l'explication. pour en revenir au problème, il intervient lorsque j'ajoute un media à la main et que je ne donne pas de chemin pour ce media.

    Je ne sais pas comment contourner le problème, car faire la vérification par programmation risque de ralentir considérablement le traitement, faire des comparaisons sur de longues chaines... pour chaque ajout.

    Retenir une valeur aléatoire à la place du chemin?...pas très pro

  4. #4
    DrQ
    DrQ est déconnecté
    Membre émérite
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Par défaut
    Dans tous les cas le dataset fait le parcours à chaque fois que tu fais un Add pour vérifier s'il existe ou pas. Le faire par programmation ne devrait pas ralentir l'ajout et je dirai même que ça devrait être le contraire.

    Je ne sais pas combien tu peux avoir de media, mais si c'est moins de 10 000 tu n'as pas à t'inquiéter pour les performances, ça va passer tout seul. Au dessus, même le dataset risque de peiner.

    Même dans le cas où tu désactives la clé pour faire l'insertion, tu pourras pas la réactiver : à moins de stocker les null dans un second dataset. Tu devras à chaque traitement fusionner les deux pour parcourir l'ensemble des datasets.

Discussions similaires

  1. afficher une valeur sur une feuille lorsqu'une checkbox est cochée
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2008, 14h39
  2. probleme avec l'appui sur une touche sur une jframe ou jdialog
    Par jeanfeu dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/08/2008, 16h14
  3. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 10h21
  4. Modifier une contrainte sur une table InnoDb
    Par DomZZZ dans le forum Outils
    Réponses: 1
    Dernier message: 13/03/2006, 14h40
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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