Ajout d'un enregistrement en VBA
Fermé
supadope
Messages postés
5
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
12 juin 2009
-
6 avril 2008 à 16:25
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 15 avril 2008 à 20:05
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 15 avril 2008 à 20:05
Bonjour,
je cherche à ajouter un enregistrement en VBA sur access. Le problème c que je veut ajouter un enregistrement (NumCli) ds une table RESERVATION à partir de NomCli (entré par l'utilisateur du programme) qui se trouve ds un autre table CLIENT.
les 2 tables :
CLIENT(NumCli,NomCli)
RESERVATION(NumRes,NumCli#)
je cherche à ajouter un enregistrement en VBA sur access. Le problème c que je veut ajouter un enregistrement (NumCli) ds une table RESERVATION à partir de NomCli (entré par l'utilisateur du programme) qui se trouve ds un autre table CLIENT.
les 2 tables :
CLIENT(NumCli,NomCli)
RESERVATION(NumRes,NumCli#)
A voir également:
- Ajout d'un enregistrement en VBA
- Ajout snap sans rien d'écrit - Forum Snapchat
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Enregistrer en pdf - Guide
- Comment couper un enregistrement audio - Guide
- Ajout rapide snap - Forum Snapchat
5 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
6 avril 2008 à 16:39
6 avril 2008 à 16:39
Bonjour,
Tu donnes trop peu d'éléments ... NumRes est-il un numéro automatique ? Si c'est le cas il suffit de faire un simple insert :
Insert Into Reservation Values (NumCli)
Polux
Tu donnes trop peu d'éléments ... NumRes est-il un numéro automatique ? Si c'est le cas il suffit de faire un simple insert :
Insert Into Reservation Values (NumCli)
Polux
supadope
Messages postés
5
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
12 juin 2009
6 avril 2008 à 18:06
6 avril 2008 à 18:06
en faite c'est un programme vba, j'ai cru trouver une solution mais je tombe sur une erreur qui me dit :" vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table 'concert'"
ce message aparait dés que le programme passe sur " RESERVATION.Update"
voila ce que j'ai fait :
Sub programme5() 'ajout d'une réservation
Dim cli As String
Dim nb As Integer
Dim conc As String
Dim nb2 As Integer
Dim db2 As Database
Dim CLIENT As Recordset
Set db2 = CurrentDb()
Set CLIENT = db2.OpenRecordset("CLIENT")
Dim db3 As Database
Dim CONCERT As Recordset
Set db3 = CurrentDb()
Set CONCERT = db3.OpenRecordset("CONCERT")
Dim db As Database
Dim RESERVATION As Recordset
Set db = CurrentDb()
Set RESERVATION = db.OpenRecordset("RESERVATION")
nb2 = 0
conc = InputBox(" Nom du concert ")
While Not CONCERT.EOF
If CONCERT("NomConc") = conc Then
nb2 = CONCERT("NumConc")
End If
CONCERT.MoveNext
Wend
RESERVATION.AddNew
RESERVATION("NumConc") = nb2
RESERVATION.Update
nb = 0
cli = InputBox(" Nom du client ")
While Not CLIENT.EOF
If CLIENT("NomCli") = cli Then
nb = CLIENT("NumCli")
End If
CLIENT.MoveNext
Wend
RESERVATION.AddNew
RESERVATION("NumCli") = nb
RESERVATION.Update
RESERVATION.Close
CLIENT.Close
CONCERT.Close
MsgBox ("Nouvelle réservation ajouté")
End Sub
désolé je suis pas très clair dans mes explications ...
ce message aparait dés que le programme passe sur " RESERVATION.Update"
voila ce que j'ai fait :
Sub programme5() 'ajout d'une réservation
Dim cli As String
Dim nb As Integer
Dim conc As String
Dim nb2 As Integer
Dim db2 As Database
Dim CLIENT As Recordset
Set db2 = CurrentDb()
Set CLIENT = db2.OpenRecordset("CLIENT")
Dim db3 As Database
Dim CONCERT As Recordset
Set db3 = CurrentDb()
Set CONCERT = db3.OpenRecordset("CONCERT")
Dim db As Database
Dim RESERVATION As Recordset
Set db = CurrentDb()
Set RESERVATION = db.OpenRecordset("RESERVATION")
nb2 = 0
conc = InputBox(" Nom du concert ")
While Not CONCERT.EOF
If CONCERT("NomConc") = conc Then
nb2 = CONCERT("NumConc")
End If
CONCERT.MoveNext
Wend
RESERVATION.AddNew
RESERVATION("NumConc") = nb2
RESERVATION.Update
nb = 0
cli = InputBox(" Nom du client ")
While Not CLIENT.EOF
If CLIENT("NomCli") = cli Then
nb = CLIENT("NumCli")
End If
CLIENT.MoveNext
Wend
RESERVATION.AddNew
RESERVATION("NumCli") = nb
RESERVATION.Update
RESERVATION.Close
CLIENT.Close
CONCERT.Close
MsgBox ("Nouvelle réservation ajouté")
End Sub
désolé je suis pas très clair dans mes explications ...
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
6 avril 2008 à 18:31
6 avril 2008 à 18:31
Combien de base de données utilise-tu ? tu as bd, db2 et db3 ??? tu ouvres 3 connexions à ta base ??? une seule suffit.
Ensuite un champ de base se désigne comme ça : CLIENT.NumCli ou CLIENT!NumCli et non CLIENT("NumCli").
Mets un point d'arrêt sur la ligne du While et passe le code pas à pas (touche F8) et regarde ce qui se passe dans la boucle.
Ensuite un champ de base se désigne comme ça : CLIENT.NumCli ou CLIENT!NumCli et non CLIENT("NumCli").
Mets un point d'arrêt sur la ligne du While et passe le code pas à pas (touche F8) et regarde ce qui se passe dans la boucle.
supadope
Messages postés
5
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
12 juin 2009
6 avril 2008 à 18:50
6 avril 2008 à 18:50
en faite RESERVATION contient Numres (numéro auto) NumCli (que je voudrait importé de CLIENT à partir de NomCli) et NumConc (que je voudrait importé de CONCERT à partir de NomConc)
j'ai déjà lancé le programme pas à pas et les 2 boucles marche le message d'erreur vient après les 2 boucles sur les 2 "RESERVARTIONS.Update".
j'utilise donc les 3 base RESERVATION , CLIENT(NumCli,NomCli) et CONCERT(NumConc,NomConc). c'est pour sa que j'ai db, db2 et db3 pour chacune des bases.
la désignation des champs comme je l'ai fait marche normalement car je l'est utilisée ds d'autre programme qui marchent.
j'ai déjà lancé le programme pas à pas et les 2 boucles marche le message d'erreur vient après les 2 boucles sur les 2 "RESERVARTIONS.Update".
j'utilise donc les 3 base RESERVATION , CLIENT(NumCli,NomCli) et CONCERT(NumConc,NomConc). c'est pour sa que j'ai db, db2 et db3 pour chacune des bases.
la désignation des champs comme je l'ai fait marche normalement car je l'est utilisée ds d'autre programme qui marchent.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
15 avril 2008 à 20:05
15 avril 2008 à 20:05
Bonjour,
Je pense que tu confonds base de données et tables ... une base de données contient plusieurs tables liées entre elles par des liaisons (cardinalités).
Lorsque tu fais : Dim db As DataBase, tu déclares un objet base de données (pour faire simple), dans cette base de données, tu as 3 tables RESERVATION, CLIENT et CONCERT.
Quand tu fais Set db = CurrentDb(), tu pointes sur ta base de données et donc sur les tables de cette base.
Il te faut également un objet RecordSet pour aller chercher les infos dans les tables en passant une requête (commande SQL pour lire, modifier ou supprimer etc ... des items de la base).
Imaginon que tu veuilles toutes les réservations pour un concert, la commande SQL sera :
Il te faut faire dans le code :
Il faut ensuite parcourir le recordset pour en extraire les données ...
polux
Je pense que tu confonds base de données et tables ... une base de données contient plusieurs tables liées entre elles par des liaisons (cardinalités).
Lorsque tu fais : Dim db As DataBase, tu déclares un objet base de données (pour faire simple), dans cette base de données, tu as 3 tables RESERVATION, CLIENT et CONCERT.
Quand tu fais Set db = CurrentDb(), tu pointes sur ta base de données et donc sur les tables de cette base.
Il te faut également un objet RecordSet pour aller chercher les infos dans les tables en passant une requête (commande SQL pour lire, modifier ou supprimer etc ... des items de la base).
Imaginon que tu veuilles toutes les réservations pour un concert, la commande SQL sera :
Select * From Reservation Where Reservation.NumConc = Concert.NumConc And Concert.NumConc = 1
Il te faut faire dans le code :
Dim db As DataBase Dim rs As RecordSet Set db = CurrentDb() rs = db.OpenRecordset("Select * From Reservation Where Reservation.NumConc = Concert.NumConc " _ & "And Concert.NumConc = 1")
Il faut ensuite parcourir le recordset pour en extraire les données ...
polux
6 avril 2008 à 18:08