"Automatisk" gruppering och förkortning?

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1

Mitt lilla registerprojekt är igång (tack för god hjälp bl.a. Taz!)

Det är möjligt att detta är RTFM-frågor, men ändå, det här är vad jag vil skapa;

1) Ett fält som automatiskt skapar grupperingar utifrån en given lista.
Vill tex att morot, tomat, gurka automatiskt ska ge grönsaker i fältet utan att behöva skriva in det själv. En beräkning antar jag, men jag är inte så försigkommen på det området..

2) Kan jag på något sätt få förkortningar i ett fält men ändå använda hela ordet när det väljs i fältets meny? Trycker på fältet och väljer "gurka" men ser bara "gu" som fälttext.
Det går förstås att fuska och bara göra fältet c:a två tecken brett, men eftersom olika tecken tar olika plats blir detta lite osäkert. Skulle vilja ange: visa två första tecknena i fältet, typ...

Skojigt med uppskattning, tack.

Här är mina svar på dina frågor:

1. Det är möjligt att åstadkomma sådana här saker på flera sätt, de två främsta är antingen ett beräkningsfält som innehåller en case-sats, vilket är lämpligt om antalet grupper är litet och den andra metoden är en relation om antalet möjliga värden är stort. Nedan antar jag att fältet heter Titel som innehåller Gurka, morot osv...

A. Ett beräkningsfält kan se ut så här:
Case(
PatternCount ( Titel ; "Gurka" ) > 0 or
PatternCount ( Titel ; "Morot" ) > 0 or
PatternCount ( Titel ; "Tomat" ) > 0;
"Grönsak";

PatternCount ( Titel ; "Apelsin" ) > 0 or
PatternCount ( Titel ; "Banan" ) > 0 or
PatternCount ( Titel ; "Kiwi" ) > 0;
"Frukt";
)

... osv. Glöm inte att komplettera beräkningen och lägga till värden allteftersom de tillkommer och att beräkningsresultatet skall vara text.

B. En relation kanske är lite roligare, där behöver du skapa en relation mellan titel-fältet i din nuvarande tabell och titel-fältet i en ny tabell som du får skapa. Denna nya tabell "Produktgrupper", skall ha dels ett fält som heter Titel och ett som heter Grupp.

(Denna relation kan heta tex produkter_produktgrupper_titel vilket är ett namn på formen starttabell_sluttabell_fält-som-används-i-relationen som jag föredrar att använda när jag döper relationer.)

Skapa sedan poster i den tabellen enligt följande:

Titel Grupp
Gurka Grönsak
Morot Grönsak
Tomat Grönsak
Apelsin Frukt
Banan Frukt
Kiwi Frukt

... osv...

Seda behöver du bara lägga in det relaterade fältet produkter_produktgrupper_titel::Grupp i layouten. Så fort du fyller i något i fältet Titel som "hittas" i den relaterade tabellen så kommer ordet Grönsak eller Frukt att synas i din layout.

2. Även på denna fråga finns det flera svar, som beror på hur många varianter du har att spela med.

A. Det enklaste kanske helt enkelt är att skapa ett beräkningsfält som heter "Titel_Kort_C" (C för beräkning) med följande beräkning:

Left(Titel;2)

... vilket plockar två tecken från titelfältet. Detta fält kan du sedan använda i tex utskrifter, listor mm istället för det vanliga fältet Titel och på så sätt kan du få det att synas två tecken istället för alla.

Men du kan alltså inte mata in data i det fältet, vill du kunna skriva gu och det skall bli Gurka så kan du göra på båda sätten ovan, antingen via ett beräkningsfält med en case-sats eller via en relation.

B. Vi börjar med beräkningen med case-satsen:
Case(
Titel="Gu"; "Gurka";
Titel="Mo"; "Morot";
Titel="To"; "Tomat";
Titel="Ap"; "Apelsin";
Titel="Ba"; "Banan";
Titel="Ki; "Kiwi";
)

I det här fallet så måste du alltså mata in data med förkortningar och du måste vända på fältens funktion så att inmatningsfältet heter något vettigt som titel_förkortning och fältet som faktiskt innehåller titeln heter titel_c (c för beräkning).

Att tvinga användaren lära sig förkortningar för att mata data kan man diskutera det vettiga och och det finns förstås för och nackdelar med detta.

C. Vi fortsätter med relationen som är den andra metoden att åstadkomma en inmatnings-funktion baserad på förkortningar: Om du lägger till ett fält till din "Produktgrupper"-tabell som heter tex "Förkortning" och fyller i dessa enligt följande:

Titel Grupp Förkortning
Gurka Grönsak Gu
Morot Grönsak Mo
Tomat Grönsak To
Apelsin Frukt Ap
Banan Frukt Ba
Kiwi Frukt Ki

... och sedan skapar ett textfält i din vanliga tabell som heter Titel_Förkortning (text) och sedan gör en relation mellan Titel_Förkortning (i din vanliga tabell) och Förkortning (i Produktgrupper) så är du nästan där. Sista steget är att Arkiv > Hantera > Databas ställa in på fältet Titel (i din vanliga tabell) att det skall innehålla Automatiska data > Länkdata och sedan ställer du in att använda dig av relationen du nyss skapade och ange sedan fältet "Titel". Glöm inte kryssa för ersätt fältinnehåll, annars kommer inte fältet att kunna uppdateras om det redan står något i det.

Allt detta betyder att när man skriver "Gu" i fältet "Titel_Förkortning" så kommer det att "slås upp" via relationen till Produktgrupper och där hittas ordet Gurka i fältet Titel (i tabellen produkgrupper) och det får som resultat att ordet Gurka kopieras till fältet Titel (i din vanliga tabell) och vips kan du alltså mata in förkortningar och får hela ord i fältet Titel.

D. Det finns faktiskt ett tredje sätt kom jag på nu - om du har en tabell med produktgrupperna enligt ovan så kan du faktiskt skapa en värdelista baserat dels på fält 1 (Förkortning) och dels fält 2 (Titel). Denna värdelista kan du lägga på en meny i din layout ovanpå fältet Titel, men tyvärr så missar man då funktionen att kunna skriva förkortningar och få dem att poppa upp, man kan bara välja en förkortning och få hela ordet att fyllas i.

Lycka till!

/Ola

Senast redigerat 2007-10-23 16:11

Fast teckenbredd (exvis Courier) löser ju problemet med det där lilla fulhacket...

Tillägg: Ser att TAZ skrivit en mindre roman under tiden fliken var öppen men utan att ha skrivit något.

Wow, vilken instruktion!
Tack!

Visst löser ett typsnitt med fast teckenbredd problemet, men inte så snyggt att byta på ett fält kanske....

1
Bevaka tråden