Asp-sql server : récupérer l'id d'un élément ajouté dans une table sous sql server

Contenu du snippet

Il est très utile de pouvoir récupérer lors d'un enrichissement de table de données sous SQL Server (en ASP) de pouvoir récupérer le N° ID créé automatiquement par le SGBD.

Ainsi, après de nombreuses recherches dans ce sens, je suis tombé sur cet article :
- http://www.devparadise.com/technoweb/code/sql/A436.asp

Il indique en détail comment faire, je copie tout de même l'article ici au cas où, mais sachez que cette astuce n'est pas de moi mais de Magali Giard

Source / Exemple :


' ----------------------------------------
....

'Pour récupérer l'identifiant d'un nouvel enregistrement et être sûr que ce soit bien l' enregistrement qui nous interesse, rien de mieux qu'une procédure stockée. 

'Nous vous proposons ici une méthode simple qui ne nécessite pas de de==procédure stockée et qui évite de faire un select avec l'ensemble des données que l'on vient d'insérer dans la base de données.

'Cette méthode utilise @@IDENTITY et consiste à exécuter la requête INSERT suivie d'une requête SELECT @@IDENTITY dans le même recordset.

'Voici la requête : 
"INSERT INTO Table ( Champ(s) ) VALUES ( valeur(s) ); SELECT @@IDENTITY as ID"

'Vous trouverez ci-dessous un exemple en ASP utilisant la récupération de l'ID : 

'Dans cet exemple, on insere la valeur "test" dans le champ Test de la Table Test ayant comme clé primaire le champ ID.

SQL="INSERT INTO Test (Test) VALUES ('test'); SELECT @@IDENTITY as ID"
...
Set rs = MyCon.Execute(SQL,,1)   '=> les requêtes seront exécutée telle quelles sont données l'une après l'autre 
Set rs= rs.NextRecordset      '=> la données retournée par la deuxième requête (le deuxième recordset) sera l'identifiant 
...            '=> de l'enregistrement inséré par la première requête.
ID=rs("ID")

'-------------------------------------
la commande Execute a trois arguments parfois optionnel : 
Execute(SQL, Paramètres, Options ) 
'=> SQL : la variable contenant les requêtes à exécuter
'=> Paramètres : (optionnel) tableau contenant les paramètres de(s) requête(s).
'=> Options : défini comment doit être interprété la commande execute.

'Options peut prendre entre autres les valeurs : 
'-1    <=>    adCmdUnspecified    => le type n'est pas spécifié
'1    <=>    adCmdText   => type texte : SQL sera évalué comme tel
'2   <=>   adCmdTable   => SQL sera évalué comme un nom de table et la valeur de chaque champ sera retournée.
'4   <=>   adCmdStoredProc   => SQL sera évalué comme le nom d'une procédure stockée
'8   <=>   adCmdUnknown   => valeur par défaut : type inconnu
'256   <=>   adCmdFile   => SQL sera évalué comme étant un nom de fichier
'512   <=>   adCmdTableDirect   => SQL sera évalué comme un nom de table

....
'-------------------------------------

Conclusion :


Merci encore à la créatrice de cette astuce : Magali Giard

Bon Coding.

Romelard Fabrice (Alias F___)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.