FORUM Tom's Hardware » Programmation » Autre » Récuperer l'id a partir d'une requete access en VBA
 

Récuperer l'id a partir d'une requete access en VBA

Il y a 289 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Récuperer l'id a partir d'une requete access en VBA
 
Plus d'informations

Bonjour,  
 
J'ai besoin d'aide, je n'arrive pas à récuperer l'ID d'une table.
voici une parti de mon code VBA.

Code :
  1. Private Sub cmdValider_Click()
  2. Dim db As DAO.Database
  3. Dim rst As DAO.Recordset
  4. Dim filename As String
  5. Dim sSQL As String
  6. Dim tempreq As String
  7. 'controle des zones si bien remplie
  8. If ztnom <> "" And ztduree <> "" And ztreal <> "" And ztacteurs <> "" And ztresume <> "" And LMsupport.Value <> 0 And LMgenre.Value <> 0 Then
  9.     'désactivation des messages
  10.     DoCmd.SetWarnings False
  11.  
  12.     'requete ajout de vidéos dans la base video
  13.     DoCmd.RunSQL "INSERT INTO video(NomVideo,Genre,Duree,Realisateur,ActeurPrincipal,Resume,Annee) Values (ztnom,LMgenre.value,ztduree,ztreal,ztacteurs,ztresume,ztannee);"
  14.    
  15.      
  16.     'sSQL = "Select MAX(Num) From video"
  17.      
  18.     DoCmd.RunSQL "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value,[#ff1c00]Ici je voudrais qu'apparaissennt l'ID du dernier enregistrement de video c'est à dire le dernier num automatique de la table vidéo[/#ff1c00];"
  19.    
  20.     'reactivation des messages à l'utilisateur
  21.     DoCmd.SetWarnings True
  22.     'effacement des zones de textes
  23.     ztnom = ""
  24.     ztduree = ""
  25.     ztreal = ""
  26.     ztacteurs = ""
  27.     ztresume = ""
  28.     LMgenre.Value = ""
  29.     LMsupport.Value = ""
  30.     ztannee = ""
  31. Else
  32.     'messages d'erreurs
  33.     MsgBox "Veuillez saisir toutes les informations", vbOKOnly + vbExclamation, "Ajout impossible"
  34. End If
  35. End Sub


 
Merci de m'aider...
Breizhkar


Message édité par breizhkar le 29-05-2006 à 15:46:25

zeb
Profil : Modérateur libre
Plus d'informations

http://site.voila.fr/zulu-echo-bravo/img/ForumPolitesse.gif

zeb
Profil : Modérateur libre
Plus d'informations

Quel VBA ? Access ?

zeb
Profil : Modérateur libre
Plus d'informations

Tu n'as pas un problème de VBA mais de SQL.
 
Il te faut faire une requête préalable pour récupérer l'ID.
Par chance, la numérotation automatique sous Access (Tu es bien sous Access ?) ne remplace pas les trous éventuels créés par une suppression, tu as donc la garantie que le dernier est le plus grand (facile pour le trouver)

Plus d'informations

Citation :

Tu n'as pas un problème de VBA mais de SQL.
 
Il te faut faire une requête préalable pour récupérer l'ID.
Par chance, la numérotation automatique sous Access (Tu es bien sous Access ?) ne remplace pas les trous éventuels créés par une suppression, tu as donc la garantie que le dernier est le plus grand (facile pour le trouver)


 
Salut!
Il me semble que j'ai déjà fait une requete pour récupérer l'ID, mais je ne sais pas comment écrire le code pour l'inscrire ensuite dans mon insert!
Effectivement, je suis bien sous ACCESS.

