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 :

afficher et ajouter/enregistrer le sexe d'un employé


Sujet :

Windows Forms

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut afficher et ajouter/enregistrer le sexe d'un employé
    Bonjour tout le monde,

    Voila je suis entrain de réaliser une application que mon professeur d'informatique m'a donné à faire mais j'ai deux petits soucis.
    Je travail en C# sous VisualStudio 2005 avec une base de données sous le SGBD SqlServer 2000.

    A Savoir :
    * Dans ma base j'ai 2 tables ("employé", "service").
    * Dans ma form j'utilise un dataAdapteur et un DataSet relié à ma table "employé".

    Sujet de l'application
    :
    c'est la gestion du personnel d'une entreprise.

    Ce que je compte faire :
    1er problème -> Dans ma form, j'affiche les données concernant les employés, j'ai 2 bouton radio ("rb_masculin" et "rb_feminin") correspondant au sexe de l'employé. Dans ma base plus précisément dans la table "employé", j'ai un champ se nommant sexe qui prend comme valeur soit "m"(=masculin) soit "f"(=feminin).
    J'aimerais savoir comment je peux faire pour par exemple cocher le "rb_masculin" lorsque dans le champ de la table la valeur est "m"??
    voici le code qui me permet d'afficher les données des employés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public partial class Fm_employe : Form
        {
            public Fm_employe()
            {
                InitializeComponent();
                dbDs_employe1.Clear();
                dbAd_employe.Fill(dbDs_employe1, "tp1_employe");
                dbAd_service.Fill(dbDs_employe1, "tp1_service");
    affichePosCpt();
            }
    2éme problème -> Ma form me permet également d'ajouter des employés, mon problème est lors de l'enregistrement du nouveau employé.
    Par exemple si c'est le "rb_masculin" qui est coché, je souhaiterais savoir comment je peux faire pour que dans le champ de ma table, la valeur soit "m"??
    Voici le code permettant d'enregistrer dans la base
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            private void bt_validation_Click(object sender, EventArgs e)
            {
                DialogResult dr = MessageBox.Show("Voulez-vous sauvegarder tout les changements?", "Sauvegarder et Quitter l'application", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes)
                {
                    this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].EndCurrentEdit();
                    dbAd_employe.Update(dbDs_employe1, dbDs_employe1.tp1_employe.TableName);
                }
            }
    Merci d'avance.

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Autant que je sache, binder sur les RadioButtons n'est pas possible. Faut le faire à la main.

    Donc au chargement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.rb_masculin.Checked = (tonDataRowCourant["Sexe"] == "m");
    this.rb_feminin.Checked = !this.rb_masculin.Checked;
    Et à la sauvegarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonDataRowCourant["Sexe"] = this.rb_masculin.Checked ? "m" : "f";
    ಠ_ಠ

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à Guulh
    Bonjour,

    Merci beaucoup pour ta réponse mais j'ai besoin d'une précision.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Autant que je sache, binder sur les RadioButtons n'est pas possible. Faut le faire à la main.
     
    Donc au chargement :
    Code :
     
    this.rb_masculin.Checked = (tonDataRowCourant["Sexe"] == "m");
    this.rb_feminin.Checked = !this.rb_masculin.Checked;
    qu'entend tu par "tonDataRowCourant"??
    que veux dire le "!" de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !this.rb_masculin.Checked;
    ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Et à la sauvegarde :
    Code :
     
    tonDataRowCourant.Checked = this.rb_masculin.Checked ? "m" : "f";
    Que signifie le "?" et les ":"??

    Merci d'avance pour tes explications.

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    tonDataRowCourant : tu dis que tu présentes des données d'un record dans une form. tonDataRowCourant, c'est le record que t'es en train de présenter.

    le point d'exclamation, ça veut dire non. ca transforme true en false et false en true. Donc quand l'un est coché (Checked), l'autre ne l'est pas.

    et pour le couple "? :" : http://msdn.microsoft.com/fr-fr/libr...28(VS.80).aspx , ça équivaut à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (this.rb_masculin.Checked)
      tonDataRowCourant["Sexe"] = "m";
    else
      tonDataRowCourant["Sexe"] = "f";
    J'ai corrigé mon post initial : il fallait lire tonDataRowCourant["Sexe"] et non pas tonDataRowCourant.Checked.
    ಠ_ಠ

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à Guulh
    tonDataRowCourant : tu dis que tu présentes des données d'un record dans une form. tonDataRowCourant, c'est le record que t'es en train de présenter.
    mais qu'entend tu par "record"?? Car j'ai juste dit que j'utilisais un DataAdapteuret un DataSet donc je vois pas trop là. Je trouve pas de méthode "DataRowCourant"??

    Cordialement

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Ouala, y'a du boulot

    Tu utilises une base de données. Elle est constitué de tables. Les tables contiennent des lignes (row, en anglais). Ces lignes, on dit que ce sont des enregistrements, ou "record" en anglais.

    Tu te connectes à la base dans ton appli C#. Tu stockes des tas de trucs dans un dataset. Le DataSet contient des tables (classe DataTable). Les tables contiennent des lignes (classe DataRow).

    Tu dis que t'affiches un employé. Si j'ai bien compris, t'en affiches qu'un à la fois dans ta form. Et ce que j'appelle tonDataRowCourant, c'est le DataRow que tu es en train d'afficher. Je sais pas comment ton appli est faite ni quoi est bindé avec quoi comment, donc je sais pas comment tu vas le récupérer. A toi de voir.
    ಠ_ಠ

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à Guulh
    Tu utilises une base de données. Elle est constitué de tables. Les tables contiennent des lignes (row, en anglais). Ces lignes, on dit que ce sont des enregistrements, ou "record" en anglais.
    D'accord merci pour ces renseignements.

    Tu dis que t'affiches un employé. Si j'ai bien compris, t'en affiches qu'un à la fois dans ta form.
    Effectivement.

    C'est pour cela que j'utilise les boutons "<<" , "<", ">" , ">>" sur ma form. (voir l'image ci joint)

    Je sais pas comment ton appli est faite ni quoi est bindé avec quoi comment, donc je sais pas comment tu vas le récupérer. A toi de voir.
    Pour que tu y voie plus claire voici le code de ma form :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace Fiche3
    {
        public partial class Fm_employe : Form
        {
            public Fm_employe()
            {
                InitializeComponent();
                dbDs_employe1.Clear();
                dbAd_employe.Fill(dbDs_employe1, "tp1_employe");
                dbAd_service.Fill(dbDs_employe1, "tp1_service");
                affichePosCpt();
            }
     
            private void affichePosCpt()
            {
                string total = (this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Count).ToString();
                string num = ((this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position) + 1).ToString();
                tb_posCpt.Text = num + "/" + total;
            }
     
            private void bt_premier_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position = 0;
                affichePosCpt();
            }
     
            private void bt_suivant_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position++;
                affichePosCpt();
     
            }
     
            private void bt_precedent_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position--;
                affichePosCpt();
            }
     
            private void bt_dernier_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Count - 1;
                affichePosCpt();
            }
     
            private void bt_ajouter_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].AddNew();
                tb_numero.Text = System.Guid.NewGuid().ToString();
                affichePosCpt();
            }
     
            private void bt_validation_Click(object sender, EventArgs e)
            {
                DialogResult dr = MessageBox.Show("Voulez-vous sauvegarder tout les changements?", "Sauvegarder et Quitter l'application", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes)
                {
                    this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].EndCurrentEdit();
                    dbAd_employe.Update(dbDs_employe1, dbDs_employe1.tp1_employe.TableName);
                }
            }
     
            private void bt_suppression_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].RemoveAt(this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position);
                affichePosCpt();
            }
        }
    }
    bt_premier, bt_suivant, bt_précédent, bt_dernier corresponde au bouton "<<", "<", ">", ">>".
    bt_ajout et bt_suppression sont les boutons "+" et "-" permettant d'ajouter ou supprimer un employé.

    Mon problème c'est que je vois pas du tout comment je peux faire pour récupérer la valeur d'une row??
    Pouvez-vous m'aider s'il vous plais??

    Merci d'avance!!
    Images attachées Images attachées  

  8. #8
    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 loic20h28 Voir le message
    C'est pour cela que j'utilise les boutons "<<" , "<", ">" , ">>" sur ma form. (voir l'image ci joint)

    [...]

    bt_premier, bt_suivant, bt_précédent, bt_dernier corresponde au bouton "<<", "<", ">", ">>".
    bt_ajout et bt_suppression sont les boutons "+" et "-" permettant d'ajouter ou supprimer un employé.
    Tu sais qu'il existe déjà un contrôle qui fait ça ?
    BindingNavigator


    Sinon, pour récupérer le DataRow courant à partir du BindingContext, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
    DataRow row = rowView.Row;
    Mais en fait tu peux utiliser directement le DataRowView (qui est une "vue" d'un DataRow), pas la peine de forcément manipuler le DataRow lui-même...

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à tomlev
    Tu sais qu'il existe déjà un contrôle qui fait ça ?
    BindingNavigator
    Oui je sais mais j'aimerais essayer de faire cela par moi-même donc sans utiliser de BindingNavigator.

    Sinon, pour récupérer le DataRow courant à partir du BindingContext, tu peux faire ça :
    Code :

    DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
    DataRow row = rowView.Row;

    Mais en fait tu peux utiliser directement le DataRowView (qui est une "vue" d'un DataRow), pas la peine de forcément manipuler le DataRow lui-même...
    voici le code que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Fm_employe()
            {
                InitializeComponent();
                dbDs_employe1.Clear();
                dbAd_employe.Fill(dbDs_employe1, "tp1_employe");
                dbAd_service.Fill(dbDs_employe1, "tp1_service");
    DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = (rowView.Row["Sexe"] == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;
    affichePosCpt();
            }
    Donc deux chose :
    1) j'ai l'erreur suivante :
    Avertissement 1 Possibilité d'une comparaison de références involontaire*; pour obtenir une comparaison de valeurs, effectuez un cast de la partie gauche en type 'string' C:\Documents and Settings\loic\Mes documents\Visual Studio 2005\Projects\Fiche3\Fiche3\Fm_employe.cs 21 41 Fiche3
    2) lorsque j'exécute mon application, le rb_feminin est coché alors que l'employé est un homme.

    Merci d'avance

  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 749
    Points
    39 749
    Par défaut
    Citation Envoyé par loic20h28 Voir le message
    Avertissement 1 Possibilité d'une comparaison de références involontaire*; pour obtenir une comparaison de valeurs, effectuez un cast de la partie gauche en type 'string' C:\Documents and Settings\loic\Mes documents\Visual Studio 2005\Projects\Fiche3\Fiche3\Fm_employe.cs 21 41 Fiche3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.rb_masculin.Checked = ((rowView.Row["Sexe"] as string) == "m");

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à tomlev
    Ceci fonctionne mais j'ai un petit problème.

    lorsque je click sur le bouton "<<" j'ai l'erreur suivante :
    Impossible de définir la colonne 'sexe'. La valeur dépasse la limite MaxLength de cette colonne.
    Voici le code de ce bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            private void bt_premier_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position = 0;
                DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = ((rowView.Row["Sexe"] as string) == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;
                affichePosCpt();
            }
    Comment faire??

    Cordialement

  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
    tu es sûr que la colonne s'appelle bien "Sexe" ? (attention aux majuscules/minuscules)

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à tomlev
    tu es sûr que la colonne s'appelle bien "Sexe" ? (attention aux majuscules/minuscules)
    Je vient de mettre "sexe" au lieu de "Sexe" mais malheureusement le problème ne vient pas de la.

    Lorsque j'ai le message d'erreur, ceci me surligne la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position = 0;
    Désolé, j'ai oublié de le préciser tout à leur.

    Cordialement.

  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
    ben là je vois pas du tout d'où ça peut venir

  15. #15
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Salut,

    je serais toi, je passerais par des classes d'objets métier (Une classe "employé" donc), quitte à laisser tomber les datasets typés et à écrire des requêtes à la main (apparemment tu n'as besoin que des traditionnels select, update etc.). A moins bien sûr que ton prof t'ait imposé de faire comme ça.
    Au passage, j'appellerais la propriété "Genre" au lieu de "Sexe", parce qu'"afficher le sexe d'un employé", ça ne se fait pas tout de même !

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à tomlev
    ben là je vois pas du tout d'où ça peut venir
    Je vient de faire des tests et lorsque toute les lignes de codes correspondants à l'affichage du sexe de l'employé sont mis en commentaire donc j'obtiens le code suivant :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace Fiche3
    {
        public partial class Fm_employe : Form
        {
            public Fm_employe()
            {
                InitializeComponent();
                dbDs_employe1.Clear();
                dbAd_employe.Fill(dbDs_employe1, "tp1_employe");
                dbAd_service.Fill(dbDs_employe1, "tp1_service");
               /* DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = ((rowView.Row["sexe"] as string) == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;*/
                affichePosCpt();
            }
     
            private void affichePosCpt()
            {
                string total = (this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Count).ToString();
                string num = ((this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position) + 1).ToString();
                tb_posCpt.Text = num + "/" + total;
            }
     
            private void bt_premier_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position = 0;
                affichePosCpt();
            /*    DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = ((rowView.Row["sexe"] as string) == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;*/
            }
     
            private void bt_suivant_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position++;
             /*   DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = ((rowView.Row["sexe"] as string) == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;*/
                affichePosCpt();
     
            }
     
            private void bt_precedent_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position--;
                /*DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = ((rowView.Row["sexe"] as string) == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;*/
                affichePosCpt();
            }
     
            private void bt_dernier_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].CancelCurrentEdit();
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Count - 1;
              /*  DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = ((rowView.Row["sexe"] as string) == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;*/
                affichePosCpt();
            }
     
            private void bt_ajouter_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].AddNew();
                tb_numero.Text = System.Guid.NewGuid().ToString();
                affichePosCpt();
            }
     
            private void bt_validation_Click(object sender, EventArgs e)
            {
                DialogResult dr = MessageBox.Show("Voulez-vous sauvegarder tout les changements?", "Sauvegarder et Quitter l'application", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes)
                {
               /*     DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                    rowView.Row["sexe"] = this.rb_masculin.Checked ? "m" : "f";*/
                    this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].EndCurrentEdit();
                    dbAd_employe.Update(dbDs_employe1, dbDs_employe1.tp1_employe.TableName);
                }
            }
     
            private void bt_suppression_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].RemoveAt(this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position);
                affichePosCpt();
            }
        }
    }
    j'ai aucun message d'erreur qui intervient.

    Par contre si je remet les lignes de code correspondant à l'affichage du sexe dans la méthode appartenant au bouton "bt_dernier" où au bouton "bt_suivant" tout dépend sur quel bouton j'ai cliqué avant de cliqué sur le bt_premier alors là j'ai le message d'erreur et la ligne de code suivante du bouton bt_premier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Position = 0;
    J'espère avoir été clair sur mon explication de ce que j'ai constaté.

    Cordialement.

  17. #17
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Essaie avec un bit pour le sexe (désolé) au lieu du char : 1 pour masculin, 0 pour féminin ; du coup la contrainte de longueur (encore désolé!) n'intervient plus (et met une valeur par défaut dans la colonne correspondante, genre 0, avec une contrainte 'non null').
    En plus ça simplifie le code pour les radiobuttons, puisque le dataset typé va te convertir ça en bool.

  18. #18
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à MetalGeek
    Citation Envoyé par MetalGeek Voir le message
    Essaie avec un bit pour le sexe (désolé) au lieu du char : 1 pour masculin, 0 pour féminin ; du coup la contrainte de longueur (encore désolé!) n'intervient plus (et met une valeur par défaut dans la colonne correspondante, genre 0, avec une contrainte 'non null').
    En plus ça simplifie le code pour les radiobuttons, puisque le dataset typé va te convertir ça en bool.
    Je vient de changer le type de mon champ et j'ai mis en valeur par défaut 0. Mais par contre je vois pas trop ce que tu voulais dire par "avec une contrainte 'non null'" ??
    Cordialement

  19. #19
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    C'est optionnel, définir sur la colonne dans SQL Server que ce champ ne peut pas être vide (à moins qu'il y ait un hermaphrodite dans la boîte ) : du coup avec la valeur par défaut, tu es sûr qu'il n'y aura que des valeurs valides pour le genre de l'employé.

  20. #20
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à MetalGeek
    Ok. Lorsque j'exécute le programme dés le départ, j'ai le message d'erreur suivant :
    Impossible d'activer les contraintes. Une ou plusieurs lignes contiennent des valeurs qui violent les contraintes de type non null, unique ou de clé externe.
    et me surligne la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbAd_employe.Fill(dbDs_employe1, "tp1_employe");
    de la partie suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public Fm_employe()
            {
                InitializeComponent();
                dbDs_employe1.Clear();
                dbAd_employe.Fill(dbDs_employe1, "tp1_employe");
                dbAd_service.Fill(dbDs_employe1, "tp1_service");
                DataRowView rowView = this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].Current as DataRowView;
                this.rb_masculin.Checked = ((rowView.Row["sexe"] as string) == "m");
                this.rb_feminin.Checked = !this.rb_masculin.Checked;
                affichePosCpt();
            }
    Donc que puis-je faire??
    Puis pour la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.rb_masculin.Checked = ((rowView.Row["sexe"] as string) == "m");
    que puis-je faire pour dire que c'est de type bool et non en string??

    Merci d'avance

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/01/2006, 23h17
  2. Ajout enregistrement
    Par jarodc dans le forum Access
    Réponses: 1
    Dernier message: 14/11/2005, 23h50
  3. Afficher tous les enregistrements d'une table
    Par bertrand_declerck dans le forum QuickReport
    Réponses: 2
    Dernier message: 08/07/2005, 08h35
  4. [crytals report] afficher le dernier enregistrement
    Par bobwilson dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 22/02/2005, 12h14
  5. [VB6] [ADO] Pb ajout enregistrement table liée
    Par fikou dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/10/2002, 11h49

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