Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

retrouver une valeur autoincrémentée lors d'un nouvel enregistrement

6 réponses
Avatar
Paskal
Bonjour


Lorsque j'effectue un nouvel enregistrement par un formview dans une DBB,
est-il possible d'en trouver la valeur du champ 'id' qui est défini dans ma
base comme auto-incrémenté ?


merci,
Pascal

6 réponses

Avatar
zoltix
Paskal wrote:
Bonjour


Lorsque j'effectue un nouvel enregistrement par un formview dans une
DBB, est-il possible d'en trouver la valeur du champ 'id' qui est défini
dans ma base comme auto-incrémenté ?


merci,
Pascal




Tu appelles une procédure stocké qui contient ton insert avec les bon
params et tu recupéres la valeur dans le return(SqlParameter) ou
dataset(MultiRows) ou row(SingleRow).

et la commande pour récupérer Id c'est

Après l'insertion:

select @@identity ;
Ou return identity ;

Que tu places en fin de Store Proc.

Bye
Avatar
Paskal
Bonjour zoltix


Lorsque j'effectue un nouvel enregistrement par un formview dans une
DBB, est-il possible d'en trouver la valeur du champ 'id' qui est
défini dans ma base comme auto-incrémenté ?






Tu appelles une procédure stocké qui contient ton insert avec les bon
params et tu recupéres la valeur dans le return(SqlParameter) ou
dataset(MultiRows) ou row(SingleRow).

et la commande pour récupérer Id c'est

Après l'insertion:

select @@identity ;
Ou return identity ;

Que tu places en fin de Store Proc.




Merci !

@+
Pascal
Avatar
Arnaud CLERET
Bonsoir,

Attention @@IDENTITY retourne la dernière valeur sans tenir compte du scope
dans lequel il s'exécute. Préférez l'appel à SCOPE_IDENTITY() si vous
souhaitez connaitre la valeur générée lors de votre dernier INSERT et ce
dans le même scope indépendemment des accès concurrent.

--
arno - http://www.dotnetguru2.org/acleret/

<DIV>&quot;Paskal&quot; &lt;&gt; wrote
in message news:</DIV>> Bonjour
zoltix


Lorsque j'effectue un nouvel enregistrement par un formview dans une
DBB, est-il possible d'en trouver la valeur du champ 'id' qui est
défini dans ma base comme auto-incrémenté ?






Tu appelles une procédure stocké qui contient ton insert avec les bon
params et tu recupéres la valeur dans le return(SqlParameter) ou
dataset(MultiRows) ou row(SingleRow).

et la commande pour récupérer Id c'est

Après l'insertion:

select @@identity ;
Ou return identity ;

Que tu places en fin de Store Proc.




Merci !

@+
Pascal





Avatar
Paskal
Bonjour Arnaud


Ok. J'essaye ça dès que possible.
Merci !



Attention @@IDENTITY retourne la dernière valeur sans tenir compte du
scope dans lequel il s'exécute. Préférez l'appel à SCOPE_IDENTITY()
si vous souhaitez connaitre la valeur générée lors de votre dernier
INSERT et ce dans le même scope indépendemment des accès concurrent.


<DIV>&quot;Paskal&quot; &lt;&gt;
wrote in message news:</DIV>>
Bonjour zoltix


Lorsque j'effectue un nouvel enregistrement par un formview dans
une DBB, est-il possible d'en trouver la valeur du champ 'id' qui
est défini dans ma base comme auto-incrémenté ?






Tu appelles une procédure stocké qui contient ton insert avec les
bon params et tu recupéres la valeur dans le return(SqlParameter) ou
dataset(MultiRows) ou row(SingleRow).

et la commande pour récupérer Id c'est

Après l'insertion:

select @@identity ;
Ou return identity ;

Que tu places en fin de Store Proc.




Merci !

@+
Pascal




Avatar
zoltix
Paskal wrote:
Bonjour Arnaud


Ok. J'essaye ça dès que possible.
Merci !



Attention @@IDENTITY retourne la dernière valeur sans tenir compte du
scope dans lequel il s'exécute. Préférez l'appel à SCOPE_IDENTITY()
si vous souhaitez connaitre la valeur générée lors de votre dernier
INSERT et ce dans le même scope indépendemment des accès concurrent.


<DIV>&quot;Paskal&quot; &lt;&gt;
wrote in message news:</DIV>>
Bonjour zoltix



Lorsque j'effectue un nouvel enregistrement par un formview dans
une DBB, est-il possible d'en trouver la valeur du champ 'id' qui
est défini dans ma base comme auto-incrémenté ?







Tu appelles une procédure stocké qui contient ton insert avec les
bon params et tu recupéres la valeur dans le return(SqlParameter) ou
dataset(MultiRows) ou row(SingleRow).

et la commande pour récupérer Id c'est

Après l'insertion:

select @@identity ;
Ou return identity ;

Que tu places en fin de Store Proc.





Merci !

@+
Pascal









Merci aussi pour l'info.......Je ne savais pas ...
Avatar
Paskal
Bonjour zoltix & Arnaud


Merci. C'est Impeccable : cela fonctionne comme je le voulais.


Ca m'a pris du temps car je n'arrivais pas à utiliser l'appel à la procédure
via un formview.

En fait, je voulais appeler la procédure directement dans le formview, en
lui passant comme argument InsertCommandType=StoredProcedure et
InsertCommand="NomDeMaProcedure". Or, cela fonctionne parfaitement dans un
détailsview, mais pas depuis un formview (je ne cvoulais pas coder en
behind)
Bizarre non ? J'ai essayé avec sur deux PC différents, même combat...
Bon, maintenant, je le saurai...


Merci,
Pascal



P.info, voilà ma procédure :

ALTER PROCEDURE dbo.InsereQuestion


@title VARCHAR(MAX),

@answer1 VARCHAR(MAX),

@answer2 VARCHAR(MAX),

@QuestionOrder TINYINT,

@Image BIT,

@QuizID INT,

@AnswerExplanation VARCHAR(MAX),

@correctanswer TINYINT,

@answer4 VARCHAR(MAX),

@answer3 VARCHAR(MAX),

@ID int OUTPUT

as

INSERT INTO [Question]

([title], [answer1], [answer2], [QuestionOrder], [Image], [QuizID],

[AnswerExplanation], [correctanswer], [answer4], [answer3])

VALUES (@title, @answer1, @answer2, @QuestionOrder, @Image, @QuizID,

@AnswerExplanation, @correctanswer, @answer4, @answer3)

SET @ID = SCOPE_IDENTITY()

RETURN @ID





Ok. J'essaye ça dès que possible.






Attention @@IDENTITY retourne la dernière valeur sans tenir compte
du scope dans lequel il s'exécute. Préférez l'appel à
SCOPE_IDENTITY() si vous souhaitez connaitre la valeur générée lors
de votre dernier INSERT et ce dans le même scope indépendemment des
accès concurrent.








Tu appelles une procédure stocké qui contient ton insert avec les
bon params et tu recupéres la valeur dans le return(SqlParameter)
ou dataset(MultiRows) ou row(SingleRow).

et la commande pour récupérer Id c'est

Après l'insertion:

select @@identity ;
Ou return identity ;

Que tu places en fin de Store Proc.













Lorsque j'effectue un nouvel enregistrement par un formview dans
une DBB, est-il possible d'en trouver la valeur du champ 'id' qui
est défini dans ma base comme auto-incrémenté ?