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

C# Discussion :

[C#]Problème pour faire un max


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut [C#]Problème pour faire un max
    Bonjour à tous,
    J'aimerai faire l'équivalent d'un max sql pour générer un numéro au lieu de mettre celui-ci en automatique. J'utilise un dataset, j'arrive à faire le count avec cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.BindingContext[dbDs, dbDs.livre.TableName].Count
    mais j'aimerai faire la même chose avec un max et je n'arrive pas à trouver. Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Si tu as Linq de dispo dans ta version, tu peux le faire très simplement.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    Merci, j'ai regardé, je ne sais pas si cela peut aller avec mes sqldataadapter et mon dataset. Voici un bout du code :
    Code du menu principal :
    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
     
    public Menuprincipal()
            {
                InitializeComponent();
                //efface les lignes de l'ensemble des tables du dataset
                dbDs_bibliotheque1.Clear();
                //connecte le dataset et la base de données
                dbAd_auteur.Fill(dbDs_bibliotheque1, "auteur");
                //pour la modification des lignes de la table auteur
                dbDs_bibliotheque1.auteur.RowChanged += new DataRowChangeEventHandler(auteur_RowChanged);
                //pour supprimer des lignes de la table auteur
                dbDs_bibliotheque1.auteur.RowDeleted += new DataRowChangeEventHandler(auteur_RowDeleted);
            }
     
    private void auteur_RowChanged(object sender, DataRowChangeEventArgs e)
            {
                //si modification et ajout
                if (e.Action == DataRowAction.Add || e.Action == DataRowAction.Change)
                {
                    try
                    {
                        //mise à jour de auteur
                        dbAd_auteur.Update(new DataRow[] { e.Row });
                    }
                    catch (Exception pb)
                    {
                        MessageBox.Show(pb.ToString());
                        e.Row.RejectChanges();
                    }
                }
            }
     
            private void auteur_RowDeleted(object sender, DataRowChangeEventArgs e)
            {
                //si supression
                if (e.Action == DataRowAction.Delete)
                {
                    try
                    {
                        //mise à jour de auteur
                        dbAd_auteur.Update(new DataRow[] { e.Row });
                    }
                    catch (Exception pb)
                    {
                        MessageBox.Show(pb.ToString());
                        e.Row.RejectChanges();
                    }
                }
            }
     
    private void bt_entree_auteur_Click(object sender, EventArgs e)
            {
                Entreeauteur fentauteur = new Entreeauteur(dbDs_bibliotheque1);
                fentauteur.Show();
            }
    Voici le code du formulaire où lorsque je clique sur le bouton ajout, cela doit faire un nouveau numéro :
    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
     
    //dataset
            dbDs_bibliotheque dbDs;
            //dataview
            DataView dbDv;
            public Entreeauteur()
            {
                InitializeComponent();
            }
     
            public Entreeauteur(dbDs_bibliotheque p_dbDs)
                : this()
            {
                //récupère les valeurs du dataset
                dbDs = p_dbDs;
                //création d'un nouveau dataview
                dbDv = new DataView(dbDs.auteur);
                //ordre de tri
                dbDv.Sort = "nom ASC";
                //suspend la liaison des données
                this.BindingContext[dbDv].SuspendBinding();
                //rétablit la liaison des données
                this.BindingContext[dbDv].ResumeBinding();
                //numéro de l'auteur
                this.txt_num_auteur.DataBindings.Add("Text", dbDv, "numeroauteur");
                //nom de l'auteur
                this.txt_nom_auteur.DataBindings.Add("Text", dbDv, "nom");
                //prenom de l'auteur
                this.txt_prenom_auteur.DataBindings.Add("Text", dbDv, "prenom");
                affichePosCpt();
            }
     
    private void bt_ajout_Click(object sender, EventArgs e)
            {
                //ajout d'un nouveau auteur
                this.BindingContext[dbDv].AddNew();
                affichePosCpt();
            }

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    je voulais dire qqch du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new DataTable().AsEnumerable().Max(row => row.Field<int>("MaColonne"))

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    Ok, pour mon cas, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new DataTable().AsEnumerable().Max(row => row.Field<int>("numeroauteur"))
    Cela se fait comme cela après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void bt_ajout_Click(object sender, EventArgs e)
            {
                //ajout d'un nouveau auteur
                this.BindingContext[dbDv].AddNew();
                this.txt_num_auteur.Text = new DataTable().AsEnumerable().Max(row => row.Field<int>("numeroauteur")).ToString()+1;
                affichePosCpt();
            }
    Désolé, j'ai un peu de mal avec C#, car c'est dans un formulaire que je veux mettre le nouveau numéro pour pouvoir enregistrer après grâce à mon row_change

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    Bonjour à tous,
    Je voudrais savoir si ce que j'ai mis est au bon endroit car cela me met une erreur, merci.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    désolé mais le new DataTable() c'est pour l'exemple. Remplace le par ta datatable.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    Ok, mais c'est lequel dans mon programme car j'ai essayé avec mon dataset et mon dataview. Si tu veux, c'est mon menu qui a le tout, sqldataadapter et dataset, et j'envoie le tout dans le formulaire comme j'ai mis dans une réponse plus haut.

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    au nez, je dirai dbDs.auteur

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    Merci, je l'utilisais sans le nom de la table, c'est pour cela que cela que je ne trouvais pas la suite

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    J'ai un problème quand je veux enregistrer, cela me dit que le champ numéro est vide, j'ai essayé avec un datarowview mais c'est pareil

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    le code que je t'ai passé recherche le numéro mais ne le met pas à jour : c'est à toi de la faire dans la nouvelle ligne.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    Oui, je sais, j'ai fait cela mais cela ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //création d'un datarowview pour définir le numéro
                        DataRowView numero = this.BindingContext[dbDv].Current as DataRowView;
                        //numéro de l'auteur
                        numero["numeroauteur"] = this.txt_num_auteur.Text;
    J'ai essayé cela aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //création d'un datarowview pour définir le numéro
                        DataRowView numero = this.BindingContext[dbDv].Current as DataRowView;
                        try
                        {
                            //numéro de l'auteur
                            numero["numeroauteur"] = dbDs.auteur.AsEnumerable().Max(row => row.Field<int>("numeroauteur") + 1);
                        }
                        catch
                        {
                            //numéro de l'auteur
                            numero["numeroauteur"] = 1;
                        }
    Et voici le code complet du bouton ok :
    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
     
    //message de dialogue
                    if (MessageBox.Show("Voulez vous faire la modification?", "Message de confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        //création d'un datarowview pour définir le numéro
                        DataRowView numero = this.BindingContext[dbDv].Current as DataRowView;
                        try
                        {
                            //numéro de l'auteur
                            numero["numeroauteur"] = dbDs.auteur.AsEnumerable().Max(row => row.Field<int>("numeroauteur") + 1);
                        }
                        catch
                        {
                            //numéro de l'auteur
                            numero["numeroauteur"] = 1;
                        }
                        //mise à jour de l'auteur
                        this.BindingContext[dbDv].EndCurrentEdit();
                        affichePosCpt();
                    }

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    C'est bien un datarowview qu'il faut utiliser si je ne me trompe pas?

  15. #15
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    bien vu,
    essaye de modifier directement la datatable.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 159
    Par défaut
    ok, je regarde cela

Discussions similaires

  1. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  2. Réponses: 5
    Dernier message: 24/09/2005, 20h31
  3. problème pour faire des blocs
    Par tinkye_winkye dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 04/01/2005, 14h13
  4. [SQL] problème pour faire ma requete
    Par seb.briet dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/12/2004, 16h51
  5. [FLASH MX2004] Problème pour faire un bouton play
    Par melanie075 dans le forum Flash
    Réponses: 13
    Dernier message: 16/12/2004, 22h55

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