cs_Gdal
Messages postés30Date d'inscriptionvendredi 21 juin 2002StatutMembreDernière intervention 9 mai 2003
-
9 mai 2003 à 18:02
frappemisere
Messages postés34Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention21 août 2003
-
9 mai 2003 à 19:08
Bonjour,
J'ai deux tables:
+ Tbl_ndos avec:
- ID_ndos en numéroauto et clé primaire
- N_dos en numérique
+ Tbl_clas avec:
- ID_nclas en numéroauto et clé primaire
- Ref_Tblndos en numérique
- N_clas en texte
elles sont liées ainsi
Tbl_ndos.ID_ndos ---1--------plusieurs---> Tbl_nclas.Ref_Tblndos
Mon souci arrive en vba !!
J'ai un formulaire "Form_1" avec:
+ un champ "N_dos" que je rempli (via VBA) à l'ouverture du formulaire
=> on ne peut pas avoir deux fois le même numéro dans le champ "N_dos"
+ un champ "texte"
+ une zone de liste "Zone_nclas" qui m'affiche les numéros de classeur
=> Cette liste est remplie en fonction du champ "N_dos"
SELECT Tbl_ndos.ID_ndos, Tbl_ndos.N_dos, Tbl_nclas.N_clas FROM Tbl_ndos INNER JOIN Tbl_nclas ON Tbl_ndos.ID_ndos=Tbl_nclas.Ref_Tbl_ndos WHERE Tbl_ndos.N_dos=" & Me.N_dos & ";"
+ un bouton "ajouter"
voilà pour le décor !
Maintenant, je voudrais, en passant par le VBA évidemment, enregistrer la valeur contenue dans le champ "texte", dans le champ "N_clas" de la table "Tbl_nclas" mais que celle-ci soit lié à la table "Tbl_ndos".
Je pense bien qu'il faille passer par le SQL dans mon recordset mais je vois pas comment.
Voilà le code !
Dim db As DAO.Database
Dim rec As DAO.Recordset
SQL "SELECT Tbl_ndos.ID_ndos, Tbl_ndos.N_dos, Tbl_nclas.ID_nclas, Tbl_nclas.Ref_Tbl_ndos, Tbl_nclas.N_clas FROM Tbl_ndos INNER JOIN Tbl_nclas ON Tbl_ndos.ID_ndos Tbl_nclas.Ref_Tbl_ndos WHERE Tbl_ndos.N_dos=" & Me.N_dos & ";"
Set db = CurrentDb()
Set rec = db.OpenRecordset(SQL)
rec.AddNew
rec![N_clas] = Me![texte]
rec.Update
rec.Close
Me.Zone_nclas.requery
L'erreur est, maitenant la suivante:
Erreur d'exécution '3101':
Le moteur de base de donnée Microsoft Jet ne peut pas trouver d'enregistrement dans la table 'Tbl_Ndos' avec le (les) champ(s) 'Ref_Tbl_ndos' correspondant à la clé.
Et m'emmène sur la ligne
rec.Update