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 :

Erreur lors du clic sur "mise à jour"


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut Erreur lors du clic sur "mise à jour"
    Bonjour,

    Voici un programme que je doit créer pour la gestion d'une base de données.


    Or j'ai une erreur lorsque je clique sur le bouton "Mise à jour" du formulaire et l'application passe en "not responding" idem pour le bouton "bibilothèque".

    La base de donnée est une base de données Access.


    Voici mon code source:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Form1
        Dim Connexion As String
        Dim ConnexionOLE As OleDbConnection
        Dim da As OleDbDataAdapter
        Dim ds As DataSet
        Dim dv As DataView
        Dim cb As OleDbCommandBuilder
     
        Public Sub AfficheTous()
            Connexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\juninho\Documents\bd1.mdb"
            ConnexionOLE = New OleDbConnection
            ConnexionOLE.ConnectionString = Connexion
            da = New OleDbDataAdapter("Select * from switchs", ConnexionOLE)
            ds = New DataSet()
            da.Fill(ds, "switchs")
            dv = ds.Tables("switchs").DefaultView
            DataGridView1.DataSource = dv
            dv.AllowEdit = True
        End Sub
     
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            AfficheTous()
        End Sub
     
        Private Sub Bibliothèque_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bibliothèque.Click
            Connexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\juninho\Documents\bd1.mdb"
            ConnexionOLE.ConnectionString = Connexion
            da = New OleDbDataAdapter("Select * from switchs where [LibelleObjet]='bibliothèque'", ConnexionOLE)
            ds = New DataSet()
            da.Fill(ds, "switchs")
            dv = ds.Tables("switchs").DefaultView
            DataGridView1.DataSource = dv
            dv.AllowEdit = True
        End Sub
     
        Private Sub Tous_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tous.Click
            AfficheTous()
        End Sub
     
        Private Sub MiseAjour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MiseAjour.Click
            Connexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\juninho\Documents\bd1.mdb"
            ConnexionOLE.ConnectionString = Connexion
            cb = New OleDbCommandBuilder(da)
            da.Update(ds, "switchs")
        End Sub
     
        Private Sub Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click
            Application.Exit()
     
        End Sub
    End Class
    Merci pour votre aide


  2. #2
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    A vrai dire on ne peut pas vraiment t'aider car tu nous dit juste : J'ai une erreur, merci de m'aider ...
    Il va etre difficile pour nous de deviner la dite erreur
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour

    effectivement j'étais un peu HS hier et j'ai oublier la capture d'écran avec l'erreur... .

    La voici:


    désolé pour l'oubli et merci
    Images attachées Images attachées  

  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
    A priori ta table switchs n'a pas de clé primaire, et donc le command builder ne sait pas générer les commandes UPDATE/INSERT/DELETE adéquates pour la mettre à jour.
    Mets une clé primaire sur la table et ça devrait passer

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour
    merci, je vais esayer

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour

    me revoici après des semaines d'interros... .

    J'ai donc mis en place en clé primaire, sur mon unique table de ma Base Access, mais j'ai toujours cette erreur...



  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 749
    Points
    39 749
    Par défaut
    Essaie d'indiquer aussi dans la DataTable (dans le dataset) quelle est la clé primaire

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    je me re consacre à ce projet dès ce soir.

    Sinon une question supplémentaire:

    J'ai trouver sur msdn, le code pour supprimer une ligne d'une datatable ( commande DELETE je crois).

    Mais si j'ai bien compris ( VB.Net ou C#), il faut préciser la ligne à supprimer.

    Vais pas écrire ce code 100 fois car j'ai 100 lignes potentiellement supprimable ?

    Il doit bien y avoir un truc pour effacer des donner d'une base Access via une ComboBox ou autre... .

    ca serais plus simple sachant que utilisateur lamba devrais s'en sortir d'où l'importance de l'interface graphique.


    Merci

  9. #9
    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
    Citation Envoyé par juninho Voir le message
    J'ai trouver sur msdn, le code pour supprimer une ligne d'une datatable ( commande DELETE je crois).
    DELETE c'est du SQL...
    Par contre tu as la méthode DataRow.Delete, qui marque la ligne comme supprimée. Elle sera effectivement enlevée de la DataTable quand tu appelleras AcceptChanges (appelé automatiquement lors du DataAdapter.Update, à moins que tu aies mis AcceptChangesDuringUpdate à false)

    Citation Envoyé par juninho Voir le message
    Mais si j'ai bien compris ( VB.Net ou C#), il faut préciser la ligne à supprimer.

    Vais pas écrire ce code 100 fois car j'ai 100 lignes potentiellement supprimable ?
    Non, il ne faut l'écrire qu'une fois, mais avec un paramètre qui indique la ligne à supprimer...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Tu as vu juste, c'est bien de ça dont je parlais.

    Sinon pour le paramètre, il faut que ce soit la ligne séléctionner via l'interface graphique.

    Vais chercher pour voire comment on fait, sinon, je posterais en réponse ici même... .


    Merci

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour

    voici les fruits de mes recherches:

    http://msdn.microsoft.com/fr-fr/library/5ycd1034.aspx

    http://msdn.microsoft.com/fr-fr/library/feh3ed13.aspx

    http://msdn.microsoft.com/fr-fr/library/tat996zc.aspx

    Mais étant un Grand débutant, je suis loin d'avoir tout compris... .

  12. #12
    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
    J'ai pas compris sur quoi tu bloques, donc c'est difficile de t'aider...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour

    me revoilà pour de plus amples précisions:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
     
     
     
    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 'switchscruasDataSet.Switchs'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
                this.switchsTableAdapter.Fill(this.monDataSet.Switchs);
     
            }
     
            private void Quitter_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
     
            private void Ajout_Click(object sender, EventArgs e)
            {
                DataRow newSwitchsRow = monDataSet.Tables["Switchs"].NewRow();
     
                newMatableRow["N°"] = "";
                newMatableRow["Numéro Interne"] = "";
                newMatableRow["Adresse MAC"] = "";
                newMatableRow["Switch"] = "";
                newMatableRow["Lieu"] = "";
     
                switchscruasDataSet.Tables["Switchs"].Rows.Add(newSwitchsRow);
     
            }
     
     
        }
    }
    Le code ci-dessus est celui de mon application.
    En recherchant sur internet, je suis tomber sur le code ( pour le bouton Ajout).

    Dans le vrai code, j'ai bien sur remplacer le "mon" du Dataset par le nom de ce dernier, idem pour maTable, par le nom de la table.

    Cependant, pas de souci lors de la compilation.
    Mais lors de la saisie de nouvelle données, le numéro auto-incrémenter, passe à -1 au lieu de 75, et j'ai une exception.
    Malheusement, je ne peut pas metre une capture avant ce soir... .

    J'éditerais mon poste ce soir, mais au cas où si je code suffit à me mettre sur la voie... .

    Sinon, l'exception est:
    Format de chaine d'entrée incorrect. Impossible de stocker<> dans la colonne N°. Type attendu est Int32.

    Pourtant je suis sûr de ne pas m'être planter sur le int concernant cette colonne... .

    Sinon pour rappel, le but est d'enregistrer des données via l'interface graphique... .

    Merci à vous

  14. #14
    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
    Citation Envoyé par juninho Voir le message
    Format de chaine d'entrée incorrect. Impossible de stocker<> dans la colonne N°. Type attendu est Int32.
    Tu ne peux pas mettre une string dans une colonne qui attend un Int32...

    EDIT: tu es passé à C# entre temps ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Disons que mon responsable m'ademander de le faire et C# et BV.net en même temps.

    il parait que c'est la même chose à la synthaxe prêt... .

    sinon pour le fichier Access, dans la table, j'ai bien préciser numeric et non pas int... .

  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 749
    Points
    39 749
    Par défaut
    Citation Envoyé par juninho Voir le message
    Disons que mon responsable m'ademander de le faire et C# et BV.net en même temps.

    Il aime le temps perdu ton responsable

    Citation Envoyé par juninho Voir le message
    il parait que c'est la même chose à la synthaxe prêt... .
    A peu près, oui (sauf qu'il n'y a pas de "h" à syntaxe )

    Citation Envoyé par juninho Voir le message
    sinon pour le fichier Access, dans la table, j'ai bien préciser numeric et non pas int... .
    Ce qui pose problème ici c'est le type indiqué dans la colonne de la DataTable, pas dans la base.
    Et de toutes façons, numeric c'est quand même un nombre...

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Ok merci beaucoup Tomlev

    Sinon j'ai vu que tu était "heureux" ou satisfait de me voir aller vers le C#.

    Mais que reproche tu à VB.net ?

    C'est un langage dont les jours sont comptés ?


    Merci

  18. #18
    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
    Citation Envoyé par juninho Voir le message
    Mais que reproche tu à VB.net ?
    Ben c'est surtout une question de goût (notamment la syntaxe que je n'aime pas trop), mais il y a aussi des raisons plus profondes :
    - le late-binding (résolution du type lors de l'exécution), source de bugs
    - la conversion implicite de/vers des chaines de caractères
    - la gestion implicite des paramètres de sortie qui peut induire des bugs
    - l'instruction Handles que je trouve un peu obscure (on ne sait jamais très bien à quel moment le handler est affecté, ni ce qui se passe quand la cible change...)
    - la possibilité d'utiliser le nom d'une classe Form comme si c'était une instance de la classe (une aberration d'un point de vue POO)
    Bref, beaucoup de petites choses comme ça, souvent liées à l'héritage de VB6 qui n'était pas un "vrai" langage objet

    Citation Envoyé par juninho Voir le message
    C'est un langage dont les jours sont comptés ?
    Non, Microsoft n'a pas du tout l'intention de le laisser tomber (malheureusement )

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Ok merci opur tout

    j'espère avoir bientôt ton niveau... .

    En tout cas pour ton aide

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour Tomlev

    J'ai bien regarder les propriétées de cette collonne dans la Datatable.

    Effectivement System.Data.Int32 est séléctionner.

    Qui dis int dis nombres positifs ou négatifs ( si je ne me trompe pas).

    Donc dans ce cas, pourquoi lors de l'execution du programme, quand dans cette fameuse colonne, je sais par exemple "74", j'ai droit à cette exception ?

    74 c'est bien un INT non ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/05/2008, 14h05
  2. Réponses: 2
    Dernier message: 21/06/2006, 16h18
  3. Erreur sur Requête Mise à Jour
    Par guenfood dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 08h51
  4. JSP : Récupérer valeur lors du clic sur un bouton
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 11/04/2006, 11h16

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