Bonjour,

Je souhaite par l'intermédiaire d'un bouton de commande dans un sous formulaire remplacer une valeur dans un champ, lui même lié à la table correspondante.

La base :
T_ZONES est la table des zones (qui sont en fait des circonscriptions scolaires) identifiées par IDZONE
T_ECOLES est la table des écoles identifiées par IDECOL, et liée à T_ZONES par le champ IDZONE (présent dans les 2 tables).
Relation de 1 à Plusieurs (Une zone peut contenir plusieurs écoles), intégrité référentielle et mise à jour en cascade...

Côté formulaires :
F_ZONES est le formulaire de consultation générale, contenant lui même un sous-formulaire S_ECOLES.

C'est sur le sous formulaire que j'ai mis notamment un bouton 'cmdSupZone' censé remplacer la valeur du champ IDZONE du sous-formulaire S_ECOLES, mettant dans le champ la valeur "non affecté".
L'école ainsi changée n'apparaîtrait plus dans le sous-formulaire, et la valeur "non affecté" devrait se retrouver dans la la table T_ECOLE...

Je suis un peu perdu, si quelqu'un peut m'aider un peu pour mettre au point la procédure...

J'ai tenté ça...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub cmdSupZone_Click()
Dim SQL As String
SQL = "UPDATE T_ZONES INNER JOIN T_ECOLES "
SQL = SQL + "ON T_ZONES.IDZONE = T_ECOLES.IDZONE "
SQL = SQL + "SET T_ECOLES.IDZONE = 'non affecté'"
SQL = SQL + " WHERE ((([Formulaires]![F_ECOLES]![IDECOL])"
SQL = SQL + "=[T_ECOLES]![IDECOL]));"
DoCmd.RunSQL SQL
End Sub
Mais ça ne marche pas... Il me demande un paramètre (?), puis met à jour 0 lignes !

Merci de m'aider à y voir plus clair

J'ai aussi essayé ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub cmdSupZone_Click()
    Dim DB As DAO.Database
    Dim RS As DAO.Recordset
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset("ECOLES", dbOpenDynaset)
 
    RS.Edit
    RS("IDZONE") = "non affecté"
    RS.Update
    RS.Requery
    Set RS = Nothing
    Set DB = Nothing
End Sub
C'est toujours pas bon !!


Ibill