Bonjour à tous,
Voilà, j'ai une fonction pour créer un certain nombre de nouveaux enregistrements, déclenchée par un bouton et passant trois variables (un champ identificateur, une variable début(ProchainArticle) et un champ NbreArticle.
Ca fonctionne sauf si la table cible de l'INSERT est vide car alors le recordset est vide et ne peut pas calculer le prochain champ clé en numauto.
J'ai essayé différents tests (qui d'habitude me donnent satifaction) avec BOF ou EOF sans résultat, c'est curieux: je n'ai pas le debug print "coucou" dans le cas de la table cible vide alors que j'execute bien l'incrémentation du numauto dans le cas ou il existe déjà au moins un enregistrement.
Ce code fonctionne seulement si il existe au moins un enregistrement, que puis-je mettre au lieu de < valMax = 1> (car le pb n'est probablement dans le test mais dans l'action)?
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
22
23
24
25
26
27
28
29
30
31 Public Function CreationArticle(ByVal VersementID As Long, ByVal NbreArticle As Integer, ByVal ProchainArticle As Integer) As String Dim valMax As Long Dim Renvoircd As Integer Renvoircd = 0 Dim rcd As DAO.Recordset 'on récupère la valeur max Dim boucle As Integer On Error GoTo Fin DoCmd.SetWarnings (False) For boucle = ProchainArticle To (ProchainArticle + NbreArticle) Set rcd = CurrentDb.OpenRecordset("SELECT MAX(ArticleAVerserID) FROM tblArticleAVerser") If rcd.EOF Then 'Pas de record valMax = 1 Debug.Print "coucou" Else valMax = rcd.Fields(0) + 1 End If Debug.Print "valMax4 "; valMax rcd.Close 'on l'insère CurrentDb.Execute "INSERT INTO tblArticleAVerser (ArticleAVerserID, VersementIDParent, NumeroArticle)" & _ "VALUES (" & "" & valMax & "" & "," & "" & VersementID & "" & "," & "" & ProchainArticle & "" & ")" 'Compteur ProchainArticle = ProchainArticle + 1 Renvoircd = Renvoircd + 1 CreationArticle = Renvoircd Next boucle DoCmd.SetWarnings (True) Fin: MsgBox ("Ca s'est mal passé...") CreationArticle = Renvoircd
D'autre part , bien que je ne vois pas d'erreur (que mon insert se passe bien ou pas) le msgbox de Fin: est toujours activé. Pourquoi?
Merci pour votre attention.
Partager