[ACCESS-2019 ] Problème Date Jour et Mois inversé

Résolu/Fermé
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 - 3 mai 2022 à 13:14
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 - 5 mai 2022 à 08:15
Bonjour,

Je viens vers vous car je suis bloquer sur un problème depuis quelques temps.
J'ai un champ Date ou je choisis la date de production d'un Lot cela fonctionne sauf que quand je veux calculer le total par jour en Poids par rapport à la date enfaite la date que j'ai précédemment rentré le Mois et le Jour sont inversé.
Donc quand je rentre 08/04/2022 enfaite lui comprend 04/08/2022.


Dim strWhere As String
With Me.SF_PlanningLots.Form
strWhere = "[Debut] BETWEEN " & Format(Me.DateDebu, "\#mm\/dd\/yyyy\#") & " AND " & Format(Me.DateF, "\#mm\/dd\/yyyy\#")
.Filter = strWhere
.FilterOn = True
End With



If IsNull(Me.DateDebu) Or Len(Me.DateDebu & vbNullString) = 0 Then
Me.PLundi = Null
Else
Me.PLundi = Me.DateDebu
strCriteria = "([DateCmd] = #" & Me.PLundi & "#)"
Me.PL = Nz(DSum("[Poids]", "EnAttPlanification", strCriteria), 0)
End If
If IsNull(Me.DateDebu) Or Len(Me.DateDebu & vbNullString) = 0 Then
Me.PMardi = Null
Else
Me.PMardi = Me.DateDebu + 1
strCriteria = "([DateCmd] = #" & Me.PMardi & "#)"
Me.PM = Nz(DSum("[Poids]", "EnAttPlanification", strCriteria), 0)
End If
If IsNull(Me.DateDebu) Or Len(Me.DateDebu & vbNullString) = 0 Then
Me.PMercredi = Null
Else
Me.PMercredi = Me.DateDebu + 2
strCriteria = "([DateCmd] = #" & Me.PMercredi & "#)"
Me.PMM = Nz(DSum("[Poids]", "EnAttPlanification", strCriteria), 0)
End If
If IsNull(Me.DateDebu) Or Len(Me.DateDebu & vbNullString) = 0 Then
Me.PJeudi = Null
Else
Me.PJeudi = Me.DateDebu + 3
strCriteria = "([DateCmd] = #" & Me.PJeudi & "#)"
Me.PJ = Nz(DSum("[Poids]", "EnAttPlanification", strCriteria), 0)
End If
If IsNull(Me.DateDebu) Or Len(Me.DateDebu & vbNullString) = 0 Then
Me.PVendredi = Null
Else
Me.PVendredi = Me.DateDebu + 4
strCriteria = "([DateCmd] = #" & Me.PVendredi & "#)"
Me.PV = Nz(DSum("[Poids]", "EnAttPlanification", strCriteria), 0)
End If

C'est à peu près le même code dans les 2 autres modules (je n'ai mis que la partie qui je pense fait cela mais si besoin de tout pour mieux comprendre ou vous envoyer la BDD) dite moi

Configuration: Windows / Chrome 101.0.4951.54

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
3 mai 2022 à 16:50
Je pense qu'il faut changer les instructions telles que
strCriteria = "([DateCmd] = #" & Me.PJeudi & "#)"

en
strCriteria = "[DateCmd] = " & CStr(CLng(Me.PJeudi))


ainsi que celles comme
strWhere = "[Debut] BETWEEN " & Format(Me.DateDebu, "\#mm\/dd\/yyyy\#") & " AND " & Format(Me.DateF, "\#mm\/dd\/yyyy\#")

en
strWhere = "[Debut] BETWEEN " & CStr(CLng(Me.DateDebu)) & " AND " & CStr(CLng(Me.DateF))
1
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1
4 mai 2022 à 08:24
Re-bonjour
Un énorme Mercii ! Je vous avoue que je vais aller voir à quoi servent CStr et CLng de plus près car je ne les avais jamais vu auparavant mais en tout cas ça marche !
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023
4 mai 2022 à 09:37
L'idée, c'est de transformer les dates en nombres en VBA, de façon a éviter tous les soucis d'interpétation des formats de date par la base de données de Access.
Donc, par exemple, d'avoir pour
strWhere = "[Debut] BETWEEN 44562 AND 44593"

Le VBA tient plus compte du format de date de l'ordi, tandis que la base de données est moins prévisible.
clng() convertit la date en nombre long, et cstr() convertit le nombre en caractères.
Microsoft Office mémorise les moments comme des nombres, l'unité étant le jour et le nombre 1 correspondant au 1/1/1900.
1
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
5 mai 2022 à 08:15
D'accord merci beaucoup d'avoir pris le temps de m'expliquer !
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
3 mai 2022 à 14:12
bonjour,
Ton explication n'est pas très claire.
"je rentre", "lui comprend", bof.
Donne plutôt des faits précis à propos de ce qui ne s'affiche pas comme tu le souhaites.
Quel est le lien entre ton code et le souci?
Je me méfie énormément de ton code, surtout
strWhere = '...

Utiliser format dans ce contexte me semble la pire idée.

Que sont [Debut], Me.DateDebu et Me.DateF précisément?

Partager ta bdd est une bonne idée, et cela ne remplace pas une description factuelle du souci.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
3 mai 2022 à 14:14
Quand tu partages du code, précise le langage dans les balises de code (VBA est du Basic).
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Kyndred Messages postés 16 Date d'inscription mardi 3 mai 2022 Statut Membre Dernière intervention 30 janvier 2023 1
Modifié le 3 mai 2022 à 15:39
En effet je m'excuse de la vague explication que j'ai donnée, en gros dans un formulaire Précédent "Commande en cours " dans l'accueil je choisit le lot que je veux créer avec les commandes que je veux dedans...
Ensuite je vais dans le formulaire "Planning Lot" pour mettre la date, la semaine ... au Lot en double cliquant sur Semaine ou Date. Une fois cela fait je peux vous montrer l'origine du problème ! Qui est que le total/jour du Poids n'est pas très fonctionnel car il ne fonctionne pas pour certains car il inverse le mois et le jour j'ai l'impression car par exemple pour la date 08/04/2022 saisi le total/Jour apparait dans 04/08/2022 (le tableau en bas de planning lot) avec les totaux...
Une copie de ma base de données pour visualisé le problème si vous le souhaitez:
https://www.mediafire.com/file/o0vxsg075lk885o/CopieAEnvoyer.rar/file
0