Innhold
Innholdsliste 🔎︎

# Data

Fanen Data styrer skjemaegenskapene som refererer til databasen som er lenket til skjemaet.

Velger datakilden som skjemaet er basert på, eller velger om brukeren kan redigere dataene. Bortsett fra funksjoner for sortering og filtrering, finner du også alle egenskapene som er nødvendig for å lage et underskjema.

For å bruke denne funksjonen …

Åpne sprettoppmenyen til et valgt skjemaelement, og velg fanen Skjema → Data

Åpne en av verktøylinjene Kontrollelementerfor skjemaer eller Skjemautforming, trykk på Kontrollelement og velg fanen Data

## Analyser SQL-kommando

Velger om SQL-uttrykket skal analyseres av LibreOffice. Hvis du velger «Ja», kan du trykke på …-knappen ved listeboksen Innhold. Da åpnes et vindu der du grafisk kan lage en databasespørring. Når du lukker dette vinduet, blir SQL-uttrykket for spørringen du har laget, satt inn i listeboksen Innhold.

## Datakilde

Angi hvilken datakilde skjemaet skal vise til. Hvis du trykker …-knappen, åpner du dialogvinduet Åpne, der du kan velge en datakilde.

## Filter

Skriv inn vilkårene for filtrering av dataene i skjemaet. Filterspesifikasjonen følger SQL-regler uten bruk av WHERE-uttrykket. Hvis du for eksempel vil vise alle poster med fornavnet «Ivar», skriver du «Fornavn = 'Ivar'» i datafeltet. Du kan også sette sammen flere vilkår: «Fornavn = 'Ivar' OR Fornavn = 'Mikkel'». Da vises alle poster som passer til ett av disse vilkårene.

Filterfunksjonen er tilgjengelig i brukermodus via knappene Autofilter og Standardfilter på verktøylinja Skjemanavigasjon.

## Innhold

Angi innholdet som skal brukes i skjemaet. Innholdet kan være en eksisterende tabell eller spørring (som er laget i databasen tidligere), eller noe som er angitt med en SQL-setning. Før du setter inn innholdet må du oppgi nøyaktig type i Innholdstype.

Hvis du har valgt enten «Tabell» eller «Spørring» som Innholdstype, viser denne lista alle tabellene og spørringene som er satt opp i den valgte databasen.

## Innholdstype

Angi om datakilden skal være en databasetabell eller en spørring, eller om skjemaet skal bli laget ut fra en SQL-setning.

Hvis du velger «Tabell» eller «Spørring», vil skjemaet vise til tabellen eller spørringen du har valgt under Innhold. Hvis du vil lage en ny spørring eller et underskjema, må du velge «SQL-kommando». Du kan da skrive inn uttrykket for SQL-spørringen eller underskjemaet direkte i Listeinnhold på fanen «Data» i egenskapene til kontrollelementet.

## Legg bare til data

Angi om skjemaet bare skal tillate at nye data legges til («Ja») eller om det også skal tillate andre egenskaper («Nei»).

Hvis Legg bare til data er sett til «Ja», er det ikke mulig å endre eller slette data.

## Lenk sammen hovedfeltene

Hvis du lager et underskjema, må du skrive inn hvilke datafelt i hovedskjemaet som er ansvarlig for synkroniseringa mellom hovedskjemaet og underskjemaet. For å skrive inn flere verdier må du trykke «Shift + Enter» etter hver linje.

Underskjemaet er basert på en SQL-spørring, nærmere bestemt en spørring av typen parameterspørring. Hvis et feltnavn skrives inn i Lenk sammen hovedfeltene, blir dataene fra feltet lagt inn i en variabel som du må skrive inn i Lenk sammen slavefeltene. I et SQL-uttrykk av riktig type blir denne variabelen sammenliknet med tabelldataene som underskjemaet viser til. Du kan også skrive inn kolonnenavnet i Lenk sammen hovedfeltene.

Studer det følgende eksemplet:

Databasetabellen som skjemaet er basert på er en kundedatabase («Kunde») der hver kunde har et unikt nummer i datafeltet «KundeID». Ordrene til kundene ligger i en annen tabell. Du vil nå se ordrene til hver kunde etter å ha skrevet dem inn i skjemaet. Til dette kan du bruke et underskjema. Under Lenk sammen hovedfeltene skriv du inn det datafeltet fra kundedatabasen som identifiserer kunden, altså «KundeID». Under Lenk sammen slavefeltene skriv du inn navnet på en variabel som skal motta data fra «KundeID», for eksempel «x».

Underskjemaet bør vise data fra ordretabellen («Ordre») for hver kunde-ID (KundeID → x). Dette er bare mulig dersom hver ordre er unikt tilordna én kunde i ordretabellen. Du kan også bruke et annet felt kalt «KundeID», men for å hindre at det blir forvekslet med det samme feltet fra hovedskjemaet, kaller vi det «Kundenummer».

Nå sammenlikner du Kundenummer i «Ordre»-tabellen med KundeID fra «Kunder»-tabellen. Det kan du for eksempel gjøre ved hjelp av variabelen x og det følgende SQL-uttrykket:

SELECT * FROM Ordre WHERE Kundenummer =: x (Dersom du vil at underskjemaet skal vise alle datene fra ordretabellen.)

eller:

SELECT Element FROM Ordre WHERE Kundenummer =: x (Dersom du vil at underskjemaet fra ordretabellen bare skal vise datene som ligger i feltet «Element».)

SQL-uttrykket kan enten skrives inn i feltet Datakilde eller lages som en parameterspørring du kan bruke til å lage underskjemaet.

