bonjour,

j'ai une table qui contient un champ [IFR] de type date/heure.
J'y enregistre une durée.
Etant donné que j'utilise la somme des durées dans certains états, j'ai crée une fonction VBA comme suit (pour afficher des valeurs plus grandes que 24h):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
Public Function datetostring(ByVal x As Date) As String
Dim y As Long
datetostring = ""
If x = Null Then Exit Function
If x = 0 Then Exit Function
y = (x * 60 * 60 * 24) + 1
datetostring = CStr(Int(y / 3600)) & ": "
If Int((y Mod 3600) / 60) < 10 Then datetostring = datetostring & "0"
datetostring = datetostring & CStr(Int((y Mod 3600) / 60))
End Function

Cela fonctionne assez bien, et il n'y a pas de problèmes alle remplit très bien son office dans les états où je l'utilise comme suit:

=datetostring(somme([IFR])) (dans une entête ou pied de section)

Je suis par contre confronté à une erreur quand dans la section détail j'inscrit
=datetostring ([IFR])

là j'ai un beau #erreur#.
Je pourrais mettre le champ de manière brute =[IFR] mais je désire réelement utiliser ma fonction car même si je demande dans l'état un format hh:nn (dans la section détail, sans somme, je suis sûr de n'avoir que des valeurs inférieures à 24h), si la durée est nulle, il m'affiche 00:00 et je voudrais qu'il n'afffiche rien.
Il y aurait il une astuce?

L'état est basé sur une requête dans la forme :

SELECT blablabla,IFR FROM Qflights

Qflights est une requête

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT tblFlight.FlightID, tblFlight.Date, tblTypeDesignator.Designator, tblTypeDesignator.MultiEngine, tblNumber.Number, tblCopilot.Copilot, tblMission.Mission, tblFlight.Pilotage, tblFlight.Day, tblFlight.Night, tblFlight.IFR, tblFlight.FromID, tblFlight.ToID, tblFlight.Instruction, tblFlight.SinglePilotSE, tblFlight.SinglePilotME, tblFlight.Precision, tblFlight.[Non Precision], tblFlight.TakeOffDay, tblFlight.TakeOffNight, tblFlight.LandingDay, tblFlight.LandingNight, [Day]+[Night] AS Total, tblFlight.DepartureTime, tblFlight.ArrivalTime, tblTypeDesignator.Origin, tblFCLClass.FCLCat
FROM (tblFCLClass INNER JOIN tblTypeDesignator ON tblFCLClass.ID = tblTypeDesignator.FCLCat) INNER JOIN (tblNumber INNER JOIN (tblMission INNER JOIN (tblCopilot INNER JOIN tblFlight ON tblCopilot.CopilotID = tblFlight.CopilotID) ON tblMission.MissionID = tblFlight.MissionID) ON tblNumber.NumberID = tblFlight.NumberID) ON tblTypeDesignator.TypeID = tblFlight.TypeID;
tblFlight est la table qui contient le champ [IFR]

Merci pour vos conseils
Xav

PS: j'ai essayé datetostring(Cdate([IFR])) mais cela donne la même erreur.