Indhold
Indholdsfortegnelse 🔎︎

# Data

Fanebladet Data angiver de formularegenskaber, som referer til den database, der er kædet sammen med formularen.

Bestemmer den datakilde, som formularen er baseret på, eller angiver om data kan redigeres af brugeren. Bortset fra funktionerne sorter og filtrer, kan du også finde alle de nødvendige egenskaber til at oprette en underformular.

For at tilgå denne kommando...

Åbn et valgt formularelements kontekstmenu - >vælgFormularegenskaber - (fanebladet) Data.

Åbn værktøjslinjen Formulardesign, klik på ikonet Formularegenskaber - (fanebladet) Data.

## Analyser SQL-kommando

Angiver, om SQL-udtrykket skal analyseres af LibreOfficeDev. Hvis indstillet til Ja, kan du klikke på knappen … ved siden af listefeltet Indhold. Det åbner et vindue, hvor du grafisk kan oprette en databaseforespørgsel. Når du lukket det vindue, vil den oprettede forespørgsels SQL-udtryk blive indsat i listefeltet Indhold.

## Cyklus

Bestemmer, hvordan navigationen skal gøres med tabulator-tasten. Med tabulator-tasten kan du bevæge dig fremad i formularen. Hvis du samtidig trykker på Skift-tasten, går navigationen i den modsatte retning. Hvis du når det sidste (eller første) felt og trykker på Tabulator-tasten igen, kan det have forskellige virkninger. Definer tastaturkontrollen med følgende indstillinger:

Mulighed | Betydning
--- | ---
Standard | Indstillingen angiver automatisk en cyklus som følger en eksisterende databasekæde: Hvis formularen indeholder en databasekæde, vil tabulatortasten, som standard, initiere et skift til næste eller foregående datapost ved udgang fra det sidste felt (se Alle Dataposter). Hvis der ikke er nogen databasekæde vil næste/forrige formular vises (se Aktuel Side).
Alle dataposter | Denne indstilling gælder kun for databaseformularer og bruges til at navigere gennem alle dataposter. Hvis du bruger tabulatortasten til at forlade det sidste felt i en formular, ændres den aktuelle datapost.
Aktiv datapost | Denne indstilling gælder kun for databaseformularer og bruges til at navigere indenfor den aktuelle datapost. Hvis du bruger tabulatortasten til at forlade det sidste felt i en formular, ændres den aktuelle datapost.
Aktuelle side | Når det sidste felt i en formular forlades, springer markøren til første felt i den næste formular. Det er standard for HTML-formularer. Derfor er denne indstilling specielt relevant for HTML-formularer.

## Datakilde

Definerer datakilden, som formularen bør referere til. Hvis du klikker på knappen ..., kalder du dialogen Åbn, hvor du kan vælge en datakilde.

## Filter

Indtast de krævede betingelser for at filtrere formularens data. Filterspecifikationerne følger SQL-reglerne uden brug af sætningen WHERE. Hvis du for eksempel vil vise alle dataposter med fornavnet "Mikkel", skriver du i datafeltet: Fornavn = 'Mikkel'. Du kan også kombinere betingelser: Fornavn = 'Mikkel' OR Fornavn = 'Peter'. Alle dataposter, der matcher det ene af disse to betingelser bliver vist.

Filterfunktionen er tilgængelig i brugertilstand gennem ikonerne Autofilter og Standardfilter på værktøjslinjen Formularnavigation.

## Indhold

Bestemmer det indhold, der skal bruges i formularen. Indholdet kan være en eksisterende tabel eller en forespørgsel (oprettet tidligere i databasen), eller kan være defineret af et SQL-udtryk. Før du indtaster et indhold, skal du definere den præcise type i Indholdstype.

Hvis du har valgt enten "Tabel" eller "Forespørgsel" i Indholdstype, vil feltet opremse alle tabeller og forespørgsler, der er konfigureret i den valgte database.

## Indholdstype

Angiver om datakilden skal være en eksisterende databasetabel eller -forespørgsel, eller om formularen skal genereres baseret på en SQL-sætning.

Hvis du vælger "Tabel" eller "Forespørgsel", vil formularen henvise til tabellen eller forespørgslen, du angiver under Indhold. Hvis du vil oprette en ny forespørgsel eller en underformular, så er du nødt til at vælge indstillingen "SQL". Du kan derefter indtaste sætningen til SQL-forespørgselen eller underformularen direkte i feltet Listeindhold på fanebladet Data i kontrolelementets egenskaber.

## Navigationslinje

Angiver, om navigationsfunktionerne i den nederste formularlinje kan bruges.

Indstillingen "Forældreformular" bruges til underformularer. Hvis du vælger denne indstilling for en underformular, kan du navigere ved at bruge dataposterne på hovedformularen, hvis markøren er placeret i underformularen. En underformular er kædet til hovedformularen med en 1:1 relation, så navigation bliver altid udført i hovedformularen.

## Sammenkæd overordnede felter

Hvis du opretter en underformular, indtaster du det datafelt i den overordnede formular, der er ansvarlig for synkroniseringen mellen overordnet og underordnet formular. For at indtaste flere værdier trykker du på Skift + Enter efter hver input-linje.

Underformularen er baseret på SQL-forespørgsel; mere specifikt på en Parameter-forespørgsel. Hvis der indsættes et feltnavn i feltet Link masterfelter, læses de data, der er indeholdt i det felt i hovedformularen, til en variabel, som du skal skrive i Link slavefelter. I en tilsvarende SQL-erklæring sammenlignes denne variabel med de tabeldata, som underformularen referer til. Alternativt kan du skrive kolonnenavnet i feltet Link masterfelter.

