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

Accès aux données Discussion :

comment insérer dans la base de donnée à partir d'un formulaire?


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut comment insérer dans la base de donnée à partir d'un formulaire?
    bonjour,
    je suis débutante et je voudrai créer une application windows avec visual C# 2008, j ai créé la base de donnée et puis j ai créé une interface grace à laquelle je pourrai insérer des données dans la table "table_succession" et ce, en cliquant sur le boutton "ajouter"
    mais le problème est que je ne sais pas comment faire ?
    le code du boutton "ajouter" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void button1_Click(object sender, EventArgs e)
            {
                this.table_successionTableAdapter.Fill(this.database1DataSet1.table_succession);
     
     
            }
    je ne sais pas vraiment ce que je dois ajouter dans ce code ????? aidez svp !!

    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
    Fill n'ajoute rien à la base de données, ça remplit simplement le DataTable à partir de la base de données.

    Pour ajouter des données il faut les ajouter à la DataTable et appeler la méthode Update du TableAdapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void button1_Click(object sender, EventArgs e)
    {
        Database1DataSet1.table_successionRow row =  database1DataSet1.table_succession.Newtable_successionRow();
        row.Id = 123;
        row.Name = "toto";
        ...
        Database1DataSet1.table_succession.Addtable_successionRow(row);
        table_successionTableAdapter.Update(database1DataSet1.table_succession);
     
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    merci pour la réponse.
    en fait j ai ajouté le code et voila ce que ça donne : voir pièce jointe
    merci encore une fois
    Images attachées Images attachées  

  4. #4
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Apparemment ton Database1DataSet1.table_succession n'est pas disponible en Get.

    La propriété table_succession est-elle directement accessible depuis Database1DataSet1 ?

    Apparaît-il dans l'intellisense ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    oui elle est accessible

  6. #6
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Et la méthode Addtable_successionRow est aussi accessible ?

    Et lorsque tu compile l'erreur reste ?

  7. #7
    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 laedit Voir le message
    Database1DataSet1.table_succession n'est pas disponible en Get.
    Ce n'est pas du tout ce que dit le message d'erreur... il dit que c'est un membre d'instance et qu'on essaie d'y accéder comme à un membre statique.

    La ligne corrigée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    database1DataSet1.table_succession.Addtable_successionRow(row);
    (juste supprimé la majuscule au début pour faire référence au champ database1DataSet1 et non à la classe Database1DataSet1)

  8. #8
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Effectivement, j'étais parti totalement de travers, je manque de discernement ce matin :p

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    merci pour la réponse :-)
    effectivement c'était ça !!!
    mais je crois qu'il y a toujours un probleme car quand j ai compilé et j ai essayé d insérer des données ça me donne ceci (piece jointe)
    sachant que dan le champ num_compte_pivot j ai inséré une valeur non nulle !!!
    Images attachées Images attachées  

  10. #10
    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 thevirgin Voir le message
    sachant que dan le champ num_compte_pivot j ai inséré une valeur non nulle !!!
    Euh... où ça ? dans le code que je vois tu as juste créé une nouvelle ligne, sans initialiser aucun de ses champs...

  11. #11
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    je m y connais pas vraiment mais je crois que si je fais l insertion à partir de l interface "Form1" (pièce jointe) la ligne doit s ajouter automatiquement dans la base de données puisque chaque champ est lié à une colonne de la table ...
    sinon je crois que j ai quelque chose qui manque... je suis vraiment perdue...
    merci d avance
    Images attachées Images attachées  

  12. #12
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    De quelle façon sont liées l'interface et les colonnes de la table ?

    Mais de toute façon, ça ne suffit pas, tu indique à ta base de données que tu fait une insertion, mais il faut aussi lui passer les valeurs directement.

    Comme te l'a déjà montré tomlev, il faut faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Database1DataSet1.table_successionRow row =  database1DataSet1.table_succession.Newtable_successionRow();
        row.Id = 123;
        row.Name = "toto";
    donc pour chaque champ de ta ligne, tu lui affectera la valeur du contrôle correspondant de ton interface graphique.

  13. #13
    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
    Tes contrôles ne sont pas directement liés à la base de données, il sont liés au DataSet... Quand tu as fait des modifs sur le DataSet, tu les reportes sur la base à l'aide du TableAdapter

  14. #14
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    voici un aperçu de l interface .
    en fait les TextBox sont liés à la base de données, mais quand je clique sur "ajouter une requete" je ne peux faire que la selection et non l'insertion !!!
    et en bas montre que le DataSet et TableAdapter sont utilisés !!!
    mais ça marche pas encore !!!
    Images attachées Images attachées  

  15. #15
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Pour la requête de sélection, c'est normal, à la base le binding est mono-directionel, c'est à dire que tu ne peux qu'afficher les données.

    Quand il est multi-directionnel, tu peux afficher des données et les mettre à jour.

    Mais pour l'insertion, tu es obligée de le faire autrement, comme te l'a précisé tomlev depuis le début, tu créer une nouvelle ligne, tu lui affecte les valeurs de tes composants (TextBox et autres), tu l'ajoute à ton dataset et tu fait la mise à jour vers la base de données via le dataAdapter.

    Et qu'ils soient présent dans la barre en bas de ton formulaire montre seulement qu'ils sont déclarés, et non utilisés.

  16. #16
    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 laedit Voir le message
    Pour la requête de sélection, c'est normal, à la base le binding est mono-directionel, c'est à dire que tu ne peux qu'afficher les données.
    non, par défaut ils sont bidirectionnels...

  17. #17
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    bonjour,
    merci bcp pour vos réponses
    j ai inséré une ligne dans le code, mais quand je voudrai insérer des lignes à partir de l interface et je clique sur ajouter, il ne fait qu'afficher les valeur que j ai insérer à partir du code
    de plus, quand j'affiche les données de la table, la table est vide !!!!

  18. #18
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Donne-nous le bout de code où tu créer la ligne et où tu lui insère les données stp.

  19. #19
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    le voici :


    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
    private void button1_Click(object sender, EventArgs e)
            {
                this.successionTableAdapter.Fill(this.bd_bpDataSet.succession);
                bd_bpDataSet.successionRow row = bd_bpDataSet.succession.NewsuccessionRow();
     
                row.compte_pivot=1234566;
                row.nom_client = "aaaaa";
                row.prenom_client = "bbbbbb";
     
                bd_bpDataSet.succession.AddsuccessionRow(row);
                successionTableAdapter.Update(bd_bpDataSet.succession);
     
     
     
            }

  20. #20
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Il est normal que tu ai toujours les valeurs que tu donne dans ton code si tu ne fait toujours pas le lien entre ta nouvelle ligne et les valeurs de ton interface.

    Pour faire le lien, fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    this.successionTableAdapter.Fill(this.bd_bpDataSet.succession);
                bd_bpDataSet.successionRow row = bd_bpDataSet.succession.NewsuccessionRow();
     
    row.compte_pivot=Int32.Parse(txtCompte_pivot.Text);
    row.nom_client = txtNom_client.Text;
    row.prenom_client = txtPrenom_client.Text;
     
    bd_bpDataSet.succession.AddsuccessionRow(row);
    successionTableAdapter.Update(bd_bpDataSet.succession);
    En changeant bien sûr les txtCompte_pivot, txtNom_client et txtPrenom_client par les noms de tes TextBox.

    Et n'hésite pas à aller faire un tour sur les cours.

Discussions similaires

  1. [Oracle] Insérer dans la base de données à partir d'un checkbox
    Par nounou3007 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/03/2015, 23h26
  2. [MySQL] insertion dans une base de données à partir d'un formulaire
    Par japhettchabao dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/09/2014, 23h47
  3. Réponses: 0
    Dernier message: 17/04/2012, 10h38
  4. [CKEditor] Insérer dans ma base, les données saisies à partir de FCKeditor
    Par remo dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 16/05/2007, 10h44
  5. Réponses: 12
    Dernier message: 26/04/2007, 11h38

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