Filtre

Mera Open indeholder en filtermekanisme, som kan anvendes på tværs af systemet i forbindelse med:

Et filter kan oprettes enten som

  • Et standardfilter Et filter tilknyttet en bestemt form f.eks. forespørgsler og udskrifter, som aktiveres uden brugerindflydelse.
  • Et brugerkaldt filter Et filter som vælges i forbindelse med f.eks. forespørgsler og udskrifter. Man kan således oprette filtre, som brugeren kan vælge mellem på afviklingstidspunktet.
  • Et brugerindtastet filter Et filter som tastes i forbindelse med f.eks. forespørgsler og udskrifter.

Da et filter (forudoprettede standard og brugerfiltre) kan anvendes i mange forskellige sammenhænge, er det et fritstående element, som defineres uden kontekst, og skal derfor indeholde reference til de inkluderede tabeller. Brugerindtastede filtres tabelreferencer er defineret i formen. Filtre markeres for hvorvidt det skal kaldes i forespørgsel og/eller opdatering, og om det er en fejl, hvis konditionen ikke opfyldes, eller en advarsel.

Filterkondition angives som et "where" udtryk indeholdende:

  • Kolonnenavne F.eks. "VALUTA".
  • Konditoner F.eks. "=" lig med, ">" større end osv..
  • Konstanter Positive og negative tal, datoer og tekster
  • Separator F.eks. "OG" og "ELLER"
  • Parenteser Til sammenkædning og adskillelse af konditioner.

Eksempel                                                                                                                                  Et filter refererer til kundetabellen og konditionen udtrykkes som: "(VALUTA = GBP OG SALDO > 0) ELLER OPRETTET > 010401"

1 Kolonnenavn Kolonnenavne kan findes ved at bede om hjælp eller hjælp i det ønskede felt, hvor kolonnenavnet bliver vist i den første linje i hjælpeboksen. Bemærk at hvis kolonnenavnet består af flere ord kædes de sammen med en understregning (_). Hvis kolonnen er et tekstfelt, kan man efter kolonnenavnet angive, hvor i tekstfelt man skal starte ved at skrive ”(9)”, hvor 9 er et tal fra 0 til feltlængde – 1. Standardværdien er ”(0)”. Eksempel: ”VARENR(2) = M2”, for varer, hvor anden position i varenummeret er lig ”M” og tredje lig ”2”.

Hvis en kolonne er defineret som en tabel, f.eks. omsætninger pr. måned, kan man skrive følgende efter kolonnenavnet:

·         Ingenting Betingelsen skal være opfyldt for alle forekomster. Eksempel: ”BUDGET = 0” for kunder, hvor alle indeværende års månedsbudgetter er 0. Med andre ord kunder uden budget.

·         ”(9)”, hvor 9 er et tal fra 0 til antal forekomster – 1. Betingelsen skal være opfyldt for forekomst 9. Eksempel: ”BUDGET(2) = 0” for kunder, hvor marts måneds budget er 0.

·         ”(n)” eller ”(N)” Betingelsen skal være opfyldt for en af forekomsterne. Eksempel: ”BUDGET(N) > 0” for kunder, hvor et af månedsbudgetterne er større end 0. Med andre ord kunder med budget.

Konditioner Som kondition anvendes de normale matematiske konditioner. En oversigt kan fås ved at bede om hjælp efter indtastning/valg af kolonnenavn.

Lig med

=

Hvis feltet er et tekstfelt, er det starter med

Større end

>

Større end eller lig med

>=

Mindre end

<

Mindre end eller lig med

<=

Forskellig fra

#

Hvis feltet er et tekstfelt, er det starter ikke med

Indeholder

Kan kun anvendes på tekstfelter *)

Indeholder ikke

!”

Kan kun anvendes på tekstfelter *)

2 Kolonnenavn Anden kolonnenavn kan være et kolonnenavn eller en konstant. Hvis første kolonnenavn er et tal eller en dato, angives konstanten som et tal eller en dato. Hvis det er en tekst, angives konstanten, eventuelt i anførselstegn – enten ’ eller ”. Dette gøres for at skelne mellem om man sammenligner med en anden kolonne (uden anførselstegn) eller en konstant (med anførselstegn).  I tekstfelter kan anvendes et såkaldt wild card ’*’ i forbindelse med lig med og indeholder. NB Tekstkonstanter behøver ikke længere være angivet med anførselstegn, medmindre man søger på en sætning med 2 eller flere ord *), eller man søger efter punktum i position 1 eller 2. Anvendes en kolonne, skal der være et punktum før kolonnenavnet. *) Hvis kondition er ”indeholder” eller ”indeholder ikke” og 2 kolonnenavne indeholder blanke, accepteres alt indhold mellem de enkelte ord. Hvis man ønsker at teste, som et sammenhængende ord angives understregning (_) for blank. Eksempel: ”NAVN HAR ’OLE ANDERS’” opfylder kunder med navnet ”Ole Anders”, ”Ole Andersen” og ”Ole Henrik Andersen” betingelsen. Dette svare til ”NAVN HAR OLE OG HAVN HAR ANDERS” Eksempel: ”NAVN HAR ’OLE_ANDERS’” opfylder kunder med navnet ”Ole Anders” og ”Ole Andersen” betingelsen, men ikke ”Ole Henrik Andersen”. Eksempel: ”NAVN HAR ’OLE_ANDERS_’” opfylder kunder med navnet ”Ole Anders” betingelsen, men ikke ”Ole Andersen” og ”Ole Henrik Andersen”.

Separator Hvis filtret indeholder flere konditioner, separeres de med en separator.

A eller ”og”

Den efterfølgende kondition skal også være opfyldt

V eller ”eller”

En af konditionerne skal være opfyldt

Bemærk det danske sprog ikke er matematisk. F.eks. hvis man ønsker en liste med nogle angivne kundenumre separeres de med ’eller’ og ikke ’og’. Altså i en liste for kundenummer ’1’ og ’4’ anvendes ’eller’ da kundenumret ikke kan være lig med både ’1’ og ’4’, men kundenumret skal være enten lig med ’1’ eller ’4’.

Parenteser Parenteser anvendes til at sammenkæde konditioner. Dette skal forstås således at konditioner bliver valideret indenfor parenteserne og det samlede udtryk skal være sandt.

I eksemplet "(VALUTA = GBP OG SALDO > 0) ELLER OPRETTET > 010401" betyder at alle identer hvor:

1.     Valutaen er GBP og saldoen er større end 0 ELLER

2.     oprettelsesdatoen er efter 010401

medtages.

Hvis parenteserne var sat således: "VALUTA = GBP OG (SALDO > 0 ELLER OPRETTET > 010401)" ville det betyde at alle identer hvor:

1.     Valutaen er GBP og saldoen større end 0 ELLER

2.     Valutaen er GBP og oprettelsesdatoen er efter 010401

medtages.

(over-3)