URGENT!!!! DAO VBA Access

Fermé
Titus5739924 - 14 mai 2008 à 12:57
byakhlefncr Messages postés 260 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 - 15 mai 2008 à 20:22
Bonjour, J'aurais aimer obtenir de l'aide à propos d'un code sur VBA Access en DAO, en effet une fois le code saisie j'ai un message d'erreur et je ne vois plus où se situe l'erreur, même ma prof d'info ne s'y retrouve plus, Voici le code:


Private Sub Ok_Click()

Dim db As DAO.Database
Dim rs0 As DAO.Recordset
Dim rs5 As DAO.Recordset
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rs3 As DAO.Recordset
Dim rs4 As DAO.Recordset
Dim rs6 As DAO.Recordset
Dim req0 As String
Dim req As String
Dim req2 As String
Dim req3 As String
Dim lastrs
Dim Discipline_acc As String
Dim Produit_acc As String
Dim Discipline
Dim Produit
Dim Quantite As Double
Dim datenow As Date
Dim res

datenow = Date
'Attribution des valeurs données dans le formulaire
Discipline_acc = forms!AjoutCommProf1.Discipline
Produit_acc = forms!AjoutCommProf1.Produit
Quantite = forms!AjoutCommProf1.Quantité

'Ouverture de la base
Set db = CurrentDb()

'Ouverture de la table Discipline
Set rs0 = db.OpenRecordset("DISCIPLINE")

'Ouverture de la table Produit
Set rs5 = db.OpenRecordset("PRODUIT")

'Selection des ID Prod et ID Disc en fonction des valeurs données dans le formulaire
req0 = "SELECT ID_Disc FROM DISCIPLINE WHERE Nom_Disc = '" & Discipline_acc & "';"
req3 = "SELECT ID_Prod FROM PRODUIT WHERE Libel_Prod = '" & Produit_acc & "';"

'Execution des requètes
Set rs3 = db.OpenRecordset(req0)
Set rs6 = db.OpenRecordset(req3)

'Attribution des résultats des requètes dans des variables
Discipline = rs3!ID_Disc
Produit = rs6!Id_Prod

'Ouverture des tables COMMANDE_DISCIPLINE et DETAIL_COMMANDE
Set rs = db.OpenRecordset("COMMANDE_DISCIPLINE")
Set rs2 = db.OpenRecordset("DETAIL_COMMANDE")

'Insertion des données du formulaire dans les tables
req = "Insert into COMMANDE_DISCIPLINE values (''," & Discipline & ", " & datenow & ")"
db.Execute req
rs.MoveLast

'Récupération du dernier ID_Cmde_Disc pour insertion
laststrs = rs!ID_Cmde_Disc

'Insertion des données du formulaire dans la tables
req2 = "Insert into DETAIL_COMMANDE values ( " & lastrs & "," & Produit & "," & Quantite & ")"
db.Execute (req2)

'Fermeture des tables et des enregistrements
rs0.Close
rs.Close
rs2.Close
rs3.Close
rs4.Close
rs5.Close
rs6.Close
db.Close
End Sub

Erreur: Erreur d'execution 3061, Trop peu de paramètres. 1 attendu

Merci de me repondre

7 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
14 mai 2008 à 13:14
salut,

sur quelle ligne se situe l'erreur ?
0
Titus5739924
14 mai 2008 à 19:10
Apparement, le débogeur s'arrête sur la ligne la:

db.Execute req

Merci
0
Titus5739924
14 mai 2008 à 19:44
Erreur egalement sur la ligne la:

Set rs3 = db.OpenRecordset(req0)

Le debogeur annonce l'erreur: Erreur de syntaxe (opérateur absent) dans l'expression "Nom_Disc = 'Sciences de l'ingénieur';

Merci
0
byakhlefncr Messages postés 260 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 63
15 mai 2008 à 04:54
Salut,

Supprimes les : ," dans
req = "Insert into COMMANDE_DISCIPLINE values (''," & Discipline & ", " & datenow & ")"

req = "Insert into COMMANDE_DISCIPLINE values ('' & Discipline & ", " & datenow & ")"


Bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 26530 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 15 décembre 2024 3 317
15 mai 2008 à 09:21
Salut,

sciences de l'ingénieur contient un apostrophe, qui est également utilisé comme délimiteur de champ texte dans la requête définie via le string req0...

Solution dans ce cas : doubler les doubles-quotes (pour en faire des séparateurs) avec le code ascii pour garder la lisibilité.
...WHERE Nom_Disc = " & Chr(34) & Discipline_acc & Chr(34) & ";" 
--

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
Titus5739924
15 mai 2008 à 18:41
Salut byakhlefncr,

Le soucis est que ma table contient le champs clé primaire en mode auto incrément ce qui signifie que je dois laisser un champs vide pour que le numero s'affiche automatiquement!

Comment faire?

Merci
0
byakhlefncr Messages postés 260 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 11 septembre 2008 63
15 mai 2008 à 20:22
Salut,

tu peux utilser l'instruction "Insert" en faisant référence aux champs qu'on veut implémenter :
tu as al possibité donc de ne pas incorporer les champs autoincrémentés par expemple.


req = "Insert into COMMANDE_DISCIPLINE (Nom_Disc , Date_Disc) values ('' & Discipline & ", " & datenow & ")"


bonne chance.
0