Bonjour,
une table "Programmes" contenant les programmes et un table "Versions" contenant toutes les versions de tous les programmes.
un formulaire programme et un sous-formulaire version (en mode continu) qui permet la saisie des différentes versions de chaque programme.
Afin d'éviter à l'utilisateur de saisir les numéros de version, je souhaiterais les gérer automatiquement; j'ai développé le code suivant déclenché sur double-clic du numéro de version (par exemple)
Ce code me retourne l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Public Function genereNoVersion() As Long ' Fonction qui génère automatiquement le numéro de version Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("SELECT MAX(NoVersion)AS MaxNoVersion FROM Versions WHERE Num_Programme = Screen.ActiveForm.ActiveControl.Form!ztNUMEROProg") ' ztNUMEROProg est un contrôle du sous-formulaire Version et contient la valeur de la PK de la table Programmes If IsNull(rst!MaxNoVersion.Value) Then 'résultat de la requête vide, le rst retourne une ligne avec null dans la valeur genereNoVersion = 1 Else genereNoVersion = rst.Fields("maxNoVersion").Value + 1 End If rst.Close Set rst = Nothing End Function
Erreur d'exécution '3061'
trop peu de paramètres. 1 attendu
Ce qui m'étonne, c'est que si je remplacepar un numéro de programme en dur (par exemple 33), ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Screen.ActiveForm.ActiveControl.Form!ztNUMEROProg
Est-ce que quelqu'un voit pourquoi ?
Merci de votre aide.
skeut
Partager