Je voulais faire une petite fonction qui me retourne en passant en paramètre le numéro jours (Date.Now.DayOfWeek) et je veux atteindre un numéro jours qui existe dans mon base de donnée.
Ex: Ma numéro du jours est 2 et la prochaine est 0
Comment puisse-je afficher la date complet de ma prochaine journée.
Private Function ObtenirNumeroJours(ByVal pNumJours As Integer, ByVal pNumJoursPlannifier As Integer) As Integer
Dim NbjrRetour As Integer
If pNumJours < pNumJoursPlannifier Then
Dim diff As Integer = pNumJoursPlannifier - pNumJours
For i As Integer = 0 To diff
NbjrRetour = pNumJours + i
Next
Else
Dim diff As Integer = (7 - pNumJours) + pNumJoursPlannifier
For i As Integer = 0 To diff - 1
NbjrRetour = pNumJours + i
Next
End If
Parce que suppossant que mon numéro du jours est 3 et ma prochaine numero que je veux atteindre est 5. Donc je verifie si mon numero du jours est inferieur a 5 oui alors je soustrait le numero a atteindre avec mon numero du jour et la j increment pour aller jusqu a 5.
Et lorsque j arrive a 5 je sors de ma boucle parce que c mon but.
Et la j fais Date.AddDay(NbjrRetour )
Ah ?
Et quand sors-tu donc de ta boucle ? Je ne le vois pas autrement qu'à la fin, moi ... et donc lorsque diff est atteint... et donc ta boucle ne fait qu'ajouter diff au bout du compte (et est donc inutile !)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ton jour de référence c'est toujours "aujourd'hui" ou non?
Quand le jour cherché à le même numéro que le jour de référence, on reste sur la même semaine ou celle d'après?
Déjà si tu veux une date, alors il faut que ta fonction retourne une date et pas un int.
Ensuite, comme le dit Uc, ta boucle ne sert à rien.
Voici un code qui à l'air de marcher, (testé sur une semaine avec un jour de référence différent d'aujourd'hui)
Function TrouveDate(JourRef As Int32, JourRecherche As Int32) As DateTime
Dim ecart As Int32
Select Case Math.Sign(JourRecherche - JourRef)
Case -1 'le jour recherché vient avant le jour de référence dans la semaine, il sera donc la semaine suivante
ecart = 7 - JourRef + JourRecherche
Case 0 'le jour recherché est le même que le jour de référence
ecart = 7
Case 1 'le jour recherché vient aprés le jour de référence
ecart = JourRecherche - JourRef
End Select
Dim Aujourdhui As DateTime = DateTime.Now.Date 'on part d'aujourd'hui pour avoir la bonne semaine
Dim Dimanche As DateTime = Aujourdhui.AddDays(-1 * Aujourdhui.DayOfWeek) 'on cherche le dimanche précédent
Dim DateRef As DateTime = Dimanche.AddDays(JourRef) 'on arrive à la date de référence
Return DateRef.AddDays(ecart) 'on ajoute l'écart
End Function
Pour une dernier question lorsque ma fonction porte plusieur parametre et je veux tester si mes parametres sont different de vide avant d executer quel est la meilleur pratique pour valider mes parametres??
Bonsoir,
Il est demandé sur ce forum de ne poser QU'UNE question par discussion.
Hors...là... c'est une nouvelle question... tu devrais donc (après avoir mis en RESOLU celle-ci) ouvrir une nouvelle discussion.
Mais bon... faisons une petite exception.
Si tu veux vérifier que les paramètres de ta fonctions ne sont pas vides avant d'en lancer le code... un "simple" IF suffira.
Si tes paramètres sont de type STRING tu peux utiliser :
If (Not String.IsNullOrEmpty(Mavariable1) AND Not String.IsNullOrEmpty(Mavariable2)) Then
'....
'.. Je lance le code
else
' je ne lance pas le code
End if