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

VB.NET Discussion :

Empecher l'ajout de deux champs de même nom


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Par défaut Empecher l'ajout de deux champs de même nom
    Bonjour,
    je suis débutante et je développe ma première application en vb.net,j'ai fais un windows form pour permettre à l'utilisateur d'ajouter une machine j'ai un table Machine(IdMAchine,NomMachine,Numérode serie) idMachine c'est un numéro qui s'incrémente,je veux savoir comment empêcher l'utilisateur d'ajouter deux Machine de même nom a ma table via le code VB

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    C'est à ton SGBDR de gérer ça. Il n'y a aucune plus value à le faire dans le code applicatif.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    C'est à ton SGBDR de gérer ça. Il n'y a aucune plus value à le faire dans le code applicatif.
    Salut,
    Mais moi je veux lorsque l'utilisateur entre même nom de machine un message d’avertissement se lance pour lui dire que le nom existe déjà

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Tu peux mettre un index unique sur ta colonne NomMachine pour t'assurer qu'une valeur sera toujours unique.

    Ensuite avant de faire l'insertion, lancer un SELECT qui ira vérifier si une machine du même nom existe déjà (il suffit de compter le nombre d'enregistrement retourné, si c'est 1 ça existe déjà, sinon si c'est 0, tu peux insérer). Cela peut aussi se faire via une procédure stockée si ton SGBDR les supporte. C'est la solution la plus propre.

    Tu peux aussi faire l'insertion directement, et gérer l'exception qui sera levée (puisque la présence de l'index unique interdira l'insertion). C'est la solution de facilité, qui est plutôt crade donc à éviter...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Tu peux mettre un index unique sur ta colonne NomMachine pour t'assurer qu'une valeur sera toujours unique.

    Ensuite avant de faire l'insertion, lancer un SELECT qui ira vérifier si une machine du même nom existe déjà (il suffit de compter le nombre d'enregistrement retourné, si c'est 1 ça existe déjà, sinon si c'est 0, tu peux insérer). Cela peut aussi se faire via une procédure stockée si ton SGBDR les supporte. C'est la solution la plus propre.

    Tu peux aussi faire l'insertion directement, et gérer l'exception qui sera levée (puisque la présence de l'index unique interdira l'insertion). C'est la solution de facilité, qui est plutôt crade donc à éviter...

    Comment je peux ajouter le select avant la requête d'insertion??

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Par défaut
    c'est j'ajoute dans ma windows form une datagridvieuw qui affiche la liste des machines et leurs numéro de série,comment je peut comparer le nom de machine entrer dans le textbox1 avec la liste afficher dans le datagrid pour que le nom ne soit pas redoubler?

  7. #7
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Tu peux mettre un index unique sur ta colonne NomMachine pour t'assurer qu'une valeur sera toujours unique.

    Ensuite avant de faire l'insertion, lancer un SELECT qui ira vérifier si une machine du même nom existe déjà (il suffit de compter le nombre d'enregistrement retourné, si c'est 1 ça existe déjà, sinon si c'est 0, tu peux insérer). Cela peut aussi se faire via une procédure stockée si ton SGBDR les supporte. C'est la solution la plus propre.

    Tu peux aussi faire l'insertion directement, et gérer l'exception qui sera levée (puisque la présence de l'index unique interdira l'insertion). C'est la solution de facilité, qui est plutôt crade donc à éviter...
    La proposition de DotNetMatt est plus propre et professionel ...

    mais si tu veux choisir parcourir un datagridview

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    For Each Ligne As DataGridViewRow In TonDataGridView.Rows
                        If Ligne.Cells("TaColonne").Value = TonTextBox.text Then
                           MsgBox("Il existe une machine...")
                           exit For
                        End If
                    Next

  8. #8
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Tu peux mettre un index unique sur ta colonne NomMachine pour t'assurer qu'une valeur sera toujours unique.

    Ensuite avant de faire l'insertion, lancer un SELECT qui ira vérifier si une machine du même nom existe déjà (il suffit de compter le nombre d'enregistrement retourné, si c'est 1 ça existe déjà, sinon si c'est 0, tu peux insérer). Cela peut aussi se faire via une procédure stockée si ton SGBDR les supporte. C'est la solution la plus propre.

    Tu peux aussi faire l'insertion directement, et gérer l'exception qui sera levée (puisque la présence de l'index unique interdira l'insertion). C'est la solution de facilité, qui est plutôt crade donc à éviter...
    Personnellement je choisis la solution "crade":.

    1) Démarrer une transaction (Trop souvent oubliée)
    2) Faire un SELECT
    3) Gérer le retour du SELECT
    4) Faire l'INSERT
    5) Valider la transaction

    ou

    1) Faire l'insert
    2) Gérer l'erreur en cas de doublon

    1 requête vs 1 transaction + 2 requêtes...


    Pour le DataGridView j'utiliserais plutôt une DataTable dans laquelle tu indiques ta contrainte d'unicité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var table = new DataTable();
    var keyColumn = table.Columns.Add("Key", typeof(string));
    keyColumn.Unique = true;
    Tu lies ta DataTable au DataGridView avec un BindingSource et tout est géré pour toi.

    Tu peux trouver un exemple ici : https://resourceseditor.codeplex.com...or/MainForm.cs

  9. #9
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 46
    Par défaut
    Merci bien j'ai trouvé résultat la voilà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim exists As Boolean = False
                For Each itm As DataGridViewRow In DataGridView1.Rows
                If itm.Cells(0).Value = MATEXTBOX.Text Then
     
     
                exists = True
                 End If
                Next
     
                If Me.DataGridView1.Rows.Count > 0 AndAlso exists = True Then
                MsgBox("ITem déja Ajouter")

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/04/2012, 10h28
  2. [PHP 5.1] Récupérer deux champs avec même nom
    Par Federico_muy_bien dans le forum Langage
    Réponses: 10
    Dernier message: 05/08/2010, 17h42
  3. remplir deux champ en même temps
    Par czezko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 19h44
  4. Tri sur deux champs en même temps
    Par Azharis dans le forum Access
    Réponses: 8
    Dernier message: 11/01/2006, 13h10
  5. Modifier deux champs en même temps!!!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 08/09/2005, 20h31

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