Champs non duplicables

olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 5 mars 2008 à 18:00
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 15 mars 2008 à 22:19
Bonjour

Petite question concernant mise a jour DB et controle duplicates

Je presente a l'utilisateur un DGV peuplé avec le resultat d'un query, l'utilisateur peut ajouter des lignes
La cléf primaire est cachée et auto increment

Mais d'autres champs que l'utilisateur peut remplir ne veuvent pas etre dupliqués
Quelle serait la bonne maniere de faire

Actuellement je songe faire une boucle pour chaque ligne ajoutée et lancer des query dans la base pour chacun de ces champs : il y a -til une autre manière ?

6 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
15 mars 2008 à 11:36
salut,

le mieux serait de définir la colonne comme Unique à la fois dans la base et dans le dataset (normalement, si le champs est unique dans la base, alors il sera mappé dans le dataset)...

ShareVB
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
15 mars 2008 à 15:16
Merci

Je vais essayer mais j'ai déja constaté que le mapping n'etais pas infallible
Si tu a une primary key auto increment il faut truquer si tu cree un nouveau record
1- Tu cree un nouveau record
2- Tu accept changes
3- Tu delete le record que tu viens de creer : BOUM, je contourne en faisant un clear et refill du dataset juste apres ajout
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
15 mars 2008 à 20:36
salut,

euh, tu accept changes après un dataadapter.update ? parce que accept change tout court ca fait rien au niveau de la base...d'ailleurs le acceptchanges est fait par le dataadapter...

ShareVB
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
15 mars 2008 à 21:16
Salut

j'utilise acceptchanges non pas pour la database mais pour la datatable.
Je me souviens avoir eu une situation ou les records modifiés restaient flagués dans le dataset !
Ceci dit c'est peut etre une illusion ou le resultat d'une autre betise
Cela etant j'ai pris l'habitude de faire un acceptchange

.. c'est peut etre inutile ... ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
15 mars 2008 à 21:51
salut,

tu peux mettre à jour la clé primaire de ta datatable en faisant un INSERT suivi d'un SELECT dans le InsertCommand : http://www.akadia.com/services/dotnet_autoincrement.html

ShareVB
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
15 mars 2008 à 22:19
Ouch !!

Quel bingz a première vue
Finalement ma methode c'est pas si mal

1-Update
2-Clear Dataset
3-Fill dataset

      ch = dsContUpd.GetChanges(DataRowState.Added);
      if (ch != null)
      {
        try
        {
          int add = adaContUpd.Update(ch);
        }
        catch (MySqlException e)
        {
          MessageBox.Show(e.Message);
          return;
        }
        dsContUpd.Clear();
        adaContUpd.Fill(dsContUpd);
      }
0
Rejoignez-nous