BeeBase

Programmable relational database
with graphical user interface Support This Project
This page is also available in Deutsch English Français

Dokumentation

Dokumentationen nedan ingår i BeeBase-distributionen och finns även tillgänglig i PDF.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

4. Handledning

Att skapa en släktträdsdatabas.

Detta kapitel innehåller en kort handledning som beskriver grundläggande användning av BeeBase. Inom handledningen utvecklas ett litet projekt som tillåter hantering av ditt släktträd. Projektet som blir resultatet efter att ha tillämpat alla steg i denna handledning kan hittas som projektet `FamilyTree.bbs' placerat i katalogen `Demos' i din BeeBase-installation.


4.1 Hur BeeBase Fungerar

Man kan säga att BeeBase fungerar i två olika lägen, postredigering och strukturredigering.

Postredigeringsläget är där du lägger till, ändrar eller tar bort poster.

Strukturredigeringsläget låter dig redigera hur din databas ska se ut och vilka tabeller och fält den innehåller.

Förutom detta finns programredigeraren där du anger programfunktioner som körs automatiskt när data matas in eller uttryckligen när du trycker på en programknapp.


4.2 Starta med ett Projekt, Strukturredigeraren

För att skapa en databas måste du först definiera dess innehåll. I BeeBase görs detta i strukturredigeraren som öppnas genom att välja `Strukturredigerare' i menyn `Projekt'. Här hittar du tre olika sektioner:

`Tabeller'
Lägg till, ändra eller ta bort tabellerna i ditt projekt.

`Fält'
Lägg till, ändra eller ta bort fält i den för närvarande valda tabellen.

`Visning'
Ange den grafiska layouten för din databas, dvs. hur den ska visas.


4.3 Lägga till en Tabell

Först behöver vi en tabell, tryck på knappen `Ny' precis under listvyn i sektionen `Tabell'. Du kommer då att se en dialog som ber dig att ange vissa data:

`Namn'
Namnet på tabellen. Namnet måste börja med en stor bokstav och kan bestå av upp till 20 tecken. Namnet kan ändras senare. I denna handledning sätter vi namnet till `Person' eftersom den kommer att innehålla alla personernas namn i denna databas.

`Antal poster'
En tabell kan antingen bestå av endast en eller av ett obegränsat antal poster. I vårt fall bör den ställas in på obegränsad eftersom vi kommer att lägga till mer än en person.

`Utlösarfunktioner'
Tillägg och borttagning av poster kan styras av programfunktioner. Här ställer du in vilken funktion som ska anropas. Eftersom vi inte har skrivit några programfunktioner än, lämnar vi fälten tomma.

När detta är klart, tryck bara på knappen `OK' och vi har vår första tabell, `Person'.


4.4 Lägga till ett Fält

Sedan behöver vi ett strängfält för den tabellen, tryck `Ny' i fältsektionen. Fält behöver också vissa inställningar:

`Namn'
Samma som för en tabell: första bokstaven måste vara stor och totalt maximalt 20 tecken. Vi sätter namnet på detta fält till `Namn' eftersom det kommer att innehålla namnen på personerna vi ska lägga till.

`Typ'
Här väljer vi vilken typ detta fält ska vara. Det finns ett par olika men för detta fält använder vi ett strängfält.

`Max längd'
Här kan du definiera det maximala antalet tecken en användare kan mata in för strängen. Vi sätter detta till 30.

`Initialvärde'
Det är möjligt att ha att vissa fält använder ett initialvärde för varje ny post du lägger till, här är där du anger vad det ska innehålla. Lämna denna rad tom.

`Utlösare'
Ett fält kan också utlösa att en programfunktion körs. Till exempel, om du matar in ett namn kan du ha ett program som kontrollerar om detta namn redan finns. Vi lämnar detta fält tomt.


4.5 Visa Projektet

Efter att ha tryckt på `OK' bör du nu märka vissa förändringar i visningssektionen. Ändra valknappen högst upp i visningssektionen till `Huvudfönster'. Där ser du vad huvudfönstret innehåller, för närvarande endast tabellen `Person'. Om du ändrar valknappen tillbaka till `Tabellmask', kan du se hur tabellen `Person' presenteras. För närvarande visas den som en panel med ett fält.

Dubbelklicka nu på `Person' högst upp i listan i visningssektionen så bör ett fönster visas. Klicka på fliken `Panel' så kan du ställa in hur tabellens panel ska visas:

`Titel'
Titeln på en tabell kan vara annorlunda än dess namn. Vår tabell heter `Person' men här kan vi ställa in den till att vara `DETTA ÄR TABELLEN PERSON!' om vi föredrar det.

