Problème de multi-acces sur SQLSERVER

Le
ByB
Bonjour,

Je travaille sur une application de type client-serveur en VBA Access,
et avec une base SQL Server partagée par tous les clients.

Je dois faire un INSERT dans une table, puis récupérer l'ID qui a été
associé aux données que je viens d'insérer.

Je fais donc, après l'INSERT, un SELECT MAX ID FROM LATABLE pour
récupérer l'id. Le problème est que, la base étant partagée, si un
autre client a fait une insertion au même moment, je risque de
récupérer l'id de l'élément inséré par l'autre client et pas le mien.

Y a t-il un moyen de récupérer directement cet ID (lors de l'INSERT ?)
. Et si non, comment puis-je locker puis délocker la table pour pouvoir
faire mon INSERT suivi de mon SELECT en toute tranquillité ? Et quelles
sont les précautins à prendre ?

Merci de vos conseils.

--
Il y a un seul cas où il est convenable d'aborder une femme laide.
C'est pour lui demander si elle ne connaît pas l'adresse d'une jolie
femme.
[Pierre Desproges]
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #11855721
Le Sun, 17 Jun 2007 05:34:11 +0200, ByB
Bonjour,

Je travaille sur une application de type client-serveur en VBA Access,
et avec une base SQL Server partagée par tous les clients.

Je dois faire un INSERT dans une table, puis récupérer l'ID qui a été
associé aux données que je viens d'insérer.

Je fais donc, après l'INSERT, un SELECT MAX ID FROM LATABLE pour
récupérer l'id. Le problème est que, la base étant partagée, si un autre
client a fait une insertion au même moment, je risque de récupérer l'id
de l'élément inséré par l'autre client et pas le mien.

Y a t-il un moyen de récupérer directement cet ID (lors de l'INSERT ?) .
Et si non, comment puis-je locker puis délocker la table pour pouvoir
faire mon INSERT suivi de mon SELECT en toute tranquillité ? Et quelles
sont les précautins à prendre ?

Merci de vos conseils.




SELECT SCOPE_IDENTITY();

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
ByB
Le #11855671
J'ai envie de hurler à la face du monde que Gilles TOURREAU a affirmé
le 17/06/2007 que
Le Sun, 17 Jun 2007 05:34:11 +0200, ByB


Bonjour,

Je travaille sur une application de type client-serveur en VBA Access, et
avec une base SQL Server partagée par tous les clients.

Je dois faire un INSERT dans une table, puis récupérer l'ID qui a été
associé aux données que je viens d'insérer.

Je fais donc, après l'INSERT, un SELECT MAX ID FROM LATABLE pour récupérer
l'id. Le problème est que, la base étant partagée, si un autre client a
fait une insertion au même moment, je risque de récupérer l'id de l'élément
inséré par l'autre client et pas le mien.

Y a t-il un moyen de récupérer directement cet ID (lors de l'INSERT ?) . Et
si non, comment puis-je locker puis délocker la table pour pouvoir faire
mon INSERT suivi de mon SELECT en toute tranquillité ? Et quelles sont les
précautins à prendre ?

Merci de vos conseils.






SELECT SCOPE_IDENTITY();



Cordialement



Merci.

--
Quelle que soit la dualité de la situation de ce début de siècle, il
serait bon d'examiner la majorité des issues s'offrant à nous.
Publicité
Poster une réponse
Anonyme