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 :

Mise à jour BDD SQL via DataGridView


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Mise à jour BDD SQL via DataGridView
    Bonjour,

    Je développe actuellement une application sous VB2005 travaillant avec SQL server 2005. Mon application se connecte, effectue des requêtes, affiche les résultats dans les IHM, crée des entrées dans des BDD ...etc.

    Aujourd'hui je coince sur un problème de mise à jour de tables.

    Mon but est de travailler sur un datagridview, celui-ci est alimenté par une structure type tableau. Une fois que le datagridview est rempli je souhaite transmettre l'intégralité de mon DataGridView à ma table.

    Voici en gros le cheminement des données :

    BDD SQL => Affiche table dans Datagrid => Modification des données du datagrid => Mise à jour de la table

    La table qui s'affiche dans le datagrid peut contenir n données et peut être aussi vide. L'IHM permet de supprimer, d'ajouter, modifier des données.

    Actuellement voici le code que j'utilise pour me connecter et afficher les données d'une table dans mon datagrid :

    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
            Dim MaConnexion As SqlConnection = New SqlConnection
            Dim Base As String
            Dim objDs As New Data.DataSet()
            Dim objDA As SqlClient.SqlDataAdapter
     
            MaBDD = "BDD_C"
            MaTable = "T100808_000"
            RequeteSQL = "SELECT * FROM " & MaTable
     
            Base = "Data Source=" & MonServeur & ";Initial Catalog=" & MaBDD & ";Integrated Security=SSPI;"
     
            objDA = New SqlClient.SqlDataAdapter(RequeteSQL, Base)
     
            objDA.Fill(objDs, MaTable)
     
            DataGridView1.DataSource = objDs.Tables(0)
     
            MaConnexion.Close()
    Pouvez-vous m'aider pour faire le cheminement inverse, Datagrid => Table BDD SQL ?

    Merci d'avance.

  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 754
    Points
    39 754
    Par défaut
    http://dotnet.developpez.com/articles/ado2/vbnet/

    En gardant le même DataAdapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim objBuilder As New SqlCommandBuilder(objDA)
    objDA.Update(objDs, MaTable)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réactivité !

    J'ai essayé ce code, mais voici l'erreur que j'obtiens :

    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é.
    EDIT
    Le message d'erreur provient du fait que cette table ne contient pas de clé primaire. J'ai déclaré mon premier champs dans SQL server comme clé primaire et maintenant cela fonctionne très bien.
    Je n'ai pourtant pas besoin de clé primaire, car ces indices changeront par la suite. Est-il possible de réaliser la même chose sur une table sans clé primaire ?

  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 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Alexis_W Voir le message
    Est-il possible de réaliser la même chose sur une table sans clé primaire ?
    Oui, mais pas avec un CommandBuilder
    Il faudra définir toi même les UpdateCommand, InsertCommand et DeleteCommand du DataAdapter (avec des paramètres pour chaque colonne de la DataTable)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour toutes ces précisons.

    Juste une dernière chose en rapport avec cette clé primaire. Dans les messages précédent j'ai u ce message d'erreur car ma table ne contenait pas de clé primaire, hors cette tables (et toutes mes autres tables) sont créées à partir d'une table "modèle", qui contient effectivement une clé primaire. Hors lorsque je duplique cette table "modèle", la nouvelle table créée ne voit pas le 1er champ entant que clé primaire. La requête que j'utilise pour dupliquer mon modèle est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RequeteSQL = "SELECT * INTO " & MaNouvelleTable & " FROM Table_Modele"
    Pouvez-vous m'aider sur ce point ? De façon à ce que la table créée est son premier champ de même nature que le modèle (clé primaire).

    Merci.

  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 754
    Points
    39 754
    Par défaut
    En gros il faudrait copier la table...
    Je sais pas trop comment on fait ça, tu devrais poser la question sur le forum SQL Server

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    OK, merci encore pour vos réponses.

Discussions similaires

  1. Mise à jour Tables access via Datagridview
    Par Apocalyptico dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/02/2010, 14h17
  2. Réponses: 3
    Dernier message: 15/09/2008, 08h32
  3. Mise à jour bd access via dataGridView ignorée
    Par frochard dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/09/2008, 14h58
  4. Mise à jour champs modifés via formulaire
    Par Al3x dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/01/2006, 17h31
  5. Module de Mise à jour BDD access via un site sécurisé
    Par Askarod dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/12/2005, 08h31

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