Bygge tekststreng for Gbnr

Er det noen som har laget noe smartere måte enn dette, se koden under, for å bygge en streng av gårds-, bruks-, feste- og seksjonsnummer? I journalposttittel eller klassering så skal det ha formatet gnr/bnr/fnr så sant alle feltene har verdi. Dersom de ikke har verdi skal de ikke med og da skal det feks bare være gnr/bnr.

=var gbnr;

if(Gbnr.Gnr > 0)
{ gbnr = Gbnr.Gnr;}
else{ gbnr = gbnr;};

if(Gbnr.Bnr > 0)
{ gbnr += “/”+ Gbnr.Bnr;}
else{gbnr = gbnr;};

if(Fsnr.Fnr > 0)
{ gbnr += “/”+ Fsnr.Fnr;}
else{ gbnr = gbnr;};

if(Fsnr.Snr > 0)
{ gbnr += “/”+ Fsnr.Snr; };
else { gbnr = gbnr;};

return gbnr;

Så lenge det fungerer så er det vel smart nok, men det kan vel kanskje bli litt trøbbel her hvis noen prøver å endre på noe etter de har fylt ut første gangen tror jeg.
Jeg tror du bør først sette var gbnr="";

Du kan egentlig også fjerne else-linjene dine, da du egentlig ikke gjør noe nytt i de tilfellene.
Hvis du er ute etter at tallet 0 aldri kan fylles inn i de fire feltene, så er løsningen ok, men hvis tallet 0 skal være et gyldig tall må du heller sjekke på lengden av tallene, eller >=0.

I tillegg vil jo nå “/”-tegnet bli stående igjen fremst hvis noen av de første feltene ikke fylles ut i det hele tatt. Skal du ta høyde for det så må du gjøre noen ekstra sjekker (helt sikkert andre måter enn den jeg la med her, men tror kanskje den fungerer, se Alt. 3).

Alt. 1. (med mulighet til å skrive inn tallet 0, se bilde med Resultat1):

var gbnr = "";

if( length(Gbnr.Gnr) > 0)
{ gbnr = Gbnr.Gnr;};

if( length(Gbnr.Bnr) > 0)
{ gbnr += "/" + Gbnr.Bnr;};

if( length(Fsnr.Fnr) > 0)
{ gbnr += "/"+ Fsnr.Fnr;};

if( length(Fsnr.Snr) > 0)
{ gbnr += "/"+ Fsnr.Snr; };

return gbnr;

Alt. 2: (din kode modifisert til å sette gbnr = “” og fjerne else, , se bilde med Resultat2)

var gbnr="";

if(Gbnr.Gnr > 0)
{ gbnr = Gbnr.Gnr;};

if(Gbnr.Bnr > 0)
{ gbnr += "/"+ Gbnr.Bnr;};

if(Fsnr.Fnr > 0)
{ gbnr += "/"+ Fsnr.Fnr;};

if(Fsnr.Snr > 0)
{ gbnr += "/"+ Fsnr.Snr; };

return gbnr;

Alt. 3 (prøver å ta høyde for at noen av de første feltene kan være blanke)

var gbnr = "";

if( length(Gbnr.Gnr) > 0)
{ gbnr = Gbnr.Gnr; };

if( length(Gbnr.Bnr) > 0 )
{ 
	if(length(gbnr) > 0)
	{
		gbnr += "/" + Gbnr.Bnr;
	}
	else
	{
		gbnr = Gbnr.Bnr;
	}
};

if( length(Fsnr.Fnr) > 0)
{ 
	if(length(gbnr) > 0)
	{
		gbnr += "/"+ Fsnr.Fnr;
	}
	else
	{
		gbnr = Fsnr.Fnr;
	}
};

if( length(Fsnr.Snr) > 0)
{ 
	if(length(gbnr) > 0)
	{
		gbnr += "/"+ Fsnr.Snr; 
	}
	else
	{
		gbnr = Fsnr.Snr; 
	}
};

return gbnr;

Da ser det slik ut (Resultat 3).

Skal du ha med “/”-tegnet uansett om det er blankt eller ikke, for å skjønne hvilke tall som er fylt ut og ikke så må du ta høyde for det også.
F.eks.
“//333/”
eller
“1//333/4444”

Takk for fyldig svar, men problemet med length, brukte det først, er at noen av feltene fikk NULL og da blir det feil med length:-)
Kan kanskje heller sette feltene til numerisk så slipper jeg kanskje det problemet.
Stringen skal ikke ha / hvis feltet er blankt:-)
De første kan ikke være blanke for det er påkrevd felt og alle har gnr og bnr:-)

Og tak for at du påpekte var gbnr = “”; for den hadde jeg oversett:-)

1 Like