Problème enregistrement en VBA avec liaison Table

cs_Gdal Messages postés 30 Date d'inscription vendredi 21 juin 2002 Statut Membre Dernière intervention 9 mai 2003 - 9 mai 2003 à 18:02
frappemisere Messages postés 34 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 21 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

merci d'avance du coup de main !

Gdal

1 réponse

frappemisere Messages postés 34 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 21 août 2003
9 mai 2003 à 19:08
a voir ton message d'erreur, je dirai tout d abord que tu as du faire une erreur d orthographe quelque part
0
Rejoignez-nous