Code :
  1. [#000ef0]
  2. 'sSQL = "Select MAX(Num) From video"
  3.      
  4.     DoCmd.RunSQL "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value,Ici je voudrais qu'apparaissennt l'ID du dernier enregistrement de video c'est à dire le dernier num automatique de la table vidéo;" [/#000ef0]


Message édité par breizhkar le 29-05-2006 à 15:51:59
zeb
Profil : Modérateur libre
Plus d'informations

grrrr... Tu vas mettre ces balises [ code] oui ou m**** ?
 
Au temps pour moi, je n'ai pas vu la ligne select. [mode mauvaise_foi=On]C'est à cause du fait que tu n'as pas mis ces balises [ code] justement).
 
J'ai re-regardé ton truc et en effet, il faut connaître le truc. Tu utilises ADO ou DAO ?
 
Avec DAO :

Code :
  1. Dim rs As Recordset
  2. Set rs = CurrentDb.OpenRecordset("Select MAX(Num) MAX_NUMFrom video", dbOpenForwardOnly, dbReadOnly)
  3. MsgBox rs.Fields("MAX_NUM" ).Value
  4. rs.Close


 
Pour plus d'info :
1°) mettre des balises [code] dans tes 2 premiers posts....
 

Plus d'informations

:pt1cable:  
Désolée pour les balises...
 
Merci pour le code, ça fonctionne. Juste une chose, au moment de l'INSERT un message box s'ouvre en me demandant la saisie d'une valeur du MAX_NUM, du coup je suis obligée de taper le numéro qui s'est affiché avant.  
Tu n'aurais pas une info pour qu'elle soit directement inserer.
Merci d'avance.. je te redonne mon code.
 

Code :
  1. Private Sub cmdValider_Click()
  2. Dim db As Database
  3. Dim rs As Recordset
  4. Dim SQL As String
  5. Dim MAX_NUM As Integer
  6. Set rs = CurrentDb.OpenRecordset("Select MAX(Num)as MAX_NUM From video", dbOpenForwardOnly, dbReadOnly)
  7. MsgBox rs.Fields("MAX_NUM" ).Value
  8. rs.Close
  9. 'controle des zones si bien remplie
  10. If ztnom <> "" And ztduree <> "" And ztreal <> "" And ztacteurs <> "" And ztresume <> "" And LMsupport.Value <> 0 And LMgenre.Value <> 0 Then
  11.     'désactivation des messages
  12.     DoCmd.SetWarnings False
  13.  
  14.     'requete ajout de vidéos dans la base video
  15.     DoCmd.RunSQL "INSERT INTO video(NomVideo,Genre,Duree,Realisateur,ActeurPrincipal,Resume,Annee) Values (ztnom,LMgenre.value,ztduree,ztreal,ztacteurs,ztresume,ztannee);"
  16.     'requete ajout de vidéos dans la base support video
  17.     DoCmd.RunSQL "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value,MAX_NUM.Value);"
  18.    
  19.     'reactivation des messages à l'utilisateur
  20.     DoCmd.SetWarnings True
  21.     'effacement des zones de textes
  22.     ztnom = ""
  23.     ztduree = ""
  24.     ztreal = ""
  25.     ztacteurs = ""
  26.     ztresume = ""
  27.     LMgenre.Value = ""
  28.     LMsupport.Value = ""
  29.     ztannee = ""
  30. Else
  31.     'messages d'erreurs
  32.     MsgBox "Veuillez saisir toutes les informations", vbOKOnly + vbExclamation, "Ajout impossible"
  33. End If
  34. End Sub


zeb
Profil : Modérateur libre
Plus d'informations

M'enfin, essaie de comprendre se que fait le code.
J'ai écris

Code :
  1. MsgBox rs.Fields("MAX_NUM" ).Value


MsgBox = Message Box.
 
C'est juste pour afficher dans une boîte la valeur récupérée.
 
Toi, au lieu de l'afficher, tu mets cette valeur dans une variable.
Variable que tu réutilises au moment de l'insert.
 
Tu es vraiment un débutant, toi :lol: (Y'a pas de mal, je ne connais pas un seul prétendu gougou qui n'ait commencé newbie ;) )
 
Ah j'oubliais, merci pour les balises [code]


Message édité par zeb le 29-05-2006 à 16:24:58
Plus d'informations

eh ben oui débutant...
je vois très bien ce que tu veux dire par variable.
ce que j'ai fait mais cela ne fonctionne pas.
Est ce que tu pourrais me donner un coup de main en modifiant mon code que j'ai joins tout à l'heure..
parce que là, ca fait des heures que j'essaie et  :fou:  :fou:  :fou:  
merci d'avance
 

zeb
Profil : Modérateur libre
Plus d'informations

Code :
  1. Set rs = CurrentDb.OpenRecordset("Select MAX(Num)as MAX_NUM From video", dbOpenForwardOnly, dbReadOnly)
  2.     MAX_NUM = rs.Fields("MAX_NUM" ).Value
  3. [..]
  4.     MsgBox "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value," & MAX_NUM & " );"
  5.     DoCmd.RunSQL "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value," & MAX_NUM & " );"


 
Regarde ce que va faire la requête AVANT en ajoutant la ligne 4.
Dès que cela te convient, retire là.
 
Par principe et avant de chercher dans tes livres, sur google ou sur PPC, place des MsgBox ou mieux des DEBUG.PRINT un peu partout (ou encore mieux aux endroits clef) de ton programme. Ensuite tu les vires.

Plus d'informations

merci beaucoup!
ca fonctionne.en fait j'avais oublier les " et le & dans le code

Code :
  1. " & MAX_NUM & "


 

zeb
Profil : Modérateur libre
Plus d'informations

D'où l'intérêt du MsgBox qui te l'affiche en clair avant l'exécution.
 
Bon courage pour la suite.


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » Récuperer l'id a partir d'une requete access en VBA
 

Annonces Google
Publicité
Les téléchargements