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 :

Problème de suppression d'un enregistrement (DatagridView/DataSet)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut Problème de suppression d'un enregistrement (DatagridView/DataSet)
    J'ai ce code qui s'execute quand je clique sur le boutton supprimer.
    Principe :
    Je séléctionne une ligne de la grille, les informations s'iffichent dans des zones de textes, je veux que quand je clique la ligne courante s'efface de la DataGridView ansi que de la base de données.

    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
    Dim cmd As SqlCommand = New SqlCommand("Select * from articles_design where idarticle =" & Val(Me.dgvDesignation.CurrentRow.Cells("idarticle").Value), cnx)
    Dim da As SqlDataAdapter = New SqlDataAdapter(cmd)
    Dim ds As New DataSet
    ds.Clear()
    da.Fill(ds, "articles_design")
    'récupère la clé de l'enregistrement sélectionné 
    Dim idArticle As String
    idArticle = dgvDesignation.CurrentRow.Cells(0).Value.ToString
    'recherche de la ligne a supprimer dans le DataSet
    Dim Ligne As DataRow()
    Ligne = ds.Tables("articles_design").Select("idarticle = " & idArticle)
    'Suppression
    Ligne(0).Delete()
    Dim CmdBuild As SqlCommandBuilder
    CmdBuild = New SqlClient.SqlCommandBuilder(da)
    da.DeleteCommand = CmdBuild.GetDeleteCommand()
    'Mise a jour avec la base
    da.Update(ds, "articles_design")
    'femeture de la connexion
    Dim dt As DataTable
    dt = ds.Tables("articles_design")
    Me.dgvDesignation.DataSource = dt
    Me.dgvDesignation.Refresh()
    J'ai l'erreur suivante :
    La génération SQL dynamique de DeleteCommand n'est pas prise en charge pour un SelectCommand qui ne retourne pas des informations de colonne clé.

    Je n'y arriva pas, svp faut que je respecte une DeadLine.
    Merci

  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 : 42
    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 749
    Points
    39 749
    Par défaut
    Est-ce que ta colonne idarticle est bien la clé primaire de la table ? Si ce n'est pas le cas il ne peut pas générer automatiquement la commande Delete.

    Essaie de mettre la liste des colonnes dans ton SELECT, plutôt que "*"

    Si vraiment ça ne marche pas, définis toi-même la DeleteCommand, avec un paramètre idarticle

  3. #3
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci pour ta réponse tomlev.
    J'ai essayé avec les noms des champs au lieu de "*" mais ca ne fonctionne tjrs pas.
    En fait, dans la table que j'utise, la clef primaire est une clef composite de Idarticle et Adlangue.
    Et pour le deletecommand, comment pourrais-je la définir? tu parle d'une instruction Delete à passer à la commande?

  4. #4
    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 : 42
    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 749
    Points
    39 749
    Par défaut
    je parle de la propriété DeleteCommand du SqlDataAdapter

  5. #5
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Je me réfère à la manière de suppression décrite dans le cours de Mr. Lasserre, mais je n'arrive vraiment pas à supprimer.
    http://plasserre.developpez.com/v6-5.htm

  6. #6
    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 : 42
    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 749
    Points
    39 749
    Par défaut
    ben fais comme je t'ai dit : puisqu'il n'arrive pas à générer automatiquement la DeleteCommand, écris la toi-même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    da.DeleteCommand = new SqlCommand("DELETE FROM articles_design WHERE IdArticle = @IdArticle AND Adlangue = @Adlangue"
    da.DeleteCommand.Parameters.Add("@IdArticle", SqlDbType.Int, 0, "IdArticle")
    da.DeleteCommand.Parameters.Add("@Adlangue", SqlDbType.Varchar, 100, "Adlangue")
    Bien sûr il faudra sans doute adapter un peu les valeurs, je ne connais pas le schéma exact de ta base... le dernier paramètre de Add est le nom de la colonne dans le Dataset

Discussions similaires

  1. [WD19] Problème de suppression d'un enregistrement
    Par mimi1255 dans le forum WinDev
    Réponses: 3
    Dernier message: 25/03/2014, 15h17
  2. Réponses: 3
    Dernier message: 30/09/2010, 13h06
  3. Problème de suppression d'enregistrement dans un fichier vb6
    Par alighieri dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/06/2008, 11h51
  4. Problème lors de la suppression d'un enregistrement
    Par Salamander24 dans le forum Modélisation
    Réponses: 3
    Dernier message: 15/03/2008, 15h30
  5. [C#] Datagridview, dataset, etc Problème de refresh
    Par nitrous007 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/12/2006, 14h01

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