Maj 152010
 

Flattr this!

Nu ska jag visa hur man kopplar våra tabeller med varandra via ett formulär. Tabellerna och relationerna skapade vi här.

Välj ”Formulär”  i Base och sen ”Skapa formulär med hjälp av guiden”.

Här har vi nu tre olika tabeller att välja mellan. Vi väljer filmtabellen (i mitt fall döpte jag den till Filmtabell för enkelhetens skull) som agerar som huvudtabell och därför blir huvudformulär. Välj fälten Filmnamn och År och tryck ”Nästa”.

Bocka i rutan ”Lägg till underordnat formulär” och välj ”FilmGenre”. Genre visas inte för att filmtabellen inte har någon relation dit utan vi drog en linje mellan FilmId i Filmtabellen och FilmID i FilmGenre. Tryck sen ”Nästa”.

Underformuläret blir i detta fallet FilmGenre eftersom det är där datan vi lägger in kommer att hamna. Välj att flytta över FilmID i formuläret. Detta blir den kompletta kopplingen mellan Filmtabellen och FilmGenre. Tryck ”Nästa”.

Välj att trycka på alternativen jag har markerat. I första fallet fungerar egentligen alternativen 1, 2 och 4. När det gäller det underordnade formuläret så vill vi ha det tabelliknande . Tryck ”Nästa”.

Punkt 6 gör vi ingenting med utan trycker nästa. Punkt 7 är bara rent grafiskt så tryck på ”nästa” när detta är gjort. Välj ett bra namn på formuläret i punkt 8 och tryck ”Färdigställ”.

Som ni kan se så har vi ett bristfälligt underformulär där bara FilmId finns. Denna är fullt komplett kopplad till Filmtabellen som ni kan se på denna bild:

Nu är det kopplingen mellan FilmGenre- och Genretabellen som ska fixas och så här gör man:

Stäng formuläret och gå till Formulär i huvudfönstret och välj där att högerklicka på vårt formulär och välj ”Redigera”.

Nu när vi är i designläget så ska vi fixa en kolumn från Genre-tabellen. Högerklicka till höger om FilmID och välj ”Infoga kolumn”. Välj sen ”listruta” och det kommer att se ut så här:

Högerklicka nu på ”Listruta 1” och välj ”Kolumn”.  Detta fönster kommer visas:

Fönstret innehåller 3 olika flikar, allmänt, data och händelser. Vi fokuserar mest på datafliken, men vi kan ändra etiketten under allmänt så det ser lite snyggare ut. Ändra till Genre istället för ”Listruta 1”.

Gå sen till datafliken och ändra till detta:

”Datafält” ska ändras till ”GenreID”, ”typ av listinnehåll” till sql och sen den allra viktigaste, Listinnehåll. Denna kommer att visa alternativen som går att välja mellan, i vårt fall action, komedi m.m.

Jag fick inte med hela sql-frågan men det ska stå:

SELECT ”Genre”, ”GenreID” FROM ”Genretabell”

Ta notis om att Genre står före GenreID och detta måste vara i denna ordning för annars fungerar det inte. Första fältet anger vad som går att välja mellan, andra fältet är kopplingen till Genredatabasen.

Själva namnen som står här baseras helt och hållet till vad ni har döpt tabellerna till. I mitt fall valde jag Genretabell för att man lätt ska veta att det är en tabell det rör sig om.

Tryck sen på denna knappen för att knappa in uppgifter i databasen:

Ser väl inte så jättesnyggt ut men det fungerar.

Skriv in en film och år och tryck sen under ”Genre” för att välja genre. Man kan välja bland dom som är inskrivna i genretabellen.

Det som inte är speciellt bra här är att när man trycker på underformuläret så blir det i fokus och alltså går det inte att skriva in en ny post i huvudformuläret. Tryck därför någonstans på det beige området för att det ska få fokus igen och tryck sen på pilarna längst ner för att skriva in en ny post.

Så här ser det ut i FilmGenre för min del nu efter att ha knappat in några filmer:

Som ni ser så har jag knappat in 4 filmer från 0-3. Film 0 har två genrer, 0 och 1. I mitt fall betyder detta filmen Dödligt vapen som har FilmID 0. Filmen är en actionkomedi, action fick GenreID 0 och komedi GenreID 1.

Film nummer 2 har FilmID 1 och är en actionfilm osv. Denna tabell matas på för varje ny post man lägger in.

OBS!! Notera att om man mixtrar för mycket med tabeller och kopplingar m.m. så kan det bli något problem på vägen som är oåterkallerligt. I min strävan att skriva detta höll jag på att ändra lite här och där och till slut fungerade inte filmtabellen som den skulle och det var omöjligt att komma ur läget. Mitt val var därför att skapa filmtabellen på nytt för att allt skulle bli normalt igen. För att skapa denna igen så måste man ta bort kopplingen under Verktyg/Relationer.

Maj 152010
 

Flattr this!

Nu har vi kommit till punkten då Base knäcker Calc när det gäller databaser.

Vår uppgift är fortfarande att jobba med en filmdatabas. Eftersom det kan bli lite störningar med att ha inknappade data i en tabell så väljer jag att göra en helt ny databas.

Vi vill ha ett till fält i databasen som heter Genre. Kan lika gärna vara skådespelare. Problemet är att en film kan ha flera genrer och en film brukar ha fler än en skådespelare. 😉

Skulle vi nu göra en tabell med fältnamnet Genre så går det bara att knappa in en genrer i varje ruta och därför fungerar det inte.

Så här går vi till väga:

Skapa dessa tabeller på samma sätt som vi gjorde här:

Tabell 1:

Tabell 2 (Här ska alla genrer såsom action, skräck m.m. skrivas in):

