OVH Cloud OVH Cloud

Problème avec la fonction DMAX?

7 réponses
Avatar
Sogolon
Bonjour à toutes et à tous.
Dans mon formulaire de saisie de courrier j'ai la fonction ci-après/
-----Début
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me!Numero) Then
Me!Numero = DMax("[Numero]", "CourriersArrivés")
End If
End Sub

------Fin du code

PROBLÈME:
J'ai fais des modifications directement dans la table "CourriersArrivés" et
la dernière valeur de "Numero" vaut 12 (c'est le plus grand 1,2,...12).

Merci de votre aide.
A+...

7 réponses

Avatar
Bonjour

euh...je n'ai pas compris la question, tu peux la reposer autrement ?...
peut-être que Me!Numero = DMax("[Numero]", "CourriersArrivés")+1 marchera mieux ?

a+

--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------




"Sogolon" <mbenoumar(àsuprimer)@hotmail.com> a écrit dans le message de news:
Bonjour à toutes et à tous.
Dans mon formulaire de saisie de courrier j'ai la fonction ci-après/
-----Début
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me!Numero) Then
Me!Numero = DMax("[Numero]", "CourriersArrivés")
End If
End Sub

------Fin du code

PROBLÈME:
J'ai fais des modifications directement dans la table "CourriersArrivés" et
la dernière valeur de "Numero" vaut 12 (c'est le plus grand 1,2,...12).

Merci de votre aide.
A+...




Avatar
Sogolon
Merci "Anor" de votre promptitude.
Le code Complet est celui-ci:
-----Début
Public Function NouveauNum(ByVal NewCourrier As Long, ByVal NewDate As Date)
As Long

Dim vOldN As Variant

Dim sCond1 As String
Dim sCond2 As String
Dim sCond As String

sCond1 = "TypeCourrier =" & NewCourrier
sCond2 = "Year(DateCourrier)=" & Year(NewDateCourrier)
sCond = "(" & sCond1 & ") AND (" & sCond2 & ")"

vOldN = DMax("[Numero]", "CourriersArrivés", sCond)

If IsNull(vOldN) Then
NouveauNumCourrier = 1
Else
NouveauNumCourrier = vOldN + 1
End If

End Function
----
Private Sub ActuliserForm_Click()
On Error GoTo Err_ActuliserForm_Click
If IsNull(Me!Numero) Then
Me!Numero = NouveauNumCourrier(Me.TypeCourrier, Me.DateCourrier)
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_ActuliserForm_Click:
Exit Sub
Err_ActuliserForm_Click:
'MsgBox Err.Description
Resume Exit_ActuliserForm_Click
End Sub

Merci encore/
A+...
Avatar
Bonjour

ok merci mais quel est le problème exactement ?

a+
arnaud


"Sogolon" <mbenoumar(àsuprimer)@hotmail.com> a écrit dans le message de news:
Merci "Anor" de votre promptitude.
Le code Complet est celui-ci:
-----Début
Public Function NouveauNum(ByVal NewCourrier As Long, ByVal NewDate As Date)
As Long

Dim vOldN As Variant

Dim sCond1 As String
Dim sCond2 As String
Dim sCond As String

sCond1 = "TypeCourrier =" & NewCourrier
sCond2 = "Year(DateCourrier)=" & Year(NewDateCourrier)
sCond = "(" & sCond1 & ") AND (" & sCond2 & ")"

vOldN = DMax("[Numero]", "CourriersArrivés", sCond)

If IsNull(vOldN) Then
NouveauNumCourrier = 1
Else
NouveauNumCourrier = vOldN + 1
End If

End Function
----
Private Sub ActuliserForm_Click()
On Error GoTo Err_ActuliserForm_Click
If IsNull(Me!Numero) Then
Me!Numero = NouveauNumCourrier(Me.TypeCourrier, Me.DateCourrier)
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_ActuliserForm_Click:
Exit Sub
Err_ActuliserForm_Click:
'MsgBox Err.Description
Resume Exit_ActuliserForm_Click
End Sub

Merci encore/
A+...



Avatar
Sogolon
Bonjour, voila le problème:
Pour un type de courrier tout ce passait très jusqu'au moment où je constate
que si rentre un nouveau courrier j'ai toujours le N° 10 qui lui est
attribué. Alors que la valeur maxi de Numero dans la table est 12. Il ne veut
plus incrémenter sur 13 et continuer. Je suis sur du courrier de mai 2006.
J'utilise Access 2003.

Merci encore.
A+...



Bonjour

ok merci mais quel est le problème exactement ?

a+
arnaud


Avatar
Eric
Bonjour,

Dans ta fonction, tu passes en argument 'ByVal NewDate As Date' et dans
sCond2 tu mets :
sCond2 = "Year(DateCourrier)=" & Year(NewDateCourrier)

Ne serait-ce pas :
sCond2 = "Year(DateCourrier)=" & Year(NewDate) ?

De même, ta fonction s'appelle Function NouveauNum()
dans le test If IsNull(vOldN) then ...
faudrait mettre
NouveauNum = 1 au lieu de NouveauNumCourrier = 1
idem pour le Else : NouveauNum = vOldN + 1

et dans la procédure ActuliserForm_Click() tu l'appelles
NouveauNumCourrier(Me.TypeCourrier, Me.DateCourrier)là encore :
NouveauNum(Me.TypeCourrier, Me.DateCourrier)

Merci "Anor" de votre promptitude.
Le code Complet est celui-ci:
-----Début
Public Function NouveauNum(ByVal NewCourrier As Long, ByVal NewDate As Date)
As Long

Dim vOldN As Variant

Dim sCond1 As String
Dim sCond2 As String
Dim sCond As String

sCond1 = "TypeCourrier =" & NewCourrier
sCond2 = "Year(DateCourrier)=" & Year(NewDateCourrier)
sCond = "(" & sCond1 & ") AND (" & sCond2 & ")"

vOldN = DMax("[Numero]", "CourriersArrivés", sCond)

If IsNull(vOldN) Then
NouveauNumCourrier = 1
Else
NouveauNumCourrier = vOldN + 1
End If

End Function
----
Private Sub ActuliserForm_Click()
On Error GoTo Err_ActuliserForm_Click
If IsNull(Me!Numero) Then
Me!Numero = NouveauNumCourrier(Me.TypeCourrier, Me.DateCourrier)
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_ActuliserForm_Click:
Exit Sub
Err_ActuliserForm_Click:
'MsgBox Err.Description
Resume Exit_ActuliserForm_Click
End Sub

Merci encore/
A+...



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Sogolon
Vous avez tout à fait raison "Eric" c'était une erreur de frappe.
Merci

A+...
Avatar
Sogolon
Merci à tous surtout à "Anor" et à "Eric".
Finalement j'ai repris une copie de ma base et j'y ai importé les données de
ma table et ça a l'air de remarcher.
J'ai un petit problème d'importation des données de la table mais je vais
intier un nouveau post pour ça.
Encore merci beaucoup.
A bientôt.


Vous avez tout à fait raison "Eric" c'était une erreur de frappe.
Merci

A+...