Jump to content
  • 0

Datum opmaak verandert in variabele


AlbertUrk

Question

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 to comment

8 answers to this question

Recommended Posts

  • 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]

Edited by menno
afmaken reactie
Link to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...