Validere desimaler i 'Legg-til' liste (eller ved summering)

Jeg har et skjema der utlegg, ofte et flertall, skal registreres. Det er et ønske om å alltid ha to desimaler i beløpene, men Legg-til liste ser ut til å ødelegge for dette.

Det er forsøk med felt-type numerisk og tekst for inn-feltet og sum-felt, samt verdien 2 i desimaler under avansert.
Valideringsskript med regex for å hindre inntasting av verdier uten to desimaler blir det uansett rundet opp når det summeres. Valideringsskriptet ser også ut til å krasje litt med felt når felt-type numerisk er valgt, eksempel:
desimal

Finnes det en metode for å formatere til to desimaler uansett, litt slik som tekstfelt-type bankkontonummer gjør med verdien som mates inn, uten at jeg mister nytten som Legg-til liste tilbyr meg?

For ordens skyld er dette valideringsskriptet jeg bruker. Tar kun punktum enn så lenge.
var belop=Belop6;

if(!(belop=~"(^(0(?!\.00)|[1-9]\d{0,6})\.\d{2}$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)")){return "Bruk 2 desimaler"}
else {return true}
1 Like

Hei!

Jeg har knotet en del med dette, men har kommet fram til en løsning som fungerer tålelig bra, etter det jeg kan se. Men helt skuddsikkert er det nok ikke.

Premisset er at feltet scriptet ligger på, er et tekstfelt, og det er jo litt dumt med tanke på at det som jo faktisk skrives inn her, er tall.

Dessuten har jeg løst det slik at dersom noe skulle skrive inn mer enn to desimaler, så vises bare teksten “Må være to desimaler.” (Det er altså ikke noen avrunding her.)

For å få dette til å fungere på summeringsfeltet for “legg til”-lista, måtte jeg ha et felt (som jo gjerne kan være skjult) med den vanlige summeringsformelen (=sum(beløpsfeltet_i_nedtrekkslista)). Og da må referansen Tall_med_to_desimaler i scriptet under, endres slik at den peker på summeringsfeltet, og ikke på seg selv.

=if(length(Tall_med_to_desimaler)>0)

{

var heleTallet = Tall_med_to_desimaler;
var formatHeleTallet = (Tall_med_to_desimaler =~ "(.+),(.+)");
var antallDesimaler = length(formatHeleTallet[2]);
var talletMedToDesimaler = 0;

if
	((antallDesimaler > -1) && (antallDesimaler < 3) && (heleTallet != "Må være to desimaler."))
	
	{
	
	if
	
		(antallDesimaler == 0)
		{talletMedToDesimaler = "" + heleTallet + ",00"};
		
	else if

		(antallDesimaler == 1)
		{talletMedToDesimaler = "" + heleTallet + "0"};
		
	else if

		(antallDesimaler == 2)
		{talletMedToDesimaler = "" + heleTallet + ""};
	
	return talletMedToDesimaler;
	
	};

else if
	(antallDesimaler > 2)
	
	{return "Må være to desimaler."};

};

Vennlig hilsen
Narve Strand
Konsulent Interact
ACOS