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 kontekstmenuen til et valgt formularelement - vælg Formular - Data.

Åbn værktøjslinjen Formularfunktioner eller værktøjslinjen Formulardesign, klik på ikonet Formular - fanebladet Data.

## Analyser SQL-kommando

Angiver om SQL-sætningen skal analyseres af LibreOffice. Hvis indstillingen er sat til Ja, kan du klikke på knappen ... ved siden af rullelisten Indhold. Dette vil åbne et vindue, hvor du grafisk kan oprette en databaseforespørgsel. Når du lukker dette vindue, vil SQL-sætningen for den oprettede forespørgsel blive indsat i rullelisten Indhold.

## Cyklus

Afgør hvordan tabulatortasten kan benyttes til at navigere rundt med Ved brug af Tabulatortasten, kan du flytte fremad i formularen. Hvis du holder Skift-tasten nede samtidigt, vil du bevæge markøren i den modsatte retning. Hvis du står i sidste (eller første) felt og trykker på tabulatortasten igen, kan det have forskellige effekter. Definer tastens virkemåde 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

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

## Filter

Indtast de nødvendige betingelser for filtrering af data i formularen. Filterspecifikationerne følger SQL-regler uden at bruge sætningen WHERE. Hvis du for eksempel vil vise alle dataposter med fornavnet "Mike", skal du indtaste: Fornavn = 'Mike' i datafeltet. Du kan også kombinere betingelser: Fornavn = Mike OR Fornavn = Peter. Alle dataposter, som matcher disse to betingelser, vil blive vist.

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

## Indhold

Afgør indholdet der skal bruges til formularen. Indholdet kan være en eksisterende tabel eller en forespørgsel (tidligere oprettet i databasen), eller det kan defineres af en SQL-sætning. Før du indtaster et indhold, skal du angive 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, skal du indtaste datafeltet for hovedformularen, der styrer synkroniseringen mellem hoved- og underformular. For at indtaste flere værdier skal du trykke på Skift + Enter efter hver indtastningslinje.

Underformularen er baseret på en SQL forespørgsel; specifikt en Parameter Forespørgsel. Hvis et feltnavn indtastes i feltet Kæd overordnede felter, bliver data, der er indeholdt i feltet i hovedformularen, læst til en variabel, som du skal indtaste i Kæd underordnede felter. I en passende SQL-sætning bliver denne variabel sammenlignet med data fra den tabel, som underformularen henviser til. Alternativt kan du indtaste kolonnens navn i feltet Kæd overordnede felter.

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, skal du indtaste variablen, hvor mulige værdier fra hovedformularfeltet kan gemmes. Hvis en underformular er baseret på en forespørgsel, skal du indtaste variablen, som du definerede i forespørgslen. Hvis du opretter en formular ved at bruge en SQL-sætning indtastet i feltet Datakilde, skal du indtaste variablen, du anvendte i sætningen. Du kan vælge et vilkårligt variabelnavn. Hvis du vil indtaste flere værdier, skal du trykke 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

Specificerer betingelserne for sortering af data i formularen. Specifikationen på sorteringsbetingelserne følger SQL-regler uden brug af sætningen ORDER BY. For eksempel, hvis du vil sortere alle dataposter i en database i et felt i stigende orden og i et andet felt i en faldende orden, indtast Fornavn ASC, Navn DESC (under den antagelse at Fornavn og Navn er navnene på datafelter).

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 kun tillader tilføjelsen af nye data (Ja) eller om den tillader andre egenskaber også (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 rettes.

## 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 behøver en formular, som kan referere til data i en tabel eller forespørgsel og desuden kan vise data fra en anden tabel, bør du oprette en underformular. Denne underformular kan for eksempel være et tekstfelt, som 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.