`Bakgrund'
Bakgrunden kan ändras till vad som passar din smak.

`Gränssnittsobjekt'
Här kan vi definiera vilka gränssnittsobjekt vi vill att panelen ska ha.

Tryck på `OK' och dubbelklicka sedan på `Namn' i listvyn i visningssektionen. Detta öppnar fönstret som innehåller inställningarna för hur strängfältet `Namn' ska visas.

`Titel'
Samma som för panelen. Strängen du anger här är vad som verkligen visas i postredigeringsläge.

`Genväg'
Här kan du ställa in en bokstav som kan användas för att hoppa till detta fält, när du är i postredigeringsläge. För att hoppa till fältet behöver du hålla ner Alt-tangenten (Windows, Mac OS och Linux) respektive Amiga-tangenten och sedan trycka på bokstaven.

`Hem'
Gör att markören hoppar till detta fält när en ny post läggs till. I vårt fall kommer vi alltid eller för det mesta mata in namnet först i en ny post, så aktivera detta.

`Skrivskyddat'
Ställ in detta om fältet ska vara skrivskyddat. Lämna det omarkerat.

`Vikt'
Bestämmer hur mycket av detta fält som ska vara synligt när det konkurrerar om utrymmet med andra fält. Om till exempel tre 50-teckensträngar finns i ett fönster som bara har plats för 100 tecken, då bestämmer detta tal hur mycket utrymme strängen får relativt de andra. Lämna det på 100.

`Bakgrund'
Samma som för panelen.

`Bubbla hjälp'
Här anger du vilken text du tror skulle vara hjälpsam för användaren. Bubbelhjälpen visas efter att ha hållit musen stilla över ett fält i några sekunder. Ställ in detta till `Om du behöver hjälp, ring författaren på 112'.

