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
tblFlight est la table qui contient le champ [IFR]
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;
Merci pour vos conseils
Xav
PS: j'ai essayé datetostring(Cdate([IFR])) mais cela donne la même erreur.
Partager