Récuperer l'id a partir d'une requete access en VBA
Dernière réponse : dans Programmation
Bonjour,
J'ai besoin d'aide, je n'arrive pas à récuperer l'ID d'une table.
voici une parti de mon code VBA.
Merci de m'aider...
Breizhkar
J'ai besoin d'aide, je n'arrive pas à récuperer l'ID d'une table.
voici une parti de mon code VBA.
Private Sub cmdValider_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim filename As String
Dim sSQL As String
Dim tempreq As String
'controle des zones si bien remplie
If ztnom <> "" And ztduree <> "" And ztreal <> "" And ztacteurs <> "" And ztresume <> "" And LMsupport.Value <> 0 And LMgenre.Value <> 0 Then
'désactivation des messages
DoCmd.SetWarnings False
'requete ajout de vidéos dans la base video
DoCmd.RunSQL "INSERT INTO video(NomVideo,Genre,Duree,Realisateur,ActeurPrincipal,Resume,Annee) Values (ztnom,LMgenre.value,ztduree,ztreal,ztacteurs,ztresume,ztannee);"
'sSQL = "Select MAX(Num) From video"
DoCmd.RunSQL "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value,[color=#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[/color];"
'reactivation des messages à l'utilisateur
DoCmd.SetWarnings True
'effacement des zones de textes
ztnom = ""
ztduree = ""
ztreal = ""
ztacteurs = ""
ztresume = ""
LMgenre.Value = ""
LMsupport.Value = ""
ztannee = ""
Else
'messages d'erreurs
MsgBox "Veuillez saisir toutes les informations", vbOKOnly + vbExclamation, "Ajout impossible"
End If
End Sub
Merci de m'aider...
Breizhkar
Autres pages sur : recuperer partir requete access vba
Lassé par la pub ? Créez un compte
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)
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)
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.
[color=#000ef0]
'sSQL = "Select MAX(Num) From video"
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;" [/color]
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 :
Pour plus d'info :
1°) mettre des balises [code] dans tes 2 premiers posts....
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 :
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Select MAX(Num) MAX_NUMFrom video", dbOpenForwardOnly, dbReadOnly)
MsgBox rs.Fields("MAX_NUM").Value
rs.Close
Pour plus d'info :
1°) mettre des balises [code] dans tes 2 premiers posts....
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.
Private Sub cmdValider_Click()
Dim db As Database
Dim rs As Recordset
Dim SQL As String
Dim MAX_NUM As Integer
Set rs = CurrentDb.OpenRecordset("Select MAX(Num)as MAX_NUM From video", dbOpenForwardOnly, dbReadOnly)
MsgBox rs.Fields("MAX_NUM").Value
rs.Close
'controle des zones si bien remplie
If ztnom <> "" And ztduree <> "" And ztreal <> "" And ztacteurs <> "" And ztresume <> "" And LMsupport.Value <> 0 And LMgenre.Value <> 0 Then
'désactivation des messages
DoCmd.SetWarnings False
'requete ajout de vidéos dans la base video
DoCmd.RunSQL "INSERT INTO video(NomVideo,Genre,Duree,Realisateur,ActeurPrincipal,Resume,Annee) Values (ztnom,LMgenre.value,ztduree,ztreal,ztacteurs,ztresume,ztannee);"
'requete ajout de vidéos dans la base support video
DoCmd.RunSQL "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value,MAX_NUM.Value);"
'reactivation des messages à l'utilisateur
DoCmd.SetWarnings True
'effacement des zones de textes
ztnom = ""
ztduree = ""
ztreal = ""
ztacteurs = ""
ztresume = ""
LMgenre.Value = ""
LMsupport.Value = ""
ztannee = ""
Else
'messages d'erreurs
MsgBox "Veuillez saisir toutes les informations", vbOKOnly + vbExclamation, "Ajout impossible"
End If
End Sub
M'enfin, essaie de comprendre se que fait le code.
J'ai écris
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
(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]
J'ai écris
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
(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]
Set rs = CurrentDb.OpenRecordset("Select MAX(Num)as MAX_NUM From video", dbOpenForwardOnly, dbReadOnly)
MAX_NUM = rs.Fields("MAX_NUM").Value
[..]
MsgBox "INSERT INTO supp_video(Num_supportv,Num_Video) Values (LMsupport.Value," & MAX_NUM & ");"
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.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumTest dans requete access
- ForumExemple requete access
- ForumRã sultat d'une requete access
- ForumAfficher requete access
- ForumFormule dans requete access
- ForumCompteur requete access
- ForumAccess vba requete variable
- ForumAccess vba rã sultat d'une requete
- ForumAccess vba resultat requete
- ForumLien entre formulaire et requete sous access
- Voir plus