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

ADO.NET Discussion :

mise-à-jour dataset typé


Sujet :

ADO.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 10
    Points
    10
    Par défaut mise-à-jour dataset typé
    Bonjour à tous et merci à ceux qui prendront de leur temps pour moi.

    Je suis en stage depuis 3-4semaines et je développe une application en .net utilisant un dataset créé graphiquement qui se connecte à une base access.

    J'ai 2 problèmes qui m'emm**** depuis le début de la semaine et après plusieurs heures de recherche infructueuse, je me tourne vers vous.

    Mon premier problème est que je n'arrive pas à faire les maj vers ma bdd:
    je ne sais pas pourquoi mais mon dataset ne m'a généré que la commande select. Les commandes update et delete de mes tableadapter ont leur propriétés "commandtext" vides et je ne sais pas quoi mettre dedans pour faire mes maj.

    ça c'était pour le premier problème, qui a le mérite d'être clairement défini.
    Le second, je me l'explique beaucoup moins:

    Quand je charge mon programme, j'effectue des modifications sur une des datatables, jusque là pas de problème, puis j'insère les données de cette table dans une autre datatable.
    Seulement voila : quand mon programme s'affiche, j'ai deux DGV qui affiche mes deux tables respectives, sauf que le DGV contenant la premiere table m'affiche la table modifié alors que dans le second, j'ai la deuxième table mais les données insérés dans cette table sont celles de la premiere table AVANT que l'on effectue des modifications dessus.

    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
     
                     'RPONE: 1ere table, Article:2eme table
                RPOneTableAdapter.Fill(Me.ListeDataSet.RPOne)
     
                     'modifie ma premiere table
                AfilierCatRPOne()	
     
    	         'supprime les lignes avec le champ fournisseur = RPOne
                ArticleTableAdapter.DeleteQuery()
    		 'insert la table RPOne dans Article
                ArticleTableAdapter.InsertQueryRPOne()
                ArticleTableAdapter.Fill(Me.ListeDataSet.Article)
     
     
                TabArticle = ListeDataSet.Tables("Article")
     
                DGVArticle.DataSource = TabArticle
                DGVRPOne.DataSource = ListeDataSet.Tables("RPOne")

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Bon, ben j'ai résolu mes deux problèmes par moi-même.

    Pour ceux que ça intéresse, ma première table ne possédait pas de clé primaire, donc impossible de générer les updatecommand et deletecommand.

    J'ai recréé mes tables en rajoutant un champ auto-incrémenté que j'ai désigné comme clé primaire et tout fonctionne nikel maintenant.

    Le deuxième problème c'est résolu tout seul quand j'ai résolu le premier : il m'a suffit de faire un update de ma 1ere datatable après les modifications effectués et la datatable s'insère correctement dans l'autre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    En fait, je me suis peut-être un peu trop avancé : j'ai réussi à générer mes requêtes update, delete et insert en rajoutant des clés primaires à mes tables,
    ma méthode update semble fonctionner (du moins elle ne donne pas de messages d'erreur), cependant rien ne se met à jour dans ma base de donnée.

    C'est d'autant plus bizarre que ça a résolu mon deuxième problème : maintenant quand j'insère ma table modifié dans la seconde elle prend bien en compte les modifications.

    J'ai un code du type :

    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
     
            Dim RPOneTableAdapter = New listeDataSetTableAdapters.RPOneTableAdapter
            RPOneTableAdapter.Fill(Me.ListeDataSet.RPOne)
     
     
    'modifie ma première table
            AfilierCatRPOne()
            SupprLigne(ListeDataSet.RPOne)
     
            Try
                RPOneTableAdapter.Update(ListeDataSet.RPOne)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     
    'met-à-jour ma deuxième table en fonction de la premièrre
            ArticleTableAdapter.DeleteQuery()
            ArticleTableAdapter.InsertQueryRPOne()
     
            Try
                ArticleTableAdapter.Update(ListeDataSet.Article)
                ListeDataSet.AcceptChanges()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     
            ArticleTableAdapter.Fill(Me.ListeDataSet.Article)

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Attention quand vous avez fait une mise à jour des données du dataset(copie des données en mémoire), vous devez synchroniser le dataset avec votre db.
    Est ce que vous l'avez fait ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Tout le code concernant la mise-à-jour est cité dans mon message précédent donc je ne pense pas...

    ça fait une heure que je cherche et j'ai rien trouvé à rajouter pour synchroniser. Je croyais que ça se fesait par le biais de la méthode update.
    Tu entends quoi par synchroniser ?

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim ds as new DataSet()
    'Les modif ici
     
    'Répercuter ces modifs dans la db.
    ds.AcceptChanges()

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Désolé du temps de réponse, j'ai pas eu trop de temps ces derniers jours.

    J'appelle la méthode acceptchanges à la fin de mes updates mais ça ne se met pas à jour pour autant.
    En plus, après quelques recherches, j'ai l'impression que la méthode acceptchanges est appelé automatiquement pour chaque row modifié dans la bdd par le update.

    Mon dataset a été créée graphiquement par le dataset designer de vs2008, peut-être que le problème vient de la vu que j'utilise les tableadapter générés automatiquement...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Désolé de faire remonter le post, mais j'arrive à la fin de mon stage et il me reste un paquet de truc à faire, et je suis bloqué dans pas mal de fonction à cause de ce problème de mise-à-jour.

    Alors je sais pas trop si c'est à cause de ça, mais j'ai l'impression que quand on crée graphiquement un dataset à partir d'une base de donnée, le dataset ne se met jamais à jour, en tout cas pas quand on lance le programme.

    En fait, si je modifie ma base de donnée et que le lance mon programme après, les modifications que j'ai effectué dans la base ne sont pas pris en compte.
    Si je rajoute un champ dans une de mes tables par exemple, la datatable correspondante ne sera modifié que si je la refait glissé de mon explorateur de serveur à mon dataset.xsd.

    J'hésite à tout recommencer et à créer un dataset à l'ancienne par le code mais ça m'obligerait à modifier un paquet de ligne.

    Si quelqun peut m'éclairer sur les dataset créés graphiquement, l'aide msdn est très limité pour ça je trouve.

Discussions similaires

  1. [Débutant] Probleme de mise à jour dataset avec champ multi-valués access (2007)
    Par gill-bates dans le forum VB.NET
    Réponses: 12
    Dernier message: 09/05/2014, 09h20
  2. problème mise à jour dataset
    Par freerider74 dans le forum VB.NET
    Réponses: 0
    Dernier message: 03/02/2009, 14h40
  3. probleme mise à jour dataset/bd
    Par nsanabi dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/08/2008, 17h10
  4. Réponses: 2
    Dernier message: 02/05/2006, 22h09
  5. [VS2003][VB.NET]Mise à jour DataSet d'une grille (erreur)
    Par m-mas dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/02/2006, 10h41

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