Soyez le premier à donner votre avis sur cette source.
Snippet vu 24 541 fois - Téléchargée 38 fois
' ---------------------------------------- .... '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 .... '-------------------------------------
8 sept. 2003 à 22:05
Utilisez plustot SCOPE_IDENTITY() qui s'utilise aussi façilement, et qui ne vous posera aucun désaventage.
A+
Dom.
30 juin 2003 à 13:23
Il est franchement déconcertant de vous lire.
Est il une fois de plus nécessaire de rappeler :
- que les développeurs inscrivant une astuce dans un forum ne sont pas obligé de le faire !
- que cette démarche (même si elle n'est pas toujours compréhensible au 1er abords) n'est pas pour eux mais toujours pour les autres ! C'est çà l'entraide.
- et qu'ils n'ont certainement pas à subir des reproches sur leur contenu, il est vrai pas toujours pédagogiques pour les néophytes.
- et que la plus part sont près à fournir des explications complémentaires si on leur demande gentillement, même sur des notion de base (ID par exemple).
J'espère donc que fabrice69 continuera à alimenter ce forum et que LileWellA se taise... tout du moins une fois avoir épluché des sites comme http://www.commentcamarche.net
Denis
11 juin 2003 à 10:58
Ce n'est pas parce que je sais programmer en JScript, qu'obligatoirement je sais programmer en T-SQL ..
Le language d'une base de données n'est pas chose aisé ..
Pour un débutant comme moi en T-SQL, le plus d'informations, de commentaires, de structures est toujours appréciable.
Et pour finir sur une note agréable ( A440 )- les musiciens comprendront -
Merci des efforts que tu fournis
10 juin 2003 à 12:47
Cela ne fonctionne que sur SQL Serveur (à ma connaissance).
Je vais en revanche modifier le niveau, je pensais qu'il était accessible aux débutant mais devant ta réaction agressive, cela ne doit pas être le cas.
Pour info je préfère recopier la partie intéressante de la source et non mttre un lien direct, car en cas d'innaccessibilité de ce site à l'avenir, la partie utile est toujours visible.
"Merci de commenter correctement le code !" < évite ce genre de remarque car, il n'y a quasiment que du commentaire dans cet article, 4 lignes de code.
Enfin, une dernière remarque, un codeur qui donne une source pour le codage décodage base 64 n'est pas un débutant pour moi mais bon.
F___
10 juin 2003 à 12:34
De plus le niveau que tu affiches niveau 1. J'en conclue qu'il s'adresse au débutant ( ce que je suis ).
Donc soit tu mets le niveau deux ou trois, puisque le lecteur doit avoir des notions plus que de base
ou alors tu expliques ce qu'a voulu faire passer le créateur.
Parceque des ID j'en connais plein aussi ...
On peut en mettre 2, 3 voire plus si besoins s'en fait sentir ...
Avec la structure de la table cela aurait faciliter la compréhension du code !
Merci de commenter correctement le code !
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.