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

Accès aux données Discussion :

[VB.Net 2.0] Pourquoi ma DataTable ne se modifie pas malgré l'Update ?


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut [B][VB.Net 2.0][Débutante] Pourquoi ma DataTable ne se modifie pas malgré l'Update ?
    Après beaucoup de tatonnements (je suis novice en visual basic) j'ai réussi à copier une table dans une autre par l'intermédiaire d'une form visual basic 5 (que j'ai en test).

    Quand je lance mon appli, la table cible est bien remplie de la table source ( je le vérifie sur ma form avec le BindingNavigator ) mais lorsque je quitte, la datatable cible n'est pas modifiée alors que j'ai utilisé la commande "table.update".

    Voila le code que j'utilise pour copier et qui marche dans mon appli :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
     System.EventArgs) Handles Button1.Click
            Dim drorigine As DataRow
     
            For Each drorigine In DataSet1.auteur.Rows
                DataSet1.AUTEUR2.ImportRow(drorigine)
            Next
     
        End Sub
    Pour valider, j'utilise le bouton "valider" du BindingNavigator ; si j'ajoute des données ligne à ligne, c'est ok.
    Par contre si je supprime une ligne ou bien la modifie, j'ai un message d'erreur : le code du BindingNavigator doit il etre modifié ?
    Est ce que ma non sauvegarde de mes données vient de là ?

    Après moultes réflexions, j'ai pu modifier une table au travers du BindingNavigator avec "DELETE" en créant une clef primaire directement dans la base d'origine mais par contre je ne peux toujours pas mettre à jour ma table quand je quitte mon programme.
    Faudrait-il mettre à jour à chaque ajout de ligne ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut [B][/B]Suite de ma recherche
    A priori, lors du débogage, le programme ne reconnait pas les fichiers "AUTEUR2" (table SQL) et "DATASET1" (table DBase que j'ai rajoutée sur le dataset "AUTEUR2" et d'où je cherche à extraire mes données) alors que c'est le programme qui a créé ces noms et les routines en fonction du dataset !

    Là, je ne comprends plus rien : en Visual DBAse quand on déclare une table, elle existe et on n'a pas de problèmes après...

    Et cela n'empêche pas la mise à jour de la table quand j'effectue des changements par les boutons du BindingNavigator !!!

    D'autre part je me suis aperçue que les données que je copie pendant l'exécution de mon programme ne sont pas prises en compte par le BindingNavigator ; seules les données ajoutées à la main par la méthode du BindingNavigator sont enregistrées dans la table...

    J'avoue que je suis complètement perdue et qu'un peu d'aide serait la bienvenue : j'ai acheté trois livres sur Visual Basic dans l'environnement Visual Studio 5 mais je n'ai sans doute pas pris les bons ou bien pas su les utiliser de la bonne façon...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut ...La Suite
    Je crois tenir une piste : il semble que la méthode "Import Row" importe la ligne telle quelle sans en changer aucun paramètres et donc le statut "RowState" ne passe pas à "Added" et donc quand j'appelle mon "BindingNavigator Update" il ne fait rien car pour lui les lignes sont dant la table.
    Comment puis je changer le statut de la ligne en "Added" ?

  4. #4
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    en passant par NewRow plutôt que par ImportRow

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut Méthode NewRow
    Merci de ta réponse,

    J'ai en effet lu qu'il fallait utiliser "NewRow" à la place de "ImportRow" mais je n'ai pas trouvé d'exemple de code qui me permette de l'adapter pour l'utiliser.

    Si tu avais la gentillesse de me mettre sur une piste, ce serait super ...

    De mon coté, je continue à chercher :
    Voila le code que j'ai écrit :
    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
     
     
            Dim drorigine As DataRow
            For Each drorigine In GestionBibliothèque1DataSet.DataTable1.Rows
                Dim drimport As DataRow=GestionBibliothèque1DataSet.AUTEUR2.NewRow()
                drimport("N0Auteur") = drorigine("N0AUTEUR")
                drimport("NOMAUTEUR") = drorigine("NOMAUTEUR")
                drimport("GENRE") = drorigine("GENRE")
                GestionBibliothèque1DataSet.AUTEUR2.Rows.Add(drimport)
                '  GestionBibliothèque1DataSet.AUTEUR2.ImportRow(drorigine)
            Next
     
            GestionBibliothèque1DataSet.AUTEUR2.AcceptChanges()
            Me.AUTEUR2TableAdapter.Update(Me.GestionBibliothèque1DataSet.AUTEUR2)
        End Sub
    Mais ça ne marche toujours pas .... mes lignes sont dans mon dataset tant que mon programme est ouvert mais quand je le ferme, je n'ai rien dans mon dataset et dans ma table...
    (désolé, je viens de voir les liens sur ton message, merci beaucoup, j'y cours....)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut Résolu
    Voilà le code final qui MARCHE !!!!!!!!

    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
    Dim drorigine As DataRow
      For Each drorigine In GestionBibliothèque1DataSet.DataTable1.Rows
        Dim drimport As DataRow=GestionBibliothèque1DataSet.AUTEUR2.newRow()
                drimport("N0Auteur") = drorigine("N0AUTEUR")
                drimport("NOMAUTEUR") = drorigine("NOMAUTEUR")
                drimport("GENRE") = drorigine("GENRE")
                GestionBibliothèque1DataSet.AUTEUR2.Rows.Add(drimport)
                '  GestionBibliothèque1DataSet.AUTEUR2.ImportRow(drorigine)
      Next
          Try
     Me.Validate()
     Me.AUTEUR2BindingSource.EndEdit()     
     Me.AUTEUR2TableAdapter.Update(Me.GestionBibliothèque1DataSet.AUTEUR2)
     MsgBox("Update successful")
          Catch ex As Exception
     MsgBox("Update failed")
          End Try
    Par contre si quelqu'un peut m'expliquer plus en détail pourquoi ce second code marche : à cause de "Me.Validate()" ou car j'ai enlevé la méthode "AcceptChange" ?
    Merci de vos réponses ...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/01/2013, 15h50
  2. Que choisir ? C# , VB.NET, C++, Delphi ? pourquoi ?
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 475
    Dernier message: 08/04/2010, 19h27
  3. Réponses: 5
    Dernier message: 30/01/2009, 12h00
  4. [VB.NET] Lier 1 report à 1 DataTable qui vient pas d'une BD
    Par borgfabr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/03/2005, 12h02

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