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