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 :

Mise à jour source de données à partir d'un dataset à la suite d'un merge.


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Mise à jour source de données à partir d'un dataset à la suite d'un merge.
    Bonjour,
    Depuis trois jours j'arrive pas à comprendre ce qui se passe dans mon code qui me semble plutôt claire.
    Je dois déplacer les données de puis une base de données situé sur mon ordi vers une autre grâce à un programme VB.NET(je suis un bleu) et j'utilise ado.net et les dataset.

    Mon algo est le suivant, je me connecte à ma BD local et sélectionne les lignes vérifiant ma requête jusque là ça va, ces données sont ensuite injectées dans un dataset.
    Je me connecte ensuite avec une nouvelle connexion vers la bd distante, je couple ses données avec un nouveau dataset, ensuite je fais un merge pour charger les données du premier dataset devant être rapattrié dans le deuxième dataset avant de faire un update mais rien ne se passe dans la bd à mettre à jour.
    Je vérifie meme le contenu du dataset et constate que le merge fonctionne parfaitement mais l'update ne fonctionne pas et je ne reçois aucun message d'erreur.

    Voici un bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub WriteBatch(ByVal nPoste As String, ByVal ds As DBDataSet)
            Dim strSql As String = queryStart + nPoste + "_BATCH" + queryEnd
            batchCommand = New MySqlCommand(strSql, dbConn)
            batchAdapter = New MySqlDataAdapter(batchCommand)
            batchAdapter.Fill(dbData, "batch")
            dbData.Merge(ds.Tables("batch"))
            myCommandBuilder = New MySqlCommandBuilder(batchAdapter)
           batchAdapter.Update(dbData, "batch")
    End Sub
    Merci de m'éclairer s'il vous plait

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut la pire solution
    en fait j'ai finalement utilisé la pire des solutions, celle que je ne voulais pas utiliser par soucis de performance, une double boucle for pour parcourir toutes les données du nouveau dataset et les ajoutées à l'ancien.
    ça marche mais ça ne me plait d'utiliser un FOR sil vous plait aidez-moi à optimiser.
    Sample code
    D'abord la méthode addData suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub addData(ByVal ds As DBDataSet, ByVal tableName As String)
            Dim dtin As DataTable = ds.Tables(tableName)
            Dim dtout As DataTable = dbData.Tables(tableName)
            For rowNumber As Integer = 0 To dtin.Rows.Count - 1
                Dim drin As DataRow = dtin.Rows(rowNumber)
                Dim drout As DataRow = dtout.NewRow
                For colNum As Integer = 0 To dtin.Columns.Count - 1
                    drout(colNum) = drin(colNum)
                Next
                dtout.Rows.Add(drout)
            Next
        End Sub
    Puis le correctif au bout de code précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub WriteBatch(ByVal nPoste As String, ByVal ds As DBDataSet)
            Dim strSql As String = queryStart + nPoste + "_BATCH" + queryEnd
            batchCommand = New MySqlCommand(strSql, dbConn)
            batchAdapter = New MySqlDataAdapter(batchCommand)
            batchAdapter.Fill(dbData, "batch")
            addData(ds, "batch")
            myCommandBuilder = New MySqlCommandBuilder(batchAdapter)
            batchAdapter.Update(dbData, "batch")
        End Sub

Discussions similaires

  1. [MySQL] Mise à jour base de données à partir d'un Active Directory
    Par Arkodath dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/06/2015, 15h09
  2. Mise à jour base de données à partir d'un datagrid
    Par elyboss dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/09/2009, 15h37
  3. Réponses: 7
    Dernier message: 16/01/2007, 15h54
  4. Réponses: 2
    Dernier message: 17/05/2006, 17h54
  5. [CR11] mise à jour source de donnée modifiée
    Par KrusK dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 16/08/2005, 14h36

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