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 :

dernier auto-increment vers une variable


Sujet :

C#

  1. #1
    Membre habitué Avatar de H-bil
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 151
    Points
    151
    Par défaut dernier auto-increment vers une variable
    Salut
    comment faire pour remplir une variable avec le resultat d'une requete ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string SqlString1 = "Select @@Identity as LastId";
    SqlCommand Comm1 = new SqlCommand(SqlString1, Conn);
    Comm1.ExecuteNonQuery();
    int Id;
    je veux remplir la la variable Id avec le resultat de la requete

    merci

  2. #2
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    tu dois utiliser ExecuteScalar et non ExecuteNonQuery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objresultat = comm1.ExecuteScalar();

  3. #3
    Membre habitué Avatar de H-bil
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 151
    Points
    151
    Par défaut
    Merci
    objresultat est de quel type?
    et comment transmetre la valeur selectioné vers une variable ?

  4. #4
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    objResultat est du type Object, le type que renvoi la fonction ExecuteScalar.
    Ensuite il te suffit de caster ton objet dans le type que tu desires (dans ton cas, un entier (int))

  5. #5
    Membre habitué Avatar de H-bil
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 151
    Points
    151
    Par défaut
    Désolé
    mais le cast et invalid
    Le cast spécifié n'est pas valide.
    et voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int Id;
    string SqlString1 = "Select @@Identity as LastId";
    SqlCommand Comm1 = new SqlCommand(SqlString1, Conn);
    Id = (int)Comm1.ExecuteScalar();
    Label3.Text = Id.ToString();
    j'ai ratté quelque chose ?
    merci encor une fois

  6. #6
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    j'oubliais, il faut tester le cas de la valeur nulle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int i;
    if (!objResult Is DBNull.Value)
    {
      i = (int) objResult
    }
    Désolé, si je me suis trompé dans la syntaxe, je suis plus vb que C#

  7. #7
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Oui, ta requete te renvoi une valeur nulle ce qui est normal car @@identity te renvoi le dernier identifiant traiter dans la session en cours.

    Pour retrouver le dernier identifiant d'une table tu peux utiliser la requete suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT IDENT_CURRENT('MATABLE')


  8. #8
    Membre habitué Avatar de H-bil
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 151
    Points
    151
    Par défaut
    ouf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Int32 Id;
    string SqlString1 = "SELECT IDENT_CURRENT('ENSEINANT')";
    SqlCommand Comm1 = new SqlCommand(SqlString1, Conn);
    Id  = Convert.ToInt32(Comm1.ExecuteScalar());
    sa marche maintenant
    merci Kelpan pour l'aide

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Points : 54
    Points
    54
    Par défaut recuperer dernier numero!!
    bonjour,

    j'aimerai recuperer le dernier numero d'appel dans ma table appels et l'incrementer +1 avant de l'affecter dans mon formview lors de l'enregistrement.

    voici ce que j'ai fait:
    Int32 A_NUMEROAPPEL;
    string SqlString1 = "SELECT IDENT_CURRENT('APPELS')";
    SqlCommand Comm1 = new SqlCommand(SqlString1, Conn);
    A_NUMEROAPPEL= Convert.ToInt32(Comm1.ExecuteScalar());


    ça ne marche pas, alors j'ai besoin d'aide. je developpe en asp.net(c#).
    et comment je l'affecte dans mon formview.
    merci







    Citation Envoyé par H-bil
    ouf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Int32 Id;
    string SqlString1 = "SELECT IDENT_CURRENT('ENSEINANT')";
    SqlCommand Comm1 = new SqlCommand(SqlString1, Conn);
    Id  = Convert.ToInt32(Comm1.ExecuteScalar());
    sa marche maintenant
    merci Kelpan pour l'aide

  10. #10
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Bonjour,

    Cela dépend de la composition de ta table.
    Si tu n'as pas de colonne identifiant de type counter (AutoIncrement), cela ne peux pas fonctionner.

  11. #11
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    bonjour,
    je relance le sujet
    j'ai le meme probleme que ces jeunes gens, j'essaye d'inscrire le code que le précédent codeur a mis mais j'ai des erreurs,il ne connait pas SqlCommand
    pouvez vous me dire si je doit mettre ce code sur le click d'un bouton ou au chargement, si je dois telecharger une librairie

    en faite j'essaye de récuperé la clé primaire qui vient d'etre créer pour une ligne sur une page.aspx différente

    si besoin d'autre explication, n'hesitez pas

    merci

  12. #12
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    using System.Data;
    using System.Data.SqlClient;
    Et hop

  13. #13
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    merci fally
    j'ai deja mis import Data.system...
    mais j'ai des erreurs ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    rotected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            CType(FormView1.FindControl("LigneTextBox"), TextBox).Text = numligne
            Identifiant = "SELECT IDENT_CURRENT('Prod')" & strChamp
    
    
            SqlString1 = "Select @@Identity"
            SqlCommand(Comm1 = New SqlCommand(SqlString1, Conn))
            Ident = (int)Comm1.ExecuteScalar();
    
        End Sub
    ce qui est en rouge est en erreur

    comment je lui indique avec @@IDENTITY sur quelle table il doit chercher!!

  14. #14
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    j'ai trouvé un site
    http://www.developpez.net/forums/arc...p/t-11658.html

    mais je n'arive pas a configurer cette partie
    Dim maConnexionSQLsrv2 As SQLConnection
    Dim maRequete2 As SQLCommand
    Dim ID As Integer


    Dim ConnexionSQL2 As String
    ConnexionSQL2 = ConfigurationSettings.AppSettings("ConnectionString")
    maConnexionSQLsrv2 = New SqlConnection(ConnexionSQL2)
    merci d'avance

  15. #15
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    j'ai modifé mon code mais rien ni fait il me renvoit 0 a la place d'un chiffre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            CType(FormView1.FindControl("LigneTextBox"), TextBox).Text = numligne
            Identifiant = New SqlCommand("SELECT Ident_Current('Prod')")
            ident = Identifiant.ExecuteScalar()
     
        End Sub
    il voit bien l'identifiant à 35(exemple) mais ne le mets pas dans ident???
    je comprends pas pourquoi

  16. #16
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int Id;
    string requete = "select Ident_Current('Prod')"
    SqlCommand Cmd = new SqlCommand(requete, MaConnection);
    Id  = Convert.ToInt32(cmd.ExecuteScalar());
    Ce code devrait normalement aller! Dans ton code à toi tu as oublié de passer ta connection je crois, enfin je crois (je suis pas trop ASP )

  17. #17
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    vous aviez raison j'avais oublié de mettre ma connexion mais ca ne fonctionne toujours pas dans Ident j'ai toujours 0

  18. #18
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    bon apres mille et une recherche
    j'ai trouvé la solution sur:
    http://msdn.microsoft.com/fr-fr/libr...wz(VS.80).aspx

    et voici mon code qui me retourne la derniere valeur de la clé priamire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            CType(FormView1.FindControl("LigneTextBox"), TextBox).Text = numligne
            connection = New SqlConnection("Server=192.168.7.111;Database=PRODUCTION;Uid=sa;Pwd=DDDRDCDJ;")
            Identifiant.CommandText = "SELECT Ident_Current('Prod')"
            Identifiant.CommandType = CommandType.Text
            Identifiant.Connection = connection
            connection.Open()
            ident = Convert.ToInt32(Identifiant.ExecuteScalar())
            connection.Close()
        End Sub
    merci a tous ceux qui ont pris de leur temps pour m'aider

  19. #19
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    je reviens j'ai une erreur qui me dit:
    La référence d'objet n'est pas définie à une instance d'un objet.
    L'exeception NullReferenceExecption n'a pas été gérée par la code utilsateur
    voici mon code:

    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
     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            'Recherche du TextBox Ligne pour lui insérer la valeur de numligne
            CType(FormView1.FindControl("LigneTextBox"), TextBox).Text = numligne
            'Création de la connexion au serveur:Serveur=@IP;Database=NomdelaBase;Uid=Nompourlaconnexion:Pwd=Motdepasse
            connection = New SqlConnection("Server=192.168.7.111;Database=PRODUCTION;Uid=sa;Pwd=DDDRDCDJ;")
            'Indique la requête à exécuter
            Identifiant.CommandText = "SELECT Ident_Current('Prod')"
            Identifiant.CommandType = CommandType.Text
            Identifiant.Connection = connection
            'On ouvre la connexion
            connection.Open()
            'ExecuteScalar va permettre d'exécuter la requête et retourne la première colonne de la première ligne du jeu de résultats retourné par la requête
            ident = Convert.ToInt32(Identifiant.ExecuteScalar())
            'On ferme la connexion
            connection.Close()
        End Sub
    je ne vois pas mon erreur puisque ce matin ca fonctionnait!!

  20. #20
    Membre habitué
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2007
    Messages
    496
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2007
    Messages : 496
    Points : 146
    Points
    146
    Par défaut
    Personne a une idée j'ai essaé de declarer ma variable identifiant en dim
    mais la il me dit qu'elle est utilisé autre part et que cela risque de créer une NullExceptionReference

    Personne ne connait ce probleme?

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

Discussions similaires

  1. [SQL Server] auto increment dans une vue
    Par pimousse_cerise dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/05/2006, 10h18
  2. 2 auto increment dans une meme table
    Par gesualda dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 12/10/2005, 09h31
  3. [débutant]Problemem d'incrementation d'une variable
    Par sakuragikan dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/08/2005, 08h16
  4. Lien vers une variable ?
    Par drinkmilk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/02/2005, 09h55
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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