Lämna strukturredigeraren (välj `Avsluta strukturredigeraren' i menyn `Projekt') och du är tillbaka till postredigeringsläge där du ser hur databasen verkligen ser ut. Du kommer att se rubriken som är strängen du kan ha angett i visningssektionen för panelen. Posträknaren bör säga `#0/0' eftersom vi inte har lagt till några poster än. Därefter finns en filterknapp och två pilknappar. Under allt detta bör du ha fältet `Namn' med texten du kan ha angett i visningssektionen för detta fält. Om du inte har ändrat någon text alls när du var i visningssektionen då bör panelen heta `Person', och strängfältet `Namn'. Flytta musen över strängfältet `Namn' och lämna den där i några sekunder. Om du skrev in något i bubbelhjälpen ovan då bör denna text visas i ett popup-fönster.


4.6 Lägga till två Referensfält

Nu ska vi lägga till två referensfält. Referensfält är lite annorlunda än andra fält. Som deras namn kan antyda hänvisar de till poster. Detta kommer att bli mer begripligt när du provar det själv om bara en stund.

Gå in i strukturredigeraren igen och lägg till två fält till i tabellen `Person'. Tryck på `Ny' i fältsektionen, namnge det `Far', och ändra dess typ till `Referens'. Ett referensfält har bara en inställning:

`Ställ in referens till'
Talar om vilken tabell fältet refererar till. Det bör redan peka på tabellen `Person'. Låt det vara så och tryck på `Ok'.

Lägg till ett annat fält genom att trycka på `Ny' i fältsektionen och kalla det `Mor'. Fältets typ bör också ställas in till referens och peka på tabellen `Person'.

Som du kanske har märkt finns det nu tre fält i visningssektionen. Klicka på `Far' och sedan på upp- och ned-knapparna som finns till vänster. Detta kommer att ändra var `Far' placeras när du tittar på det i postredigeringsläge. Placera `Far' längst upp, `Namn' i mitten, och `Mor' längst ner.

Härnäst specificerar vi vilket innehåll referensfälten `Far' och `Mor' ska visa från de refererade posterna. Dubbelklicka på `Far' i visningssektionen och klicka sedan på `Extra'. Här väljer vi att visa strängfältet `Namn', sedan trycker vi på `Ok' och upprepar proceduren för `Mor'.


4.7 Lägga till Poster

Nu bör vi lägga till några poster. Lämna strukturredigeraren och gå in i postredigeringsläge. För att lägga till en ny post väljer du `Ny post' från menyn `Tabell' (på Windows och Linux hittar du denna meny genom att trycka och hålla höger musknapp inne i tabellmasken). Markören bör nu automatiskt hoppa till fältet vi har ställt in som `Hem' tidigare i visningssektionen i strukturredigeraren. Lägg till två poster, en med din fars namn i `Namn' och en annan med din mors namn i `Namn'. Därefter lägger du till en annan post med ditt eget namn i `Namn'.

Nu är det dags att förstå dessa referensfält. Genom att trycka på listvy-knappen på `Far' får vi en lista över alla poster som detta referensfält kan referera till. Välj din fars namn och gör på samma sätt nedan på moderns listvy.

Nu bör du ha tre poster, du, din far och din mor. I din post bör din fars namn vara synligt i `Far' längst upp och din mors namn bör vara i `Mor' längst ner. Du kan bläddra genom posterna genom att trycka på Alt tillsammans med piltangenterna Upp och Ned.

Men hallå! Mina föräldrar har/hade också föräldrar säger du! Så låt oss lägga till ytterligare fyra poster, den tredje generationen. Lägg bara till posterna en efter en och skriv deras namn i `Namn'. Om du inte kommer ihåg deras namn kan du helt enkelt skriva `fars far', `mors far' eller något liknande istället. Sedan bläddrar du genom alla poster och ställer in `Far' och `Mor' till vad de ska innehålla. När detta är klart bör du ha minst sju poster, din post, dina föräldrars poster och dina morföräldrars och farföräldrars poster.


4.8 Filter

Eftersom vi nu har några poster att arbeta med, kan vi prova filterfunktionen. Filtret kan sortera bort poster du inte vill visa, de kommer fortfarande att finnas kvar i databasen men de visas inte längre.

För att redigera filtret väljer du `Ändra filter' från menyn `Tabell'. Ett fönster med mängder av operatorer kommer att visas. Här ställer du in vilka villkor en post måste uppfylla för att visas.

I detta lilla exempel kommer vi att använda kommandot LIKE, som låter dig göra en jokerjämförelse av ett fält. Tryck en gång på knappen LIKE till höger och dubbelklicka sedan på `Namn' i listan till vänster och (LIKE Namn ) bör visas i strängen precis ovanför knapparna `Ok' och `Avbryt'. Därefter skriver du "*a*" så att hela strängen visar (LIKE Namn "*a*"). Detta betyder att BeeBase ska visa alla poster som innehåller bokstaven `a' var som helst i `Namn'.

Tryck på `Ok' och du kan märka att poster utan `a' i `Namn' inte längre är synliga. Eftersom bokstaven `a' är ganska vanlig i de flesta språk och namn, kan alla poster fortfarande vara synliga men du kan prova andra bokstäver för att göra filterfunktionen tydligare.

Som nämnts tidigare finns det en knapp på panelen som säger `F'. Detta `F' indikerar om filtret är på eller av. Slutligen när du är klar med att testa, stäng av filtret så att alla poster är synliga.


4.9 Frågor

Nu när vi har lekt med filterfunktionen lite, vänder vi oss till frågefunktionen i BeeBase. Frågor kan användas för att visa information från en databas som matchar vissa kriterier.

Välj `Frågor' från menyn `Program' för att öppna frågeredigeraren. Nu visas ett fönster med några knappar högst upp och två större områden nedanför. Strängen uppe till vänster är där du anger namnet på vad du vill kalla frågan du skapar.

`Kör'
Kompilerar och kör frågan.

`Skriv ut'
Skriver ut resultatet av frågan till en fil eller på din skrivare.

`Ladda och Spara'
Låter dig ladda och spara var och en av frågorna.

Det första stora området är där du anger frågan. Det andra stora området är där resultatet visas.

Nu låt oss producera en lista över alla de personer vi försökte filtrera ut tidigare. Skriv `Personer med ett a i sitt namn' i strängen uppe till vänster. Detta är titeln för denna fråga. I det övre stora området, skriv:

 
SELECT Namn FROM Person WHERE (LIKE Namn "*a*")

Nu när du kör denna fråga genom att trycka på knappen `Kör' kommer den att producera en lista över alla personer med bokstaven `a' i sina namn. Prova att ändra bokstaven för att se olika resultat.

Vid denna tidpunkt kan vi introducera kommandot AND. Tryck på listvy-knappen precis till vänster om knappen `Kör' i frågeredigeraren. Välj sedan `Ny' och namnge den `Personer med både bokstaven a och s i sina namn'. Skriv sedan

 
SELECT Namn FROM Person WHERE
(AND (LIKE Namn "*a*") (LIKE Namn "*s*"))

Observera att vi fortfarande använder kommandot LIKE för att välja poster som innehåller bokstäverna `a' eller `s' i sina namn, men kommandot AND kräver att BÅDA kriterierna LIKE uppfylls. Därför visas endast poster med BÅDE bokstäverna `a' och `s' i sina namn när frågan körs.


4.10 Lägga till en Tabell med ett Memo- och ett Knappfält

Dessa var två sätt att välja och visa databasen. Ett annat sätt att visa data kan göras av ett program. För att visa data kan vi använda en fälttyp som kallas memo.

Gå in i strukturredigeraren och tryck på `Ny' i tabellsektionen. Namnge den nya tabellen `Kontroll' och ställ in dess antal poster till `Exakt en'. Klicka och håll ner musknappen på den nya tabellen. Dra den nu bara lite ovanför mitten av tabellen `Person' och släpp knappen. I tabellsektionen bör `Kontroll' nu vara överst, följt av `Person' nedan.

Se till att tabellen `Kontroll' är markerad, tryck sedan på `Ny' i fältsektionen. Ställ in typen för det nya fältet till `Memo' och ge det namnet `Resultat'. Tryck på `Ok' och lägg sedan till ett annat fält till tabellen `Kontroll' genom att återigen trycka på `Ny' i fältsektionen. Denna gång, ställ in dess typ till `Knapp' och namnge det `Stamtavla'.

För att ge databasen ett bättre utseende, klicka en gång på `Stamtavla' i visningssektionen och skjut den till toppen genom att trycka på knappen `Upp' en gång.


4.11 Programmera BeeBase för att göra en Stamtavla

Nu har vi en knapp som kan starta ett program och ett memo för att visa data i. Det är därför dags att gå in i programredigeraren. Detta görs genom att välja `Redigera' från menyn `Program'. Redigeraren har tre knappar:

`Kompilera & Stäng'
Som gör just det. Den kompilerar programmet och lämnar programredigeraren.

`Kompilera'
Kompilerar programmen men stannar i programredigeraren.

`Återställ'
Återställer alla ändringar tillbaka till tillståndet när du gick in i programredigeraren.

Eftersom alla programfunktioner du skriver kommer att finnas i detta fönster, behöver vi separera dem från varandra. I BeeBase görs detta med kommandot DEFUN. Allt mellan de två parenteserna kommer att vara en del av funktionen stamtavla i detta exempel:

 
(DEFUN stamtavla ()

; Detta är DEFUN:s slutparentes
)

Med detta i åtanke skriver vi nu in den första funktionen som kommer att producera ett släktträd för den aktuella personen i databasen och placera resultatet i fältet `Resultat'. Denna stamtavla-funktion är i själva verket tre funktioner:

 
; Programmet stamtavla

(DEFUN stamtavla ()
    (SETQ Kontroll.Resultat (stamtavla_till_memo (hämt_stamtavla Person NIL) 0 3))
)


; Programmet hämt_stamtavla

(DEFUN hämt_stamtavla (person:Person level:INT)
    (IF (AND person (OR (NULL level) (> level 0)))
        (LIST person.Namn
            (hämt_stamtavla person.Far (1- level))
            (hämt_stamtavla person.Mor (1- level))
        )
    )
)


; Programmet stamtavla_till_memo

(DEFUN stamtavla_till_memo (stamtavla:LIST indent:INT level:INT)
    (IF (> level 0)
        (+
            (stamtavla_till_memo (NTH 1 stamtavla) (+ indent 8) (1- level))
            (IF stamtavla (SPRINTF "%*s%s\n" indent "" (FIRST stamtavla)) "\n")
            (stamtavla_till_memo (NTH 2 stamtavla) (+ indent 8) (1- level))
        )
        ""
    )
)

När du skriver detta program, se till att alla parenteser är där de ska vara. För många eller för få parenteser är det vanligaste felet du får när BeeBase kompilerar ditt program. Felmeddelandet från BeeBase är förmodligen `Syntaxfel' i detta fall. Tryck på `Kompilera & stäng' och fönstret stängs, vilket betyder att det inte fanns några misstag under kompileringen.

Oroa dig inte för mycket om du inte förstår alla funktioner från början. Det finns ett komplett kapitel (se Programming BeeBase) som innehåller en referens över alla funktioner inklusive deras detaljerade beskrivningar.

Nu har vi ett program att köra, men först måste vi tilldela programfunktionen till knappen `Stamtavla'. Detta görs genom att gå in i strukturredigeraren, välja `Kontroll' i tabellsektionen och dubbelklicka på fältet `Stamtavla' i fältsektionen. Öppna sedan listvyn `Utlösare'. I denna lista kommer alla dina programfunktioner att listas, för närvarande bör det finnas tre funktioner: stamtavla, hämt_stamtavla och stamtavla_till_memo. Dubbelklicka på stamtavla som den programfunktion knappen `Stamtavla' kommer att utlösa, tryck sedan på `Ok' och lämna strukturredigeraren.

Nu om allt är gjort korrekt, kommer tryck på knappen `Stamtavla' att producera en stamtavla över den aktuella personen. Prova att ändra person för att se några olika stamtavlor.


4.12 Programmera BeeBase för att Lista en Persons Barn

Eftersom nästa tillägg till denna databas kräver några fler poster, bör du lägga till dina bröder och systrar. Om du inte har några, skriv då `Min påhittade syster 1', `Min påhittade bror 1' som naturligtvis bör ha samma föräldrar som du har.

Gå sedan till programredigeraren och skriv följande för att skapa ett annat program.

 
; Programmet barn räknar antalet barn en person har.
; Först definierar vi variablerna, t.ex. "namn" innehåller barnens namn.

(DEFUN barn ()
    (LET ( (namn "") (räknare 0) (förälder Person) )

    ; För alla poster i tabellen Person, gör följande:
    ; Om variabeln förälder förekommer som far eller mor
    ; i någon av posterna då:
    ;     lägg till namnet i variabeln namn
    ;     öka räknaren med 1.

    (FOR ALL Person DO
        (IF (OR (= förälder Far) (= förälder Mor))
            (
                (SETQ namn (+ namn Namn "\n"))
                (SETQ räknare (1+ räknare))
            )
        )
    )

    ; Sedan skriver vi resultatet i Kontroll.Resultat.
    ; Om den aktuella personen inte har några barn, skriv en sträng.
    ; Om han/hon har barn, skriv en annan sträng.

    (SETQ Kontroll.Resultat 
        (+ Person.Namn (IF (> räknare 0)
            (+ " är den stolta föräldern till " (STR räknare) " barn.")
            " har inga barn (än :-)."
        ))
    )


    ; Om föräldern har barn, lägg till deras namn.

    (IF (<> räknare 0)
        (SETQ Kontroll.Resultat 
            (+ Kontroll.Resultat "\n\n"
                (IF (= räknare 1)
                    "Barnets namn är:"
                    "Barnens namn är:" 
                )
		"\n\n"
                namn
            )
        )
    )

    ; Detta är slutparentesen för LET-kommandot.
    )

; Detta är slutparentesen för DEFUN barn.
)

För att skapa variabler använder vi kommandot LET. Variabler som skapats med kommandot LET är lokala och endast synliga inom `LET'-kommandots öppnings- och slutparenteser. Således måste alla kommandon som använder dessa variabler placeras inom dessa parenteser.

Allt vi behöver för att köra detta program är en ny programknapp. Gå därför in i strukturredigeraren och lägg till ett knappfält i tabellen `Kontroll'. Kalla det `Barn' och välj barn som den programfunktion den ska utlösa.

För att bringa lite ordning i masken för tabellen `Kontroll' är det nu dags att introducera grupper. Alla objekt kan ordnas i vertikalt eller horisontellt justerade grupper.

I visningssektionen, klicka på `Stamtavla' och shift-klicka på `Barn', därefter klickar du på knappen `Grupp' till vänster. Nu kommer de två programknapparna att vara tillsammans i en vertikalt justerad grupp. Men vi vill att denna ska vara horisontellt justerad så dubbelklicka på `V-Grupp' som har dykt upp i visningssektionen. Detta öppnar ett fönster som låter dig ändra inställningarna för denna grupp. Ställ in titeln till `Program' och markera knappen `Horisontell'.

Vid denna tidpunkt kan vi dölja namnet på fältet `Resultat' i tabellen `Kontroll'. Dubbelklicka på `Resultat' i visningssektionen och töm titelfältet. Detta kommer att visa fältet `Resultat' utan någon titeltext.

För att göra saker enklare, om vi lägger till fler program eller fält i tabellen `Kontroll', bör vi placera `Resultat' och gruppen `Program' i en vertikal grupp. Se till att du bara har markerat `Program' och `Resultat' och tryck sedan på `Grupp'. Detta placerar `Program' och `Resultat' i en vertikal grupp.

Lämna strukturredigeraren och ta en titt på resultatet. Tryck sedan på knappen `Barn' för att se antalet barn och deras namn för den aktuella personen.

Detta exempel skulle mycket väl kunna utökas till ett fullvuxet stamtavleprogram. De enda verkliga begränsningarna är din fantasi och storleken på din hårddisk.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated on September, 6 2025 using texi2html