Glöm inte i tabell 1 och 2 att sätta autovärde till ja vid FilmID och GenreID.

Tabell 3 (denna tabell ska lagra kopplingen mellan filmer och dess genrer):

Notera i denna tabell att vi har två nycklar. Dessa nycklar är inte primära utan ”främmande” nycklar, dvs. dom är inte unika. FilmID ska exempelvis kunna ha samma nummer i flera poster.

För att skapa främmande nycklar, i detta fallet två fält så markera FilmID genom att trycka där nyckeln visas på bilden. Håll sen in ctrl-knappen på tangentbordet och markera sen där den andra nyckeln visas till vänster om GenreID. Nu när både FilmID och GenreID är markerade så högerklicka där nyckeln visas och välj ”Primärnyckel” så visas nycklarna på samma sätt som på bilden ovan.

Markera sen en av nycklarna och högerklicka så ser ni att ”primärnyckel” inte är ibockad, alltså är det ingen primär nyckel utan främmande nyckel.

Nu har vi dessa tabeller:

Nästa steg är att skapa kopplingar mellan dessa tabeller. Gå upp i menyn Verktyg och välj Relationer. Välj att lägga till samtliga tabeller. Dessa hamnar nu som små rutor där man kan flytta på dom hur man vill.

Vi ska nu fokusera oss på FilmGenre.

Markera FilmID i tabellen FilmGenre och dra den till FilmID i Filmtabellen.

Markera GenreID i tabellen FilmGenre och dra den till GenreID i Genretabellen och resultatet blir detta:

Här kan vi se att det står 1 på ena sidan av strecket och ”n” på andra, detta betyder ”en till många”-relation. Skulle vi istället dra från Filmtabellen till FilmGenre så blir resultatet ”en till en”-relation.

Exempel på hur detta fungerar.

Filmen Dödligt Vapen är en actionkomedi och så här kommer det att se ut:

Filmtabellen innehåller en film som heter Dödligt Vapen och som har FilmID 0.

Genretabellen innehåller Action som har GenreID 0 och Komedi som har GenreID 1.

FilmGenre kommer härmed att visa detta:

För att preparera inför del 2 av guiden så skriv in lite data i genre-tabellen.

Nu har vi gjort en relationsdatabas och i del 2 kommer jag att visa hur vi gör ett formulär så det blir smidigt att knappa in uppgifterna.

Skapa formulär till vår relationsdatabas (del 2 av 2)

Maj 152010
 

Flattr this!

Efter att hållt på i över en vecka med att studera hur en relationsdatabas fungerar i OpenOffice Base så har jag äntligen lyckats lösa problemet och kommer att delge er alla hur man gör.

Jag har använt många källor för att förstå mig på detta, främst har jag kollat i openoffice.org forum efter hjälp och en som heter Drew Jensen har haft ett exempel som heter movies_2.odb som jag hittade här.

Även om man får ett färdigt exempel så är det ett aber att förstå sig på det och verkligen veta hur det fungerar och då speciellt när man jobbar i formuläret. Det finns undermenyer m.m. och jag fick granska en massa olika kontroller.

Jag kommer att skriva på ett överpedagogiskt vis för att alla ska kunna hänga med. Eftersom detta är så komplext så gör jag det i två delar, ett där jag visar hur man skapar relationsdatabasen och ett där jag visar hur man skapar formuläret.

Maj 152010
 

Flattr this!

Sök och Ersätt funktionen i OpenOffice ser vid första anblicken enkel och litet torftig ut. Under skalet finns emellertid massor med möjligheter att göra exakta och avancerade sökningar. En sådan funktion är Likhetssökningar.

Du kommer åt funktionen genom att klicka på knappen Sök och Ersätt i Verktygsraden (eller CFTL+F). Det vanliga sökfönstret öppnas.

Klicka på knappen Fler alternativ.

Du kommer åt avancerade sökalternativ genom att klicka på knappen Fler alternativ...

Kryssa i alternativet Likhetssökning.

Klicka på knappen med de tre punkterna till höger.

Bocka för: Likhetssökning (1). Därefter klicka du på knappen med de tre punkterna (2).

Där kan du ställa in hur pass lika ord ska vara för att OOo ska hitta dem. Ju större variation du tillåter desto fler varianter av ord hittar du. Samtidigt ökar risken för att OpenOffice också hittar ord du inte letar efter. Hur stor variation man bör tillåta varierar från sökning till sökning. Standardvärdena med två tecken som variabel duger ganska långt.

I denna dialogruta kan du ställa in hur pass lika ord ska vara för att hittas.

Funktionerna är enligt OOo: inbyggda hjälp dessa:

Byt ut tecken: Ange antalet tecken i sökordet som kan bytas ut. Om du t.ex. anger 2 utbytbara tecken anses ”blast” och ”trast” vara liknande.

Lägg till tecken: Ange med hur många tecken som ett ord får vara längre än sökordet.

Ta bort tecken: Ange med hur många tecken som ett ord får vara kortare än sökordet.

Kombinera: Söker efter ett ord som matchar en kombination av inställningarna för likhetssökning.”

Genom denna funktion kan jag enkelt lokalisera alla förekomster av Adlerbeth, Adlerbeths Adlerbth (felstavning) och Adlerbethar i en text med en enda sökning.

Tips 1: De avancerade sökfunktionerna finns i alla moduler. Du kan alltså söka i kalkylark eller i en presentation och inte endast i texter i Writer.

Tips 2: Jag hade kunnat Skriva in ett ord i fältet Ersätt med. Då hade Adlerbeth ersatts med denna text. Ibland är det bättre att först göra en avancerad sökning utan att ersätta text för att se hur sökningen utfaller. Då man vet att den är OK skriver man in text i Ersätt med och klickar på knapparna Ersätt eller Ersätt alla.