## Lenk sammen slavefeltene

Hvis du lager et underskjema må du angi variabelen som mulige verdier fra hovedskjemaet skal lagres i. Dersom et underskjema er basert på en spørring, skal du skrive inn variabelen du oppga i spørringen. Hvis du vil opprette et skjema ved hjelp av en SQL-setning skrivet inn i feltet Datakilde, skriver du inn variabelen du brukte i setningen. Du kan velge variabelnavn fritt. Trykk «Shift + Enter» dersom du vil skrive inn flere verdier.

Dersom du for eksempel har valgt databasefeltet «KundeID» som foreldrefelt under Lenk sammen hovedfeltene, kan du velge navnet på variabelen der verdiene fra «KundeID» skal lagres under Lenk sammen slavefeltene. Dersom du nå bruker denne variabelen i et SQL-uttrykk i feltet Datakilde, blir de relevante verdiene vist i underskjemaet.

## Navigasjonslinje

Angi om navigeringsfunksjonene på den nedre skjemalinja skal kunne brukes.

Alternativet «Overordnet skjema» brukes til delskjemaer. Hvis du velger dette alternativet for et delskjema, kan du bruke postene i hovedskjemaet til å navigere hvis markøren står i delskjemaet. Et delskjema er lenket til det overordnede skjemaet i et 1:1-forhold, slik at navigering alltid skjer i det overordnede skjemaet.

## Sorter

Angi vilkårene for sortering av dataene i skjemaet. Sorteringa følger SQL-regler, uten å bruke «ORDER BY»-vilkåret. Hvis du for eksempel vil at alle poster i en database skal sorteres i et felt i stiende rekkefølge og i et annet felt i synkende rekkefølge, skriver du inn «Fornavn ASC, Navn DESC» (dersom navnene på datafeltene er navn og fornavn).

Noen av knappene på verktøylinja Skjemanavigasjon kan brukes til sortering i brukermodus: Sorter stigende, Sorter synkende, Sorter.

## Syklus

Velg hvordan tabulatortasten skal kunne brukes til navigasjon. Du kan flytte framover i skjemaet ved hjelp av tabulatortasten. Hvis du samtidig holder nede «Shift», går du bakover. Om du når siste (eller første) felt og trykker tabulatortasten igjen, kan ulike ting skje. Du har disse alternativene vedrørende tastekontrollelementet:

Alternativ | Betydning
Standard | Denne innstillingen lager automatisk en syklus som følger en databaselenke: Hvis skjemaet inneholder en databaselenke, vil tabulatortasten som standard skifte til neste eller forrige post når du går ut av det siste feltet (se «Alle poster»). Hvis skjemaet ikke har noen databaselenke, blir det neste eller forrige skjemaet vist (se «Denne siden»).
Alle poster | Dette alternativet gjelder bare for databaseskjemaer, og brukes til å navigere gjennom alle postene. Hvis du går ut av det siste feltet i et skjema med tabulatortasten, endres den gjeldende posten.
Denne posten | Dette alternativet gjelder bare for databaseskjemaer, og brukes til å navigere innenfor den gjeldende posten. Hvis du går ut av det siste feltet i et skjema med tabulatortasten, endres den gjeldende posten.
Denne siden | Når du går ut av det siste feltet i et skjema, går markøren til det første feltet i det neste skjemaet. Dette alternativet er særlig relevant for HTML-skjemaer, fordi dette er standard virkemåte i HTML-skjemaer.

## Tillat endringer

Velg om dataene skal kunne endres.

## Tillat slettinger

Velg om dataene skal kunne slettes.

## Tillat tillegg

Velg om dataene skal kunne legges til.

## Hva er et underskjema?

Skjemaer blir lagd ut fra databasetabeller eller databasespørringer. De viser informasjonen på en oversiktlig måte, og du kan skrive inn eller endre data i skjemaet.

Hvis du trenger et skjema som både kan vise til dataene i en tabell eller en spørring og i tillegg vise data fra en annen tabell, bør du lage et underskjema. Dette underskjemaet kan for eksempel være et tekstfelt som viser data fra en annen databasetabell.

Et underskjema er en tilleggskomponent i hovedskjemaet. Av og til blir hovedskjemaet kalt «overordnet skjema» eller «foreldreskjema». Du får bruk for underskjemaer så snart du vil ha tilgang til mer enn én tabell i et skjema. Hver ekstra tabell krever et eget underskjema.

Når du har laget et skjema, kan du gjøre det om til et underskjema. Du kan gjøre dette ved å gå til utformingsmodus og åpne Skjemastruktur. Der drar du et skjema (som skal bli et underskjema) over til et annet skjema (som skal bli hovedskjemaet).

De som bruker dokumentet, kan ikke se at skjemaet har underskjemaer. Det eneste brukeren ser, er et dokument der data kan skrives inn eller eksisterende data vises.

Velg hovedfeltet som skal lenkes fra datafeltene i hovedskjemaet. I underskjemaet kan du sette slavefeltet som et felt som skal tilpasses innholdet i hovedfeltet.

Når brukeren blar gjennom dataene, viser skjemaet alltid den gjeldende dataposten. Dersom skjemaet inneholder underskjema, blir innholdet i de vist etter en kort forsinkelse på rundt 200 ms. Denne forsinkelsen gjør at du raskt kan bla gjennom datapostene i hovedskjemaet. Så lenge du blar videre til den neste posten innenfor tidsgrensen, slipper systemet å hente og vise fram data fra underskjemaet.