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

Windows Forms Discussion :

[VS2003][VB.NET]Mise à jour DataSet d'une grille (erreur)


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut [VS2003][VB.NET]Mise à jour DataSet d'une grille (erreur)
    Bonjour,
    j'ai 2 grilles avec une qui est maître, l'autre qui est détail.
    je génère un dataset avec 2 data tables (ok)
    je génère une relation et j'affecte les datasource et les datamember (ok)

    voici le code simplifié :
    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
    Dim Sql1 As String = "SELECT * from T1"
    Dim Sql2 As String = "Select * from T2"
     
            Dim cn As New SqlConnection("Server=MonServeur;uid=sa;pwd=***;Database=MB")
            daCust = New SqlDataAdapter(Sql1, cn)
            Dim daEmp As New SqlDataAdapter(sql2, cn)
     
            ds = New DataSet
            daCust.Fill(ds, "Taux")
            daEmp.Fill(ds, "Decompo")
     
            DataGrid1.DataSource = ds
            DataGrid1.DataMember = "Taux"
     
    ds.Relations.Add("R_1_2", _
                ds.Tables("Taux").Columns("T1_ID"), _
                ds.Tables("Decompo").Columns("T2_ID"))
     
     
            DataGrid2.DataSource = ds
            DataGrid2.DataMember = "Taux.R_1_2"
    jusque la tout va bien (les ds et le dataadapter dacust sont déclaré comme variables globales)

    maintenant sur l'évenement click d'un bouton, je veux sauvegarder le ds

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim CmdBuild As SqlCommandBuilder
            CmdBuild = New SqlCommandBuilder(dacust)
     
            dacust.DeleteCommand = CmdBuild.GetDeleteCommand()
     
            If ds.HasChanges(DataRowState.Modified) Then
                              dacust.Update(ds, "Taux")
            End If
    j'ai une erreur sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dacust.DeleteCommand = CmdBuild.GetDeleteCommand()
    qui est
    la génération SQL dynamique n'est pas prise en charge pour plusieurs tables de base
    je ne peux pas mettre à jour un ds avec plusieurs datatable
    comment doit je faire ?

    Merci pour vos réponses !

  2. #2
    Expert éminent
    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 : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    tu dois passer par les requêtes du DataAdapter et non par le commandBuilder

  3. #3
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Merci bidou :

    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
    Dim SQLUpdate As New SqlCommand
     
            SQLUpdate.CommandText = "UPDATE T1 SET agentID = @IdAgent " & _
                        "where TID = @IDLigne"
            SQLUpdate.Connection = ConnectSQL()
            SQLUpdate.Parameters.Add("@IdAgent", SqlDbType.Int, 15, "agentID")
            SQLUpdate.Parameters.Add("@IDLigne", SqlDbType.Int, 15, "TID")
     
            dacust.UpdateCommand = SQLUpdate
     
            If ds.HasChanges(DataRowState.Modified) Then
                If MsgBox("voulez vous sauvegarder ?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Question") = 6 Then
                    dacust.Update(ds, "Taux")
                    ds.AcceptChanges()
                    ds.Clear()
                    Call sRemplirNiveau1()
                    Call sRemplirNiveau2()
                Else
                    ds.AcceptChanges()
                    ds.Clear()
                    Call sRemplirNiveau1()
                    Call sRemplirNiveau2()
                End If
     
            End If

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

Discussions similaires

  1. c#/ado.net --> mise à jour du dataset
    Par replicator dans le forum C#
    Réponses: 2
    Dernier message: 26/05/2011, 12h43
  2. [Delphi2007]Mise à jour automatique d'une grille
    Par lun4t1k dans le forum Langage
    Réponses: 5
    Dernier message: 05/09/2007, 23h26
  3. [VB.NET] Mise à jour d'un site à partir d'une application
    Par boulete dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/04/2006, 12h15
  4. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 09h23
  5. [VB.NET] Alimenter un dataset avec une chaine XML...
    Par David.V dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/05/2004, 09h09

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