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 :

problème pour numéro automatique


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 problème pour numéro automatique
    Bonjour à tous,
    J'ai un problème avec un numéro automatique, j'ai fait un dataset, et lorsque j'ai effacé par exemple les numéros 1, 2, 3 et qu'il ny a plus rien dans la base, je relance le programme, et je clique sur ajouter, et là j'ai de nouveau 1, 2, 3 dans le formulaire et dans la base, j'ai 4, 5, 6. Comment faire pour régler ce problème.
    Voici le code du bouton ajout :
    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
     
    private void bt_ajout_serv_Click(object sender, EventArgs e)
            {
                this.BindingContext[dbDs, dbDs.tp1_service.TableName].AddNew();
                fillData();
            }
     
    private void fillData()
            {
                string total = (this.BindingContext[dbDs, "tp1_service.serviceemploye"].Count).ToString();
                string num = ((this.BindingContext[dbDs, "tp1_service.serviceemploye"].Position) + 1).ToString();
                tb_posCpt_emp.Text = num + "/" + total;
     
                total = (this.BindingContext[dbDs, dbDs.tp1_service.TableName].Count).ToString();
                num = ((this.BindingContext[dbDs, dbDs.tp1_service.TableName].Position) + 1).ToString();
                tb_posCpt_serv.Text = num + "/" + total;
     
                try
                {
                    activeService = this.BindingContext[dbDs, dbDs.tp1_employe.TableName].Current as DataRowView;
                    rowView = this.BindingContext[dbDs, "tp1_service.serviceemploye"].Current as DataRowView;
                }
                catch {}
                if (rowView != null)
                {
                    if ((bool)rowView.Row["sexe"] == true)
                        this.rb_masculin.Checked = true;
                    else
                        this.rb_feminin.Checked = true;
                }
                else
                {
                    this.cb_service.SelectedValue = false;
                }
            }
    Merci à vous

  2. #2
    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
    Je pense que je pourrai rafraichir le dataset juste pour la valeur du textbox mais comment faire car j'ai essayé avec rafraichir le dataset lorsque je fais un sqldataadapter mais cela me met un message d'erreur de double connexion.

  3. #3
    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 : 43
    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
    Par défaut
    j'ai rien compris... essaie d'être plus clair sur la description du problème !

  4. #4
    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 une table dont l'identifiant est automatique, dans mon programme, j'utilise un dataset, et le problème, si j'ai des données et que je les supprime toutes, et quand je relance le programme, et je fais un ajout, j'ai le numéro 1 au lieu du numéro 12 par exemple, et j'enregistre, lorsque je relance le programme il a bien mis le numéro 12 et cela fonctionne bien après, j'aimerai qu'il me mette le bon numéro lorsque toutes les données ont été supprimées et que je lance le programme. J'ai essayé de recharger le dataset en cochant actualiser le dataset dans le sqldataadapter mais j'ai un message d'erreur qui me dit que le datareader associé à cette commande est déjà ouvert et qu'il doit d'abord être fermé.

  5. #5
    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 : 43
    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
    Par défaut
    Je suis toujours pas sûr d'avoir bien compris...
    Tu veux dire que quand tu fais une insertion dans la base, le numéro généré en base est correct, mais dans le dataset ça démarre toujours à 1 ?

  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
    Oui, c'est cela, si tous les enregistrement sont supprimés avant de relancer le programme. Par contre s'il y a des enregistrement, les numéros sont bons.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Par défaut
    Bonjour,

    Les tables avec un auto-incrément doivent être initialisées après chaque suppression, elles gardent toujours le dernier id (dans ton cas : 3) donc les nouveaux iDs seront (3+1, 3+2, ...)

    La solution : après chaque suppression (ou avant chaque ajout) tu dois exécuter la commande (Transact-SQL) suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbcc checkident('VotreTable', reseed, 0)
    0 : Pour mettre l'auto-incrément à 0 (La nouvelle ligne aura l'id 1)
    N : Pour mettre l'auto-incrément à N (La nouvelle ligne aura l'id N+1)

    Bon développement.

  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
    Bonjour,
    Merci j'ai essayé dans la base de données

    Après avoir utilisé cette commande : dbcc checkident('VotreTable', reseed, 0) dans la base de données ce qui m’a mis de remettre le compteur à 0.
    Je pense plutôt que le problème vient de l’application, voici ci-joint un document qui explique mieux le problème
    Fichiers attachés Fichiers attachés

  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 : 43
    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
    Par défaut
    En fait, je pense que tant que tu n'as pas réellement inséré la ligne dans la base de données, le numéro dans le dataset est incorrect (le dataset ne peut pas savoir où en est la séquence sur le serveur). Je crois qu'une fois que tu auras appelé DataAdapter.Update, tu devrais avoir le bon numéro, mais je suis pas sûr (j'ai pas trop l'habitude de SQL Server). Si ce n'est pas le cas tu peux refaire un DataAdapter.Fill pour mettre à jour le dataset avec les données de la base

  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
    J'ai essayé avec un DataAdapter.Fill mais cela fait une double connexion, donc une erreur. Il y a un formulaire pricipal où tout ce qui est connexion est dedans.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Par défaut
    Bonjour,

    Est ce que je peux voir le code qui affiche dans la zone du texte (Avant le bouton +) ?

    Bon développement

  12. #12
    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,
    Voici le code du formulaire pricipal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public Fm_principal()
            {
                InitializeComponent();
                //efface les lignes de l'ensemble des tables du dataset
                dbDs_empSce1.Clear();
                //connecte le dataset et la base de données
                dbAd_service.Fill(dbDs_empSce1, "tp1_service");
                //pour la modification des lignes de la table service
                dbDs_empSce1.tp1_service.RowChanged += new DataRowChangeEventHandler(tp1_service_RowChanged);
                //pour supprimer des lignes de la table service
                dbDs_empSce1.tp1_service.RowDeleted += new DataRowChangeEventHandler(tp1_service_RowDeleted);
            }
    Voici le code du formulaire service:
    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
     
    //dataset
    dbDs_empSce dbDs;
     
    public Fm_service(dbDs_empSce p_dbDs)
                : this()
            {
                //récupère les valeurs du dataset
                dbDs = p_dbDs;
                //code du service
                this.tb_code.DataBindings.Add("Text", dbDs, "tp1_service.code");
                //désignation du service
                this.tb_designation.DataBindings.Add("Text", dbDs, "tp1_service.designation");
                affichePosCpt();
            }
     
    private void affichePosCpt()
            {
                //total service
                string total = (this.BindingContext[dbDs, dbDs.tp1_service.TableName].Count).ToString();
                //numero position service
                string num = ((this.BindingContext[dbDs, dbDs.tp1_service.TableName].Position) + 1).ToString();
                tb_posCpt.Text = num+"/"+total;
            }

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Par défaut
    Bonjour,

    Tu dois voir si le DataSet est récupéré avant ou après mise à zero.

    Bon développement

  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
    Bonsoir,
    Tu peux m'expliquer plus car je ne comprends pas.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2009
    Messages : 13
    Par défaut
    Bonjour,

    Quand est ce que tu mets tes tables à zero ?
    Est ce que après le dbDs où bien avant ?

    Bonne chance.

  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
    Bonjour,
    J'ai juste utilisé ta commande dans sql server pour remmetre tout en ordre quand j'avais tout supprimé

Discussions similaires

  1. [XL-2007] Problème pour formule automatique
    Par kedrik dans le forum Excel
    Réponses: 3
    Dernier message: 03/03/2010, 23h01
  2. Problème pour remplir automatiquement une table
    Par Atemi76 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/07/2007, 16h31
  3. Problème pour éxécuter des jobs automatiquement
    Par Flipmode dans le forum Alimentation
    Réponses: 2
    Dernier message: 26/04/2007, 10h20
  4. Problème pour ajouter un texte automatique dans un zone de saisie de texte
    Par koKoTis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 21/08/2006, 16h03
  5. [débutant] Problème pour générer un login automatiquement
    Par zamoto dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/05/2006, 20h12

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