Betragt det følgende eksempel:

Databasetabellen som formularen er baseret på, er, for eksempel en kundedatabase ("Kunde"), hvor alle kunder er tildelt en unikt tal i et datafelt kaldt "Kunde_ID". En kundes ordrer bliver vedligeholdt i en anden databasetabel. Du vil nu se hver kundes ordrer efter at have indtastet dem i formularen. For at gøre dette bør du oprette en underformular. Under Kæd overordnede felter skal du indtaste datafeltet fra kundedatabasen som klart identificerer kunden (Kunde_ID). Under Kæd underordnede felter skal du indtaste navnet på en variabel, som modtager data fra feltet Kunde_ID, for eksempel x.

Underformularen skal vise de tilknyttede data fra ordretabellen ("Ordrer") for hver kunde ID (Kunde_ID -> x). Dette er kun muligt, hvis hver ordre er entydigt knyttet til én kunde i ordretabellen. Alternativt kan du bruge et andet felt kaldt Kunde_ID. For at undgå at dette felt forveksles med samme felt fra hovedformularen, kaldes feltet Kunde_Nummer.

Sammenlign nu Kunde_Nummer i tabellen "Ordrer" med Kunde_ID fra tabellen "Kunde", hvilket for eksempel kan lade sig gøre ved at bruge variablen x med følgende SQL-sætning:

SELECT * FROM Ordrer WHERE Kunde_Nummer =: x (hvis du vil have underformularen til at vise alle data fra ordretabellen)

eller:

SELECT Element FROM Ordrer WHERE Kunde_Nummer =: x (hvis du vil have underformularen fra ordretabellen til kun at vise de data, der er indeholdt i feltet "Element")

SQL-sætningen kan enten indtastes i feltet Datakilde, eller du kan oprette en passende parameter-forespørgsel, som kan bruges til at oprette underformularen.

## Sammenkæd underordnede felter

Hvis du opretter en underformular, indtaster du de variabler, hvor mulige værdier fra det overordnede formularfelt kan være lagret. Hvis en underformular er baseret på en forespørgsel, indtaster du den variabel, du definerede i forespørgslen. Hvis du oprettede en formular med et SQL-udtryk indtastet i feltet Datakilde, indtaster du den variabel, du brugte i udtrykket. Du kan indtaste ethvert variabelnavn. Hvis du vil indtaste flere værdier, trykker du på Skift + Enter.

Hvis du for eksempel specificerede Kunde_ID'et databasefeltet som en forældrefelt under Kæd overordnede felter, så kan du angive under Kæd underordnede felter navnet på variablen, hvori værdierne på databasefeltet Kunde_ID skal lagres. Hvis du nu specificerer en SQL-sætning i feltet Datakilde ved at bruge denne variabel, vises de relevante værdier i underformularen.

## Sorter

Angiver betingelserne for sortering af data i formularen. Specifikationen for sorteringsbetingelserne følger SQL-reglerne uden brug af sætningen ORDER BY. Hvis du for eksempel vil have alle dataposter i databasen sorteret med et felt i stigende orden og et andet i faldende orden, skriver du Fornavn ASC, Efternavn DESC (antaget at Fornavn og Efternavn er datafelternes navne).

De passende ikoner på værktøjslinjen Formularnavigation kan bruges i Brugertilstand til at sortere:Sorter stigende, Sorter faldende, Sorter.

## Tilføj kun data

Bestemmer, om formularen udelukkende tillader tilføjelse af nye data (Ja) eller om den også tillader andre egenskaber (Nej).

Hvis Tilføj kun data bliver sat til "Ja", er redigering eller sletning af data ikke muligt.

## Tillad sletninger

Bestemmer, om data kan slettes.

## Tillad tilføjelser

Bestemmer, om data kan tilføjes.

## Tillad ændringer

Bestemmer, om data kan ændres.

## Hvad er en underformular?

Formularer bliver oprettet baseret på en databasetabel eller databaseforespørgsel. De viser data på en visuelt behagelig måde og kan bruges til at indtaste data eller redigere data.

Hvis du har brug for en formular, der kan henvise til data i en tabel eller en forespørgsel og derudover kan vise data fra en anden tabel, bør du oprette en underformular. Denne underformular kan for eksempel være et tekstfelt, der viser data fra en anden databasetabel.

En underformular er en ekstra del af hovedformularen. Hovedformularen kaldes også "forældreformular" eller "hovedformular". Underformularer skal bruges, når du ønsker adgang til mere end en enkelt tabel i en formular. Hver yderligere tabel kræver sin egen underformular.

Efter at du har oprettet en formular, kan du ændre den til en underformular. For at gøre dette skal du gå i designtilstand og åbne Formularnavigatoren. I Formularnavigatoren, træk en formular (som skal ændres til en underformular) over på en anden formular (som vil blive en master).

Den person, som bruger dit dokument, vil ikke se, at en formular har underformularer. Brugeren ser kun en formular, hvor data bliver indtastet, eller hvor eksisterende data bliver vist.

Angiv sammenkædningens hovedfelt fra datafelterne i hovedformularen. I underformularen kan sammenkædede felter indstilles som et felt, der skal sammenlignes med indholdet af sammenkædningens hovedfelt.

Når brugeren navigerer gennem data, viser formularen altid den aktuelle datapost. Hvis der er defineret underformularer, vil indholdet af underformularerne blive vist efter en kort forsinkelse på tilnærmelsesvis 200 ms. Denne forsinkelse lader dig gennemse hovedformularens dataposter hurtigt. Hvis du navigerer til næste hoveddatapost indenfor forsinkelsen, behøver underformularens data ikke at blive hentet og vist.