Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
851 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] autoincrement et resultset

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB] autoincrement et resultset

n°404019
cedricbrun
Posté le 22-05-2003 à 12:03:11  profilanswer
 

Salut !
Bon, j'utilise une base mysql avec un programme VB.  
Je voudrais faire un insert dedans, avec la création automatique d'un identifiant (donc en autoincrement).
La requête d'insertion marche, je récupère un resultset comme il faut mais je ne sais pas comment récupérer la clé qui a été calculée.  
Lorsque je fait resultset.fields("laclé" ) il me jette en me disant que ce champ ne fait pas partie du resultset.
 
Bien sûr si je fais une requête de selection ensuite ça peut marcher mais c'est très sale vu que je pourrais pas faire cette requete sur la clef et que par conséquent, rien ne me garanti que je n'aurai qu'un enregistrement en retour.
 
Vous me suivez ?
Vous avez une idée ?

mood
Publicité
Posté le 22-05-2003 à 12:03:11  profilanswer
 

n°404031
mario51
Posté le 22-05-2003 à 12:07:04  profilanswer
 

cedricbrun a écrit :

Salut !
Bon, j'utilise une base mysql avec un programme VB.  
Je voudrais faire un insert dedans, avec la création automatique d'un identifiant (donc en autoincrement).
La requête d'insertion marche, je récupère un resultset comme il faut mais je ne sais pas comment récupérer la clé qui a été calculée.  
Lorsque je fait resultset.fields("laclé" ) il me jette en me disant que ce champ ne fait pas partie du resultset.
 
Bien sûr si je fais une requête de selection ensuite ça peut marcher mais c'est très sale vu que je pourrais pas faire cette requete sur la clef et que par conséquent, rien ne me garanti que je n'aurai qu'un enregistrement en retour.
 
Vous me suivez ?
Vous avez une idée ?
 


 
Est-ce que tu fais bien un Update aprés ton Insert ?


---------------
Il ne faut pas vendre la peau de l'ours.....NON, il ne faut pas!!!!
n°404038
cedricbrun
Posté le 22-05-2003 à 12:11:22  profilanswer
 

Nan je vais essayer

n°404043
cedricbrun
Posté le 22-05-2003 à 12:13:39  profilanswer
 

ça marche pas, il me dit que ce type de champ peut pas utiliser cette méthode :  
texto : "il ne prend pas en charge la mise à jour"

n°404290
cedricbrun
Posté le 22-05-2003 à 14:05:44  profilanswer
 

En fait mon problème a l'air un peu différent de ce que je pensais :
Le resultset refuse mon resultset.close après avoir envoyé une requête d'ajout. Apparemment le resultset se ferme lui même lors d'une requete d'ajout, ou encore l'objet Connection ne renvoi pas d'objet resultset valide lorsqu'il s'agit d'une requete d'ajout...je vais creuser par là

n°404319
mario51
Posté le 22-05-2003 à 14:19:42  profilanswer
 

cedricbrun a écrit :

ça marche pas, il me dit que ce type de champ peut pas utiliser cette méthode :  
texto : "il ne prend pas en charge la mise à jour"


 
Il faut pour cela que ta commande soit en mode "Optimiste"
(je ne sais pas trop comment a marche pour une requetre manuelle car moi j'utilise des dataencvironnement et des command. Cela dit, tu dois trouver ca dans l'aide)
 
Tu pourra ainsi inserer dans ta table avec le Update et recuperer ton index autoincrementé !


---------------
Il ne faut pas vendre la peau de l'ours.....NON, il ne faut pas!!!!
n°404337
drasche
Posté le 22-05-2003 à 14:29:45  profilanswer
 

après ton insert tu fais directement un  

Code :
  1. select @@identity;


tu auras le dernier ID que tu as inséré dans ta DB.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°404367
cedricbrun
Posté le 22-05-2003 à 14:40:53  profilanswer
 

J'essaye, merci les amis!

n°404394
cedricbrun
Posté le 22-05-2003 à 14:48:03  profilanswer
 

drasche a écrit :

après ton insert tu fais directement un  

Code :
  1. select @@identity;


tu auras le dernier ID que tu as inséré dans ta DB.


Oui mais cela ne pose-t-il pas de pb quand à la concurrence d'accés ?  
ex : deux utilisateur entre les données quasi au même moment, les deux ajouts se font avant le select @@identity de chacun des utilisateur, puis le select @@identity renvoi le dernier numéro aux deux utilisateurs non ?
 
Dans ce cas c'est caca, risque de bug non négligeable.

n°404421
drasche
Posté le 22-05-2003 à 15:02:34  profilanswer
 

Ca ne pose aucun problème si ça se passe sur la même connexion, et il n'y a pas interférence sur des connexions concurrentes.  La méthode est safe et il me semble que c'est un standard SQL.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 22-05-2003 à 15:02:34  profilanswer
 

n°404457
cedricbrun
Posté le 22-05-2003 à 15:20:35  profilanswer
 

bah..select @@identity me renvoi toujours "-1"

n°404473
drasche
Posté le 22-05-2003 à 15:31:44  profilanswer
 

tu peux nous montrer un peu de ton code, parce que chez moi ça marche.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°404496
cedricbrun
Posté le 22-05-2003 à 15:41:11  profilanswer
 

drasche a écrit :

tu peux nous montrer un peu de ton code, parce que chez moi ça marche.


Yep j'ai été trop vite...je refais un essai autrement.

n°404659
cedricbrun
Posté le 22-05-2003 à 16:22:56  profilanswer
 

C'est bon ça marche enfin  :pt1cable:  
Merci beaucoup, c'est quand même beaucoup plus propre ainsi !

n°404669
dane
Posté le 22-05-2003 à 16:28:14  profilanswer
 

Serait tu le cédric brun de l'iut de nantes par hasard?

n°404679
cedricbrun
Posté le 22-05-2003 à 16:32:37  profilanswer
 

Quelle perspicacité !
Serait-tu le dane de l'iut de nantes par hasard ?

n°404681
dane
Posté le 22-05-2003 à 16:33:36  profilanswer
 

lui même en pleine galère sur le net

n°404684
cedricbrun
Posté le 22-05-2003 à 16:34:30  profilanswer
 

Quel est ton pb, que cherche tu ? (du VB ?)
Tu dois avoir un super sujet de stage toi aussi

n°404686
dane
Posté le 22-05-2003 à 16:34:39  profilanswer
 

tu t'y connaît en VBA

n°404689
dane
Posté le 22-05-2003 à 16:36:04  profilanswer
 

va sur le sujet que j'ai mis sur le forum
 
tout est expliqué
 
requête SQL et passage des paramètres associés


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] autoincrement et resultset

 

Sujets relatifs
mapping ResultSet vers Curseur Oracle?Formatage d'autoincrement perso
implementation de resultset[Java] ResultSet et Date (résolu)
JDBC - inserer un resultset[JAVA] Stored Procedures : Retourner un status code et un resultset
Oracle & autoincrement[JAVA] ResultSet : comment savoir le nombre de colonnes ?
[JAVA + SQL] Nb de lignes dans un resultSet[JAVA] Insérer le résultat d'une requete sql (ResultSet) dans 1 JTABLE
Plus de sujets relatifs à : [VB] autoincrement et resultset


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR