Creation d'une fonction [Résolu]

Signaler
Messages postés
222
Date d'inscription
vendredi 21 août 2020
Statut
Membre
Dernière intervention
4 juin 2021
-
Messages postés
222
Date d'inscription
vendredi 21 août 2020
Statut
Membre
Dernière intervention
4 juin 2021
-
bonsoir ; jai une table Service (IdService;DateService;IdSecteur;SujetService;ValeurServie;Num_Matricule;
CodeService)
le champ [CodeService] est de type texte qui est est mis à jour à partir de cette fonction:

Function GenCodeService() As String
Dim Code As String
Dim mx As Integer
mx = DCount("CodeService", "Service", "CodeService is not null")
If (mx = 0) Then
Code = "Serv_000001" & "/" & Year(Now)
Else
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT Max(Mid([CodeService],3,6)) as maxcmd FROM Service", dbOpenDynaset)
If Not rs.EOF Then rs.MoveFirst
Code = "Serv_" & Format(Int(rs("maxcmd")) + 1, "000000") & "/" & Year(Now)
rs.Close
Set rs = Nothing
End If
GenCodeService = Code
End Function
en effet ; lorsque je valide l'enregistrement dans mon formulaire ; il me ramène un message d'erreur '' Incompatibilité de type" et souligne en jaune
Code = "Serv_" & Format(Int(rs("maxcmd")) + 1, "000000") & "/" & Year(Now) dans la fonction crée
comment regler ce probleme
merci d'avance

1 réponse

Messages postés
16008
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 juin 2021
867
bonjour,
es-tu certain de pouvoir utiliser ainsi
rs("maxcmd")
?
moi j'écrirais
rs!maxcmd
Messages postés
16008
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 juin 2021
867 >
Messages postés
222
Date d'inscription
vendredi 21 août 2020
Statut
Membre
Dernière intervention
4 juin 2021

quelles sont les données dans la table?
que retourne la requête?
est-ce ce que tu souhaites?
que souhaites-tu?
examine le code de la requête: que fait-il? pourquoi fait-il cela?
Messages postés
222
Date d'inscription
vendredi 21 août 2020
Statut
Membre
Dernière intervention
4 juin 2021
>
Messages postés
16008
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 juin 2021

Je pense comprendre, en fait le max( mid( [codeservice], 3,6)) ramène rv_0000 quoi de plus normal donc si c'était max(mid([codeservice], 6,6)) le résultat serait 000001 et dans ce cas le premier champ de [ codeservice] serait Serv_000001/ 2021
En conclusion pour que la requête fonctionne il faut simplement que le code soit code = S_000001/2021 dans ma table
Je pense que je me suis fait comprendre
Merci
Messages postés
16008
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 juin 2021
867 >
Messages postés
222
Date d'inscription
vendredi 21 août 2020
Statut
Membre
Dernière intervention
4 juin 2021

peux-tu alors marquer la discussion comme résolue?
Messages postés
222
Date d'inscription
vendredi 21 août 2020
Statut
Membre
Dernière intervention
4 juin 2021
>
Messages postés
16008
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 juin 2021

Salut, cette discussion est résolue c'est vrai, mais la suivante concernant les relations entre les tables ne pourrait t'elle pas bénéficier d'une aide de votre part, je suis très coincé, je veux juste le lien avec les autre tables
Merci
Messages postés
222
Date d'inscription
vendredi 21 août 2020
Statut
Membre
Dernière intervention
4 juin 2021
>
Messages postés
16008
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 juin 2021

Effectivement int("rv_000") retourne une erreur, j'aurais voulu que maxcmd retourne 000001 et Int( "000001") retourne 1