Avlevering av informasjon fra en legg-til liste

Det er mange som spør om dette, så da tenkte jeg det ville være fint å ha en artikkel om hvordan legg-til lister fungerer, og hva som må gjøres for å få avlevert informasjon fra dette til de forskjellige avleveringsmetodene som arkiv, Excel, osv.

I en vanlig gruppe fungerer et tekstfelt som en enkelt verdi. På grunn av dette vil det ikke være noe problem å avlevere denne verdien til et felt i arkiv eller Excel.

I en legg-til liste vil et tekstfelt fungere som en liste - eller et array som det heter på fagspråket. Hvis du leser innholdet i denne listen vil den bestå av flere verdier, litt som en kolonne i Excel. Hvis du peker på tekstfeltet fra et annet tekstfelt som ligger utenfor legg-til listen vil du feks. få verdien “array(5)” som betyr at tekstfeltet inneholder 5 verdier i en liste. For å hente ut en enkelt verdi fra denne listen må vi fortelle hvilken plassering i variabellisten vi ønsker. Altså må vi skrive “variabelnavn[0]” for å hente ut den første verdien, og så øke tallet mellom brakettene for hver neste verdi vi ønsker å hente ut. Dette kaller vi indeksering.

Den største utfordringen med en legg-til liste er at vi ikke på forhånd kan vite hvor mange elementer som vil bli lagt til i listen. På grunn av dette vil det ikke være lett å avgjøre hvor mange verdier vi skal indeksere til sine respektive tekstfelt for å så mappe disse til avlevering. Forventer man 2-3 verdier vil det være overkommelig, men hva om noen legger til flere. Forventer man 10-20 verdier vil det bli mye jobb å indeksere. Da kan vi løse dette ved å scripe alt i en felles tekststreng som så kan avleveres til et enkelt felt i interact. Da kan vi i scriptet selv avgjøre hvilke verdier vi vil ha i den rekkefølgen vi ønsker - og liste disse ut slik vi vil ha det. Jeg har laget et eksempelskjema som ligger i delingstjenesten som viser dette.

Legg-til listen ser slik ut:
image

Scriptet mitt ser slik ut:
var Liste = Registrer_deltaker;
if (length(Liste ) > 0)
{
var streng = Liste[0]["Fornavn"]+" "+Liste[0]["Etternavn"] + " (" + Liste[0]["Fodselsdato"] + ")";
for (var indeks=1; length(Liste )>indeks;indeks++) { streng = streng + ", " + Liste[indeks]["Fornavn"] + " "+Liste[indeks]["Etternavn"] + " (" + Liste[indeks]["Fodselsdato"] + ")";}
return streng;
}
else {return "";}

Kort fortalt bygger jeg opp strenger ut fra de individuelle verdiene i tekstfeltene. Her velger jeg å ha Fornavn + Etternavn + (Fødselsdato). Dersom det er fler enn en verdi i listen vil jeg sette inn komma for å skille disse. Da bruker jeg en for-løkke for å indeksere resten av verdiene. Hvis listen er tom vil jeg vise en tom streng.

Dette eksemplet krever at du kjenner variabelnavnene til feltene i listen. Disse må legges i en brakett etter indeksen. Hvis du tester på egenhånd og ser at du mangler en eller flere verdier, må du sjekke variabelnavnet. Ofte er denne forskjellig fra ledeteksten til elementet.

4 Likes

Flott @Helge! Veldig nyttig for vår del.

Et spørsmål:
Hvis det i Legg-til-listen velges samme verdi flere ganger, hvordan kan vi scripte det til at vi får avleveringen av den verdien kun 1 gang?

Eksempel:
Det registreres kryssing av fylkesveg 17 første gang. og så registreres det nærføring av fylkesveg 17 andre gang. Hvordan får vi ut Fv. 17 kun 1 gang?

var Liste = Gjennomforing._B__Registrering_av_arbe;
if (length(Liste ) > 0) {

var vegliste = "FV"+Liste[0]["Fylkesveg"];
	for (var indeks=1; length(Liste )>indeks;indeks++) {
		var veg = "FV" + Liste[indeks]["Fylkesveg"];
		vegliste = vegliste + ", " + veg;
			
	}
return vegliste;																		

} else {
return “”;
}

Supert, Helge! Fikk det til! :slight_smile:

1 Like

Er det mulig å skille verdiene med linjeskift istedenfor komma?

1 Like