Jump to content
  • 0

nummer formaten bij importeren


djcomidi

Question

Een klant waarvoor we een applicatie maken is gevestigd in Nederland/België en Zuid-Afrika.

Zoals jullie weten hebben deze landen een verschillend formaat van nummers. ( 1.000,23 vs 1,000.23 )

Externe software genereert een xml die we moeten kunnen importeren.

In Nederland/België ziet zo een minimale xml er als volgt uit:

25,13

12.46

In Zuid-Afrika ziet er een zelfde xml uit als volgt:

25.13

12.46

Zowel data1 als data2 zijn decimale-getallen en hebben nooit een waarde groter dan 100.

data1 heeft het nummer-formaat van het land, data2 heeft altijd een decimale punt als komma.

Het importeren is niet het probleem, wel dat data1 of data2 als tekst aanzien wordt.

Is er een manier waarop ik er voor kan zorgen dat zowel data1 als data2 uiteindelijk in filemaker als nummer worden opgeslagen ?

 

Alvast bedankt voor de reacties

(wat een lange eerse post...)

Link to comment

7 answers to this question

Recommended Posts

  • 0

@Felix

Ik gebruik inderdaad een xslt om de data in FM te krijgen.

Daarin hebben zowel data1 als data2 TYPE="NUMBER".

In FM zijn veldData1 en veldData2 ook nummers.

 

Nu wil ik deze nummers weergeven op een layout, afgerond op bvb 1 cijfer na de komma.

Bij data1 lukt dit via de veld-eigenschappen. (want data1 in de xml heeft het lokale decimaal teken, dus FM aanziet dit als nummer)

Bij data2 lukt dit niet. (want data2 in de xml gebruikt enkel het decimale punt en wordt (in mijn geval) dus aanzien als tekst)

 

Ik was al aan het denken om na het importeren een Substitute/Vervang te doen,

( om de leesbaarheid te verhogen gebruik ik [punt] en [komma] in plaats van de tekens zelf )

AlsNummer ( Vervang ( AlsTekst ( data2 ); "[punt]"; "[komma]" ) )

Maar dit geeft dan problemen in Zuid-Afrika, want daar is een komma niet het decimale teken.

 

Uiteraard had ik graag dat data2 ook kan opgeslagen worden als een FM-nummer (ongeacht het land waarin de import gebeurd)

Iemand suggesties ?

 

( ik gebruik de engelse versie van filemaker, dus ik weet niet precies hoe de overeenkomstige nederlandse functies heten )

Link to comment
  • 0

Ik zou het in je xslt oplossen:

Je geeft aan dat de getallen nooit groter zijn dan 100 en dat je de gegevens importeert in velden in filemaker met het gewenste formaat, dwz nummers komen in nummervelden terecht.

 

Met die voorwaarden in het achterhoofd kan je alle nummers door een simpel filtertje in xslt halen:

translate(getal,'0123456789,.','0123456789,,') voor import in nederlands formaat en

translate(getal,'0123456789,.','0123456789..') voor import in zuid-afrikaans formaat filemakerbestanden.

 

Dan kan er in je xslt uitzien als:

Het is denk ik wel handiger om de strings als '0123456789,,' in variabelen te zetten, zodat het verschil tussen je nederlandse en zuidafrikaanse stylesheet slechts de inhoud van die ene variabele is.

Link to comment
  • 0

@menno

Bedankt voor je suggestie.

Ik heb helaas niet zoveel kennis van xslt, dus ik hou het liever bij een FileMaker oplossing.

 

@Felix

Die functie is inderdaad iets waar ik naar op zoek was.

Er staat altijd een decimale punt in die data, nooit een duizend-teken, het aantal cijfers na de komma is variabel.

Ik heb van jouw versie dus dit gemaakt:

If ( GetAsNumber ( data & "0" ) > data; GetAsNumber ( Substitute ( data; "."; "," ) ); data )

Als data = 23.45

In RSA: 23.450 = 23.45 => 23.45

In BE/NL: (de punt wordt bij mij genegeerd) 23450 > 2345 => 23,45

 

Nu kan ik op de layout wel afronden

en hoef ik minder aanpassingen te doen om de data in een grafiek te krijgen.

Van harte bedankt!

Link to comment
  • 0

Een kleine update.

 

Aangezien het om meer dan 1 veld gaat, heb ik het volgende gedaan:

Import [...]
If [ GetAsNumber ( "12.340" ) > GetAsNumber ( "12.34" ) ]
   # als we hier terecht komen, dan zijn we in een land dat een decimale komma gebruikt
   Set Field [ data1; Value:GetAsNumber ( Substitute ( data1; "."; "," ) ) ]
   ...
   Set Field [ dataN; Value:GetAsNumber ( Substitute ( dataN; "."; "," ) ) ]
End If

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...