Rechercher : dans
Par :

ASP : Récupérer la valeur de la clé primaire

Dernière réponse le 3 aoû 2008 à 18:08:55 calje, le 6 nov 2001 à 20:55:46 
 Signaler ce message aux modérateurs

Bonjour,

J'ai deux tables T1 et T2. T1 est la table principale et T2 est une table dépendante de T1.

Lorsque je crée un enregistrement dans T1, je voudrais récupérer sa clé primaire (qui est un numéro automatique) pour pouvoir l'affecter comme clé étrangère dans un nouvel enregistrement dans T2.

Quelle est la bonne méthode pour faire ça en ASP ?

Merci
José

Meilleures réponses pour « ASP : Récupérer la valeur de la clé primaire » dans :
SQL - Contraintes d'intégrité VoirExpression de contraintes d'intégrité Une contrainte d'intégrité est une clause permettant de contraindre la modification de tables, faite par l'intermédiaire de requêtes d'utilisateurs, afin que les données saisies dans la base soient...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...

1

yaubi, le 8 nov 2001 à 03:16:00

Quelque soit le langage, il faut passer par une requète en SQL :

Supposons ta table comme suit :

table : ID, champ1, champ2

ID est la clée primaire, AutoNumber incrémental

tu peux utiliser la requète suivante :

SELECT MAX(ID) FROM Table;

Mais cela ne fonctionne QUE, si ta clée s'incrémente automatiquement à chaque enregistrement. Dans le cas contraire (génération aléatoire) cela dépend du SGBD que tu utilises. En Posgresql, par exemple, tu as une fonctions prédéfinie que tu peux utiliser pour consulter l'id du dernier enregistrement d'une table.

Pour contourner la difficulté, tu peux aussi ajouter un champ date dans lequel tu enregistres la date à laquelle tu écris ton enregistrement. A ce moment la tu peux faire :

SELECT MAX(dateCreation) from Table;

A+
Yoann

Répondre à yaubi

5

 PHOENIX, le 3 aoû 2008 à 18:08:55

Mais dans le cas d'une base de données partagés, et avec des accès simultanés, ça risque fortement de ne pas marcher, alors je pense qu'il faut faire tout ça dans une transcaction. je veux dire par là, l'insertion dans la table Mère(Master), et la récupération de la clé incrémentale crée.

Répondre à PHOENIX

2

nabzone, le 8 nov 2001 à 18:03:50

Avec SQL SERVER tu dois faire ceci :
Set dbconn = Server.CreateObject("adodb.connection")
dbconn.Open "#####"

Set dbrec = dbconn.execute("insert into ... values (..,.,..); select @@identity").nextrecordset

tu peux maintenant récupérer la clé :
sa valeur est -------> dbrec(0)

***********************************
IMPORTANT
***********************************
cela ne fonctionne que si tu utilises l'incrémentation automatique de ta clé (champ identity)

ex :
CREATE TABLE ####
(
UID int NOT NULL IDENTITY (1,1),
...............................................,
)


@+

Répondre à nabzone

3

calje, le 8 nov 2001 à 19:32:11

Merci pour vos infos.

Finalement, on m'a donné une méthode qui marche très bien et qui utilise les méthodes du recordset :

ex :

' ### Sauvegarde dans ComConseil ###
objRS.Open "ComConseil", objConn, 3, adLockOptimistic

objRS.AddNew
objRS("Nom") = request.QueryString("txtNom")
objRS("Prenom") = request.QueryString("txtPrenom")
objRS("Commentaire") = request.QueryString("txtCommentaire")
objRS("Ordre") = request.QueryString("txtOrdre")
objRS("ID_ComScol") = session("SessID_CS")
objRS.Update

' ### récupère la valeur de la nouvelle clé primaire
vID_ComConseil = objRS("ID_ComConseil")

objRS.close

' ### Sauvegarde dans ComConseilCoord ###
objRS.Open "ComConseilCoord", objConn, 3, adLockOptimistic
for Each strName in request.QueryString
select case strName
case "txtTelephone"
if request.QueryString("txtTelephone") <> "" then
objRS.AddNew
objRS("Coordonnee") = request.QueryString("txtTelephone")
objRS("ID_ComConseil") = vID_ComConseil
objRS("ID_TypeCoord") = 1
objRS.Update
end if
etc ...

Merci pour vos réponses...

José

Répondre à calje

4

big, le 30 jun 2008 à 12:56:44

Slt
Moi j'ai un probleme d'ingrementation de la cle dans une base de donnees Access.
Je veux programmer une base de donnees qui gere les etudiants avec les numero matricule.
J'ai la table table qui est composee de : NumMatriculeEtud, NomEtud, PrenomEtud, AdresseEtud.
Je veux quant je saisie le nom , et le prenom que la base prennent les deux premier mot du nom de famille et du prenom puis ajouter un numero auto.
Merci d'avance

Répondre à big