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 :

BindingSource et BindingNavigator [Débutant]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Par défaut BindingSource et BindingNavigator
    Bonjour,

    J'ai une toute petite base de données access et je voudrais la visualiser/modifier à l'aide d'un winform.
    J'ai donc créé une application avec un formulaire contenant notamment des textbox. J'ai créé une liaison avec la BD et ajouté aussi un contrôle BindingNavigator.
    ça marche très bien pour parcourir les enregistrements mais pas pour les modifier. La base ne se met pas à jour.
    J'ai du oublier quelque chose mais quoi?

    Merci d'avance pour votre aide

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    La solution pour les débutants consiste à utiliser l'IDE VS .
    Un composant généré par le Designer (IDE) VS dénommé TableAdapter fera le "sale" travail pour toi.

    La procédure qui suit suppose que ta source de données(BD) avec les tables appropriées a été ajouté à l'aide du Designer via :
    le menu Données =>ajouter Source de Données

    Ensuite tu pointes à :
    Menu Outils->Afficher Source de Données clique droit
    dans la fenêtre qui 'affiche :
    Sélectionne ta Table
    1/ clique sur le bouton "flèche"
    dans le menu déroulant choisit DGV en cliquant
    Sélectionne ta table et Droppe la(eh oui) sur ton forme et un DGV lié surgit
    2/ clique sur le bouton "flèche"
    dans le menu déroulant choisit Détails en cliquant
    Sélectionne un champ et Droppe le(eh oui) sur ton forme et un textbox lié à ta table surgit
    D'autres options (personnaliser...) existent pour d'autres controls.

    Ce travail fait ,tu ajoute au BindingNavigator un bouton et tu choisit l'event Click dans le designer .
    Dans son handler tu "tapes" le 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
    21
    22
    23
    24
     
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                // TODO: cette ligne de code charge les données dans la table 'DomiDataSet.Domi'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
                        this.DomiTableAdapter.Fill(this.DomiDataSet.DomiTable);
            }
     
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
     
                this.DomiTableAdapter.Update(this.DomiDataSet);
            }
        }
    }
    un screen shot en p.j.

    bon code....

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Par défaut
    Bonjour et merci pour ta réponse,

    Voici ce que j'ai fait :

    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
    26
    27
    namespace Entrep
    {
        public partial class fClients : Form
        {
            public fClients()
            {
                InitializeComponent();
            }
     
            private void fClients_Load(object sender, EventArgs e)
            {
                // TODO: cette ligne de code charge les données dans la table 'entrepriseDataSet.Clients'. Vous pouvez la déplacer ou la supprimer selon les besoins.
                this.clientsTableAdapter.Fill(this.entrepriseDataSet.Clients);
     
            }
     
            private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
            {
     
            }
     
            private void bSauver_Click(object sender, EventArgs e)
            {
                this.clientsTableAdapter.Update(this.entrepriseDataSet);
            }
        }
    }
    Avec ça j'ai fait 3 choses:
    1. Modifier une ligne de ma table
    2. Supprimer une ligne de ma table
    3. Ajouter une ligne de ma table


    La suppression a fonctionné
    La modification pas du tout
    et l'ajout à fait ceci : une ligne vide a été ajoutée.

    Voilà j'espère que tu pourras trouver la solution
    Je te remercie d'avance

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour
    Ta table en BD doit posséder une clé primaire sinon les modifs faites avec TableAdapter.Update() ne sont pas acceptées.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Par défaut
    Bonjour,

    Ma table a une clé primaire
    Voici une vidéo du problème:



    Ni le son ni la trace de la souris ne se sont enregistrés (j'ai utilisé le logiciel "Debut NCH" pour la première fois) mais je pense que c'est compréhensible..
    Notes que la clé primaire est un numéro auto dans Access. Je ne comprends pas pourquoi il me mets des numéros négatifs.

    Domi

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    voici le code complet généré par VS :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    namespace WinDB
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                // TODO: cette ligne de code charge les données dans la table 'domiDataSet.Table1'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
     
     
                this.table1TableAdapter.Fill(this.domiDataSet.Table1);
     
     
            }
     
     
     
            private void table1BindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                this.Validate();
                this.table1BindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.domiDataSet);
     
            }
            //  rajoute un bouton refresh
            //  code ci-dessous à TAPER 
            private void button1_Click(object sender, EventArgs e)
            {
                this.table1TableAdapter.Fill(this.domiDataSet.Table1);
     
            }
     
        }
    }
    ce code exécute les 3 opérations (ajout,suppression et modif).
    Les champs NumeroAuto sont autogénérés en BD et pour le vérifier j'ai donné le code du bouton "refresh".
    bon code...

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

Discussions similaires

  1. BindingNavigator + BindingSource + Textbox
    Par g0ldenrno dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/04/2007, 14h42
  2. [C#]Probleme insertion de donee avec bindingsource
    Par pas05 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/04/2006, 00h08
  3. [VB.NET][2.0]recupérer des valeurs d'un bindingsource
    Par Golzinne dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/03/2006, 18h43
  4. [VB.NET][2.0]Récupérer les données d’un BindingSource
    Par Golzinne dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/03/2006, 08h59
  5. [C#] Problemes bindingsource
    Par pas05 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/11/2005, 20h42

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