J'ai besoin d'aide, je n'arrive pas à récuperer l'ID d'une table.
voici une parti de mon code VBA.
Code :
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,[#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];"
'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
Message édité par breizhkar le 29-05-2006 à 15:46:25
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)
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 :
[#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;" [/#000ef0]
Message édité par breizhkar le 29-05-2006 à 15:51:59
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 :
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"
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 merci d'avance
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.