Ga naar inhoud
  • 0

Datum opmaak verandert in variabele


AlbertUrk

Vraag

Als ik een variabele van een datumveld maak en vervolgens in een globaal tekstveld zet om deze laten in een mail te kunnen verzenden verandert de opmaak van

dd-mm-jj naar mm-dd-jj in de bijlage is al te zien dat het misgaat. De variabele kopieert het juist maar slaat het verkeerd op in de variabele. Is dit ergens te herstellen want dit kan nogal wat verwarring geven bij gebruikers.

Foto 16-02-2022 om 20.14.jpg

Link naar reactie

8 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Plak deze formule eens in de dataviewer (gegevensweergave):

Substitute (
  GetAsText ( Date ( 4 ; 3 ; 2222 ) ) ;
    [ "2222" ; "YYYY" ] ; [ "22" ; "YY" ] ;
    [ "04" ; "MM" ] ; [ "4" ; "M" ] ;
    [ "03" ; "DD" ] ; [ "3" ; "D" ] )

Dan zie je het opgeslagen datum-formaat van het bestand (in fm19.1+ heb je tegenwoordig de commando's Get ( FileLocaleElements ) en Get ( SystemLocaleElements ), die geven nog meer leuke informatie)

Aan de datum te zien is het opgeslagen  formaat van het bestand ANSI; mm/dd/yyyy ip het nederlandse dd-mm-yyyy. Een datum is in FM opgeslagen als een getal dat het aantal dagen vanaf 1-1-0001 voorstelt. Het systeemformaat van de computer op het moment dat het bestand voor de allereerste keer werd geopend (typisch bij de aanmaak of de eerste opening van een kloon) is opgeslagen in het bestand en bepaalt deze weergave.

Wil je of kan je de "locale" niet wijzigen dan kan je de datum als getal opvragen en die vervolgens omzetten naar tekst en de datum weergeven zoals Mars hieronder voorstelt.

[edit]Ik moest ineens wat anders gaan doen, dus kon ik mijn reactie vanochtend niet afmaken[/edit]

aangepast door menno
afmaken reactie
Link naar reactie
  • 0

Het issue is natuurlijk dat een datum-waarde geen tekst-waarde is. Dus wil je deze in een strikt bepaald formaat tonen moet je converteren.

Bijvoorbeeld:

Let ( 
[ x = datumwaarde
; trailingZero = true // trailing zero's toepassen ja/nee
; delimiter = "-" // elk denkbaar teken...
; d = day ( x)
; dd = If ( trailingZero; Right ( d + 100; 2 ); d )
; m = Month (x) 
; mm = If ( trailingZero; Right ( m + 100; 2 ); m )
; j = Year ( x )
]; 


dd & delimiter & mm & delimiter & j


)

 

Link naar reactie
  • 0
22 uren geleden, Marsau zei:

Het issue is natuurlijk dat een datum-waarde geen tekst-waarde is. Dus wil je deze in een strikt bepaald formaat tonen moet je converteren.

Bijvoorbeeld:

Let ( 
[ x = datumwaarde
; trailingZero = true // trailing zero's toepassen ja/nee
; delimiter = "-" // elk denkbaar teken...
; d = day ( x)
; dd = If ( trailingZero; Right ( d + 100; 2 ); d )
; m = Month (x) 
; mm = If ( trailingZero; Right ( m + 100; 2 ); m )
; j = Year ( x )
]; 


dd & delimiter & mm & delimiter & j


)

 

Dit werkt idd. Dank voor het delen 

Link naar reactie
  • 0
Op 17-2-2022 om 09:13, menno zei:

Dan zie je het opgeslagen datum-formaat van het bestand (in fm19.1+ heb je tegenwoordig de commando's Get ( FileLocaleElements ) en Get ( SystemLocaleElements ), die geven nog meer leuke informatie)

Het is idd mm/dd/yy en met de oplossing van marsau krijg ik netjes dd/mm/jj wel lastig dat je het zo ingewikkeld moet omzetten voor een nederlandse gebruiker. Maar goed het werkt.

Dank

Link naar reactie
  • 0

Als het alleen gaat om weergave in bijvoorbeeld een dialoog of om af te drukken op een rekening, dan is deze oplossing prima.

Wil je deze datum of een door de gebruiker aangepaste datum gaan gebruiken (vanuit een dialoog dus), dan zou ik in jouw geval overwegen de "locale" van je bestand te corrigeren. Voor je het weet wordt 6/2/22 anders geïnterpreteerd, nl als 2 Juni ipv 6 Februari.

Een ander probleem kan zijn dat je foutmeldingen krijgt bij de invoer, bijv. 18/2/2022 kunnen wij als mensen alleen maar interpreteren als 18 Februari. Als jouw bestand 2/18/2022 verwacht, dan krijg je een foutmelding. Je kan natuurlijk opgeven van dat "use system formats" moet worden gebruikt, maar als je datumformat mm/dd ipv dd/mm is dan krijg je met importeren/exporteren en api's snel problemen met wat nu de juiste inhoud is.

Voor getallen geldt precies hetzelfde als het decinaalscheidingsteken een punt is ipv een comma. Het kan vaak goed gaan, maar in sommige gevallen gaat het niet goed en dat wil je normaliter voorkomen.

Link naar reactie
  • 0
Op 17-2-2022 om 09:13, menno zei:

Wil je of kan je de "locale" niet wijzigen dan kan je de datum als getal opvragen en die vervolgens omzetten naar tekst en de datum weergeven zoals Mars hieronder voorstelt.

Menno, hoe zou ik de local kunnen wijzigen van het bestand. Ik kan daar zo niet over vinden?

Link naar reactie
  • 0
5 hours ago, AlbertUrk said:

Menno, hoe zou ik de local kunnen wijzigen van het bestand. Ik kan daar zo niet over vinden?

Maak een kloon (clone) van het bestand dat je wilt omzetten naar een andere "locale" (in beter Nederlands: landinstellingen) en open dat alleen als eerste op een Mac of PC met de gewenste landinstellingen. Het betreffende bestand is leeg en dus moet je nog even alle gegevens importeren uit je originele database.

Je zou dit eigenllijk met de FMDataMigerationTool moeten kunnen doen, maar dat is jammergenoeg niet mogelijk. Hopelijk dat Claris dat in een volgende versie van de FMDMT eindelijk eens mogelijk maakt.

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...