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

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut La génération SQL dynamique de UpdateCommand n'est pas prise en charge pour un SelectCommand qui ne retourne p
    Bonjour
    j'ai une table "produit" qui contient des données que je veux les transferer à une autre table "article_h" on testant sur le libelle .

    Quand j'execute je reçois ce message
    La génération SQL dynamique de UpdateCommand n'est pas prise en charge pour un SelectCommand qui ne retourne pas des informations de colonne clé
    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
     Dim req2 As New SqlClient.SqlDataAdapter("select * from ARTICLE_h", con)
            ds = New DataSet
            req2.Fill(ds, "req2")
            For j = 0 To ds.Tables("req2").Rows.Count - 1
                Dim req3 As New SqlClient.SqlDataAdapter("select * from produit where LIBELLE = '" & Replace(ds.Tables("req2").Rows(j).Item(2), "'", "''") & "'", con)
                req3.Fill(ds2, "req3")
                If ds2.Tables.Item(0).Rows.Count > 0 Then
     
                    ds.Tables("req2").Rows(j).Item(1) = ds2.Tables("req3").Rows(0).Item(0)
                    ds.Tables("req2").Rows(j).Item(6) = ds2.Tables("req3").Rows(0).Item(5)
     
                    Dim com As New SqlClient.SqlCommandBuilder(req2)
                    req2.Update(ds, "req2")
     
                End If
     
     
            Next
            MsgBox("la modiffication est effectuer", MsgBoxStyle.OkOnly, "modiffication")
    Je ne sais pas ou est le problème.

    Merci de m'aider.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Le problème, c'est que tu utilises un CommandBuilder pour générer les Update/Insert/Delete, mais comme ta table n'a pas de clé primaire, ça ne fonctionne pas... Crée une clé primaire sur ta table, et ça devrait marcher

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut ca marche
    Merci mon ami ca marche !!!

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour, j'ai une erreur qui resemble a la votre et que j'arrive pas a resoudre.
    La genération SQL dynamique n'est pas prise en charge pour plusieur table de la base
    j'ai 2 table et chaqu'une a une clé primaire et ya une clé etrangere pour les reliés.

    voila mon code
    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
        Private Sub ajouter(ByVal c As String, ByVal n As String, ByVal p As String, ByVal a As String, ByVal pr As String)
            Dim ligne As DataRow = dt.NewRow
            ligne.Item("cin") = c
            ligne.Item("nom") = n
            ligne.Item("prenom") = p
            ligne.Item("annee") = a
            ligne.Item("profession") = pr
            dt.Rows.Add(ligne)
     
        End Sub
     
        Private Sub btn_ajouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ajouter.Click
            Try
                ajouter(txt_cin.Text.ToString, txt_Nom.Text.ToString, txt_prenom.Text.ToString, cbo_an.Text.ToString, cbo_prof.Text.ToString)
                Dim dbc As OleDbCommandBuilder = New OleDbCommandBuilder(adapt)
                adapt.Update(dts)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    merci pour votre aide

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    la genération SQL dynamique n'est pas prise en charge pour plusieur table de la base
    A priori ça veut dire que la requête SELECT du DataAdapter effectue une jointure sur deux tables. Le CommandBuilder ne peut pas générer de commande update dans ce cas, il faut que la requête porte sur une seule table.

    La solution la plus "simple" est de créer toi même la commande Update du DataAdapter. Il faut juste faire une requête UPDATE avec des paramètres pour chaque valeur, en définissant la propriété SourceColumn de chaque paramètre. De cette façon le DataAdapter ira chercher les valeurs des paramètres dans les colonne correspondantes de la DataTable

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

Discussions similaires

  1. application Web d’entités Dynamic Data n'est pas prise en charge
    Par rokirakat dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 10/10/2011, 14h02
  2. Réponses: 7
    Dernier message: 01/06/2011, 12h41
  3. erreur : "La topologie actuelle n'est pas prise en charge"
    Par chantalboyer dans le forum Installation
    Réponses: 0
    Dernier message: 28/12/2010, 19h32
  4. Réponses: 9
    Dernier message: 30/01/2008, 09h35
  5. Réponses: 6
    Dernier message: 09/07/2007, 13h49

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