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

Visual Studio Discussion :

comment faire une incrémentation automatique ?


Sujet :

Visual Studio

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut comment faire une incrémentation automatique ?
    Bonjour à tous, alors voilà j'ai un projet à faire et je bloque :

    L'objectif principal de mon projet est que pour chaque nouveau client crée un code client sera déjà defini ( que l'on ne pourra pas modifier) et qui sera propore a chaque client.

    J'ai donc commencer un peu les recherches et j'ai trouvé que ce principe s'appel une incrémentation automatique.
    Mais je ne sais toujours pas comment faire sous visual studio.

    Alors je vous serais reconnaissant si vous m'aidier.

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 198
    Par défaut
    C'est en général la base de données qui s'occupe de généré les numéros automatiques

    sinon il "suffit" de faire une propriété shared que tu incrémente à chaque fois

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    C'est en général la base de données qui s'occupe de généré les numéros automatiques
    Et l'on récupère la valeur du champ autoincrémenté dans la commande SQL UPDATE utilisée pour la mise à jour de la base de donnée, la syntaxe SQL pour récupérer cette valeur étant variable suivant le SGBD.

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut C# et SQL Server 2008 R2
    Voici un exemple avec un programme en C# et une base de données gérée avec SQL Server 2008 R2 :

    La table "personne" (dans la base de données)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create table personne
    (
         personne_id int not null identity(1,1) primary key,
         firstname nvarchar(20) not null,
         lastname nvarchar(20) not null,
         datetime naissance null,
         sexe_id tinyint null references sexe(sexe_id)
    )
    go
    En gras, "identity(1,1)" qui indique que le champ "personne_id" est une identité (donc un auto-incrément) commançant à 1 et dont l'incrémentation est de 1.

    Le code C# :
    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
    int personne_id = -1;
    
    using (SqlConnection cnx = new SqlConnection(@"Server=.\SQLEXPRESS;Database=Test;Trusted_Connection=True;"))
    {
    	cnx.Open();
            using (SqlTransaction trans = cnx.BeginTransaction(IsolationLevel.ReadCommitted))
            {
            	using (SqlCommand cmdIns = cnx.CreateCommand())
                    {
                    	cmdIns.Transaction = trans;
                            cmdIns.CommandText = "insert into personne (firstname, lastname) output inserted.personne_id values (@firstname, @lastname)";
                            SqlParameter pFirstName = cmdIns.CreateParameter();
                            pFirstName.ParameterName = "firstname";
                            pFirstName.SqlDbType = SqlDbType.NVarChar;
                            pFirstName.Size = 20;
                            cmdIns.Parameters.Add(pFirstName);
                            SqlParameter pLastName = cmdIns.CreateParameter();
                            pLastName.ParameterName = "extension";
                            pLastName.SqlDbType = SqlDbType.NVarChar;
                            pLastName.Size = 20;
                            cmdIns.Parameters.Add(pLastName);
    
    			pFirstName = "Alfred";
    			pFirstLast = "E. Neuman";
    
    			try
    			{
    				personne_id = cmdIns.ExecuteScalar();
    			}
    			catch (Exception e)
    			{
    				MessageBox.Show(e.Message);
    			}
    		}
    		if (personne_id != -1)
    		{
    			trans.Commit();
    		}
    		else
    		{
    			trans.Rollback();
    		}
    	  }
    }
    
    MessageBox.Show(personne_id.ToString());
    En gras, la syntaxe "output" (nouvelle dans SQL Sever 2008) qui permet de retourner les lignes insérés par le INSERT.
    Puis la récupération de la première valeur de la première ligne (puisqu'il ne peut y en avoir qu'une dans notre cas) qui correspond à l'identifiant de la personne qu'on vient d'insérer.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    En gras, la syntaxe "output" (nouvelle dans SQL Sever 2008) qui permet de retourner les lignes insérés par le INSERT..
    Je ne connaissais pas du tout cette nouveauté de SQL Server 2008.
    Merci pour l'info !

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    J'ai découvert ça la semaine dernière

    Ça alimente inserted et deleted comme dans un TRIGGER sur les instructions INSERT/UPDATE et DELETE.

    Je trouve ça plus propre que le SELECT SCOPE_IDENTITY() d'autant que ça permet aussi de vérifier le avant/après lors des UPDATE/DELETE.

Discussions similaires

  1. [Administration] Comment faire une synchronisation automatique sur serveur?
    Par jumanji34 dans le forum Subversion
    Réponses: 0
    Dernier message: 01/12/2010, 22h32
  2. Comment faire une recherche dans une combobox et une sélection automatique
    Par VictoriusDan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2009, 16h17
  3. Réponses: 6
    Dernier message: 22/10/2009, 15h42
  4. [DW 8 & antérieurs] comment faire une page qui se lance automatiquement dans mon site
    Par dj_techno dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 10/04/2009, 09h54
  5. [help!] comment faire une séquence ki incrémente ....
    Par romtrash dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 19/04/2005, 18h52

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