• No results found

Instruktioner för projektuppgiften Sjukhusets sista del: Gränssnitt i Access

N/A
N/A
Protected

Academic year: 2022

Share "Instruktioner för projektuppgiften Sjukhusets sista del: Gränssnitt i Access"

Copied!
13
0
0

Loading.... (view fulltext now)

Full text

(1)

1

Instruktioner för projektuppgiften ’Sjukhusets’ sista del:

Gränssnitt i Access

Betrakta följade relationsdatabasstruktur á la Access (dvs relationer mellan tabeller visas BÅDE som främmande nycklar och via grafiska relationer):

Tabellerna avbildar den information som behövs för att stödja Kungliga Operans planering av föreställningar och uppsättningar. Närmare bestämt vill man ha stöd för att boka roller för dansare i olika uppsättningar. För varje roll-tolkning gör man även en bedömning av hur det gått för dansaren i fråga. Tabellerna är definierade men ännu inte fyllda med data.

Nu ska ett antal formulär tillverkas för att stödja processerna ovan. Man måste noga inspektera schemat och fundera över hur man tänker arbeta med informationen. Jämför även med de processer ni definierat i steg 2, vilken info berörs i dessa processer? Vilka tabeller ska man mata in värden i först? Vilka tabeller refererar till andra tabeller? När jag ska lägga in värden i dessa senare, vilken information om redan färdiga tabeller behöver jag? Ska all information läggas in via ett enda formulär eller ska man ha ett “huvudformulär” med olika menyer eller funktionsknappar?

Något förenklat kan man dela upp databasschemat i tabeller som “står för sig själva”, tex personer och balett-verk, och tabeller som refererar till andra tabeller, så kallade relationstabeller eller associations-tabeller. Det är absolut nödvändigt att FÖRST tillverka formulär för inmatning av värden i de självgående tabellerna som inte refererar till några andra. Här behöver man inte heller fundera så mycket över vilken information som ska läggas in, det är helt enkelt alla kolumnerna i tabellen som ska fyllas med värden:

(2)

FORMULÄR för en “autonom” tabell:

(Tex skapa ett formulär för att skapa tabellen VERK) Välj att skapa ett tomt formulär i Access:

1. Välj fliken “Formulär” och klicka på “Ny”: I dialogboxen som visas välj “Design” för att modifiera det tomma formuläret. Markera även VERK i den “drop-down”-lista som visas längst ner i Nytt formulär-dialogrutan.

2. Man ser att man är i designläget genom att är bakgrunden prickig. Det enda som är markerat är nu det tomma formuläret. Tre saker bör man sen alltid se till att de visas:

(3)

3

“Egenskaper”-fönstret, “Verktygslådan”-fönstret och “Fältlista”-fönstret. Allt tre sätts på och av under “Visa”-menyn överst i den generella menyraden i Access. Verktygslådan innehåller de saker man vill visa i formuläret, tex knappar, listor och tabeller. Fältlistan innehåller alla de kolumner man valt att basera formuläret på (i vårt fall kolumnerna i tabellen VERK).

Egenskaper innehåller flikar för att sätta just egenskaper (tex bakgrundsfärg, font etc.) men har även flikar för egenskaper som gäller händelser och databaskopplingar.

Nu ska detta formulär tillåta inmatning av nya VERK så man behöver kunna mata in BalettNamn och Upphovsman. Enklast möjliga sätt att göra detta på är att markera Textruta i Verktygslådan och rita den på formuläret, upprepa en gång till, vi behöver två st (Ballett och Upphovsman). Markera den ena Textrutan. Gå sen till Egenskaper-fönstret (om det inte är på så slå på det under Visa i Access-menyn). Under Format-fliken kan man sätta fonter och texter. Under Data-fliken kopplar man Textrutan till en kolumn i databasen, det görs genom att välja rätt kolumn under “Kontrollkälla”:

Textrutan har även en etikett som antingen namnges direkt i formläret eller markeras för sig och namnges via Egenskaper-fönstret: jag kallar min första etikett: “Ange balettnamn tack: “.

Så här ser det ut när de två inmatningsfälten är klara:

(4)

Nu är det bara att provköra formuläret: det görs genom att klicka på symbolen längst ut till vänster i menyraden under Access-menyn (under Arkiv) och resultatet ser ut som följer:

Notera två saker: I: Symbolen längst ut under Accessmenyn (precis under Arkiv) har nu ändrat sig till “Design” (turkos triangel). Vill man återvända till Design-läget är det bara att klicka där. II: Vi har fått två inmatningsfält och, gratis (via att vi kopplade fälten till rätt databas-kolumner), en knapp för att stega oss fram mellan poster (det har vi inga ännu) och för att uppdatera poster (del-knappen med högerpil plus stjärna längst till höger). Skapa några VERK, klicka på stjärnknappen för att uppdatera!

Vill man explicitgöra uppdateringen kan man även skapa en egen uppdateringsknapp. Det är bara att välja en Kommandoknapp från Verktygslådan, droppa den på formuläret, markera

“posthändelser” i vänstra delen av den dialogruta som visas och välja “lägg till post” i den högra delen av samma dialogruta. Notera dock att om man BÅDE klicka på sin egen UPPDATERA-knapp och sen på “stjärn-knappen” så kommer man att få felmedelande från databasen. Vilket är helt som sig bör, man ska ju inte kunna skapa två poster med exakt samma värden. Notera även att så fort man skapat en post så måste man akta sig så att man inte ofrivilligt uppdaterar den. Att stå i en post och ange nya värden = uppdatering. Att ställa sig “sist” i postlistan (görs genom att gå till sista post plus ett steg till) och sen mata in värden och trycka på “*” = skapa ny post!

Skapa på samma sätt ett nytt formulär för att mata in Dansare. (Vill man göra detta i samma formulär måste man komma åt dansar-tabellen förstås. Dumt nog kan man inte markera två eller fler tabeller när man startar sitt formulär. Man kan dock i förväg skapa så kallade frågor.

I sin enklaste form är dessa helt enkelt referenser till en hel tabell, gå in under fliken Frågor och tillverka en fråga, spara den under nåt talande namn. Sen kan man i Egenskaper-fönstret klicka på “Kontrollkälla” och där klicka på knappen längst till höger och välja “Fråga” och sen expandera denna till sin fråga). Men det är nästan att föredra att ha ett eget formulär för varje typ av inmatning. Då kan man sen skapa en fin huvudmeny som refererar till sådana saker som att skapa dansare, verk, etc.

Skapa sen

några VERK och DANSARE via de nya formulären. Tänk på att du har en nedre generisk knapp som stegar sig fram genom posterna. Att trycka på *-knappen om du står i post 1 innebär att du uppdaterar denna post. Vill du skapa ny måste du ställa dig sist i postlistan.

(5)

5

Formulär för “associations”-tabeller som refererar till icke-sammansatta nycklar

Här har vi minst två typer av tabeller: Sådana som bara har främmande nycklar mot en eller flera andra tabeller och inga egna egenskaper (dvs rena associationstabller, tex ROLLUPPSÄTTNING) och sådana som har främmande nyckel (nycklar) plus egna egenskaper (tex UPPSÄTTNING som ju refererar till VERK men även har egna egenskaper som tex “Teater”).

Som ett första exempel tänker jag mig nu att skapa ett formulär för att skapa UPPSÄTTNING:ar. Jag förutsätter då att vi redan skapat några stycken VERK.

1. Skapa ett formulär enligt ovan och basera formuläret på tabellen UPPSÄTTNING 2. Välj Fältlista från Visa-menyn.

3. Markera Balett i Fältlistan.

4. Välj en

Kombinationsruta

i Verktygslådan och placera den på formuläret.

5. Besvara frågorna som ställs i den dialogruta som visas: Ja, kombinationsrutan ska slå upp värden i en tabell, det är tabellen VERK som värdet ska komma ifrån, Välj vilka fält som ska visas från VERK, tex BalettNamn och Upphovsman. Du ska INTE dölja nyckeln i detta fall, klicka bort det. Nästa fråga är det just Balettnamn som är aktuellt, uppmaningen Lagra värdet i det här fältet ska besvaras med Balett. Ge kombinationsrutan någon bra etikett, tex “Ange balett: “. Slutför.

6. Rita även en Textruta på formuläret och ge dess etikett namnet: “Ange teaternamn tack: “.

Koppla kontrollkällan till kolumnen “Teater” enligt bekskrivningen tidigare i detta dokument.

7. Upprepa punkt 6 för “År” som också ska kunna matas in för UPPSÄTTNING:ar.

8. Provkör det hela och skapa några UPPSÄTTNINGAR!

9. Upprepa steg 1-8 för att skapa ROLL:er (notera att ROLL:er refererar till VERK, precis på sama sätt som UPPSÄTTNING).

(6)

Formulär för “associations”-tabeller som refererar till sammansatta nycklar

Nu vill jag skapa en ROLLUPPSÄTTNING (detta förutsätter att några VERK, DANSARE, ROLL:er och UPPSÄTTNING:ar redan tillverkats via de andra formulären):.

10. Skapa ett formulär enligt ovan och basera formuläret på tabellen ROLLUPPSÄTTNING.

11. Notera att det nu är TRE främmande nycklar som ska sättas, nämligen Verk+Teater å ena sidan (alltså mot UPPSÄTTNING), Verk+Roll (mot ROLL) och Dansare (mot Dansare).

Notera även att i två av fallen är de främmande nycklarna sammansatta (består av fler än en kolumn). Hur man ska förfara nu är inte givet. Problematiken bygger på att användaren inte kan mata in vilka värden som helst. Han kan inte låta dansare dansa i VERK som det inte finns någon uppsättning av. En DANSARE får inte ges en ROLL som tillhör en UPPSÄTTNING som inte tillhör det VERK som ROLL:en tilllhör. Och så vidare.

Visserligen kommer man att få felmeddelanden från databasen om man matar in fel men det är ju inte till så mycket hjälp om man inte vet vilka värden man kan eller borde mata in. Visst kan man klicka upp de redan färdiga tabellerna och köra cut’n paste, men helt lätt att veta vilka tabeller som är aktuella är det inte. Och en slutanvändare förväntas inte heller ha tillgång till dessa. På något sätt måste man alltså hjälpa användare att få tillgång till redan färdiga DANSARE, ROLL:er etcetera. För tabeller som refererar till enkla främmande nycklar har Access, som vi redan sätt, ett okomplicerat sätt att lösa problematiken, man använder Kombinationsrutor (se ovan). För sammansatta främmande nycklar blir det bökigare eftersom man bara kan skicka värdet i EN kolumn vidare från en Kombinationsruta. En enkel väg (som fungerar bäst om databaserna är små) att lösa det hela på är att skapa ett formulär med dels inmatningsfält (som är Kombinationsrutor med ETT ELLER FLERA fält i, vi behöver lika många Kombinationsrutor som vi har kolumner i samtliga främmande nycklar) och bredvid dessa, visa upp den information som behövs för att kunna skapa ROLLUPPSÄTTNING:ar. Dessa två delar ska givetvis vara kopplade så en ändring i den ena slår igenom i den andra.

12. För ROLLUPPSÄTTNING gör vi på följande sätt: Notera vilka kolumner som ska refereras till: det är Verk, Teater, Roll och Dansare. Dansare och Verk har egenskapen att de unikt identifierar rader. För dessa kolumner låter vi K-rutan innehålla EN kolumn och skickar denna kolumn vidare för att uppdatera motsvarnde kolumn i ROLLUPPSÄTTNING (se ovan). För övriga, dvs Teater och Roll låter vi K-rutan innehålla ALLA kolumner som behövs för att identifiera en rad, dvs Teater+Verk respektive Roll+Verk. I första fallet skickar vi Teater vidare för att uppdatera motsvarande kolumn i ROLLUPPSÄTTNING. I andra fallet skickar vi Roll vidare (via dialogrutorna när man skapar K-rutor).

13. Välj Fältlista från Visa-menyn.

14. Markera Verk i Fältlistan.

15. Välj Kombinationsrutan i Verktygslådan och placera den på formuläret.

16. Besvara frågorna som ställs i den dialogruta som visas: Ja, kombinationsrutan ska slå upp värden i en tabell, det är tabellen UPPSÄTTNING som värdet ska komma ifrån, Välj vilka fält som ska visas från UPPSÄTTNING, välj här BARA Balett. Nästa fråga är det just Balett som är aktuellt, uppmaningen Lagra värdet i det här fältet ska besvaras med Verk.

Ge kombinationsrutan någon bra etikett, tex “Ange balett: “. Slutför.

17. Upprepa 12-15 för även kolumerna Teater, Roll och Dansare (kolla i Fältlistan), men för Teater och Roll låter ni K-rutan innehålla även Verk:et (eller BalettNamnet om det är kallat så i ROLL respektive UPPSÄTTNING).

(7)

7

18. Slutligen vill man ju se slutresultatet (dvs alla ROLLBESÄTTNING:arna, inklusive den nya). Skapa därför en Listruta från Verktygslådan. Svara på frågorna, ja värdena ska tas från UPPSÄTTNING, häll över ALLA kolumner till listan, välj slutligen INTE att lagra värdet. Det behövs här en knapp som uppdaterar listan. Droppa därför en Kommandoknapp på formuläret och kalla den tex “Uppdatera Rolluppsätting”. Sätt knappens händelse till Formulärhändelser och välj “Uppdatera Formulär”.

19. Provkör det hela och skapa några ROLLUPPSÄTTNINGAR! Tänk som vanligt på att du har en nedre generisk knapp som stegar sig fram genom posterna. Att trycka på *-knappen om du står i post 1 innebär att du uppdaterar denna post. Vill du skapa ny post måste du som vanligt ställa dig sist i postlistan.

Ett alternativ till ovan om man tycker förfarandet är bökigt, är att skapa ett formulär med bara ett underformulär som refererar till HELA TABELLEN ROLLUPPSÄTTNING. Underformuläret väljs från Verktygslådan och relateras till ROLLUPPSÄTTNING (i detta fall är det bättre att INTE basera det ursprungliga formuläret på någon tabell överhuvudtaget). Nu kan man editera sin ROLLUPPSÄTTNING direkt och stega sig fram via de automatiska listknapparna längst ned. Notera dock att ni MÅSTE stödja en sådan här lösning med Listrutor till hjälp för användaren att se t ex vilka UPPSÄTTNINGAR, VERK och DANSARE det finns, så att man får hjälp att välja korrekta värden.

(8)

Huvudformulär

Nu kan det vara dags att skapa ett huvudformulär.

1. Skapa tomt formulär.

2. Droppa så många knappar du behöver, tex en för att tillverka DANSARE, en dito för VERK, en för att skapa UPPSÄTTNINGAR och en för att besätta

UPPSÄTTNINGARNA med dansare i roller, dvs ROLLUPPSÄTTNING.

3. För varje knapp så väljer du “Formulärhändelser” och sen att “Öppnaformulär” och väljer vilket formulär som ska öppnas.

4. Det var det hele, provkör rubbet. Den som vill kan ju sen fixa till snygga fonter, bakgrunder och bilder i mån av tid.

Kvar att testa: Skapa en bedömning av ett danstillfälle (dvs skapa formulär för att befolka tabellen DANSDOM). Det bökiga är att man vill mata in värden i en associationstabell som refererar till andra associationstabeller. Alltså ungefär samma problem som i SKAPA ROLLUPPSÄTTNING-formuläret. Här måste man nästan ha en hjälplista som visar redan färdiga ROLLUPPSÄTTNINGAR. Ett enkelt sätt att skapa olika delar i ett formulär (kan också göras genom att skapa underformulär) är att använda en “rektangel” från Verktygslådan så att olika funktioner separeras från varandra. Tex kan man omge sin hjälplista med en rektangel och lägga till en knapp som säger “Visa redan gjorda ROLLUPPSÄTTNINGAR”

Slutligen kan det vara värt att fundera mer på hur man vill jobba som användare med de olika formulären. Tex är det möjligt att man, medan man matar in ROLLUPPSÄTTNINGAR, vill skapa nya roller. Eller något liknande. Det är enkelt åtgärdat genom att skapa en knapp som refererar till just det formulär som skapar nya roller (på samma sätt som i huvudmenyn/formuläret). Tänk på att stödja sådana åtgärder med visuella listor som visar resultat av det ni gjort. Plus en knapp som uppdaterar listorna.

Sist och slutligen finns det femtielva andra sätt att göra liknande saker på i Access. Detta häfte tar upp lite snabb Access utan macros eller Visual Basic. Vill man, kan man göra mer, tex genom att använda frågor som refererar till värden i de olika “kontroll”-objekten i formulären (man kan tex referera till innehållet genom att kontrollera vad objekten har för id:n i Egenskapsfönstret och ange detta i sin SQL-kod. SQL tillverkas via “Frågor”-fliken i dess lite olika skepnader). Använd gärna färdiga guider, för tabeller som VERK och DANSARE går det snabbare och blir snyggare via sådana. För associationstabellerna används med fördel Kombinationsrutor och/eller underforumulär. Det finns även en “ForumulärGuide” som, i vissa begränsade fall, ger mycket hjälp när det gäller att relatera formulär med underformulär.

Tänk till slut på att definiera entity och referential integrity-regler via databashanteringssystemet (antingen Access eller ngt annat som ni kopplar till era formulär via ODBC, se nedan). Även andra regler implementeras med fördel via databasen (tex genom triggers). Undvik i mesta möjliga mån att implementera reglerna i gränssnittsformulären, det är både svårare och större risk att det blir fel där.

(9)

9

Skriva SQL-frågor i Access

När vi har populerat våra tabeller med en massa värden börjar det riktigt intressanta: att ställa frågor mot våra data. Access har en förkärlek till grafiska hjälpmedel, och det gäller även vid konstruktion av frågor, men med hjälp av dessa får vi främst två problem. För det första lär vi oss ingen SQL och för det andra får vi genererade frågor som innehåller en massa skräp och försvårar vårt arbete om vi slutligen bestämmer oss för att manuellt korrigera någonting.

Slutsatsen är att vi måste skriva våra frågor själva för att allt ska fungera så bra som möjligt.

1) Välj fliken ”Frågor” och tryck knappen ”Ny”

2) I f ö n s t r e t ” N y f r å g a ” s o m k o m m e r upp, markera alternativet ”Design” och välj sedan ”OK”.

3) Två nya fönster visas; ”Fråga1: Urvalsfråga” och ”Visa tabell”. Det här är nu bara ytterligare ett trick för att få oss att använda guider. Gå inte på det, utan stäng fönstret

”Visa tabell” och välj därefter knappen ”SQL” som du nu hittar längst uppe till vänster på verktygsmenyn. Grattis, du kan nu skriva in din nya SQL-sats i textfältet som visas. För att exekvera frågan används knappen: ”Kör” som hittas på vertygsfältet.

(10)

Koppla externa databaser till formulär i Access

Om man inte använder Access som databashanteringssystem för att definiera tabeller (och eventuellt även fyllt tabellerna med data via ett annat system) så går det ändå bra att koppla sina Accessformulär till detta externa system via ODBC-protokollet. Gör så här:

1. Starta Access

2. Välj “Hämta externa data” från Arkivmenyn och markera “Länka tabeller” i undermenyn.

3. Välj ODBC-databaser() i listan ovan.

4. Klicka på fliken Machine Data source och klicka sen på knappen “New”:

(11)

11

5. Klicka i endera radio-knappen i listan (User eller System, vilken som helst, beroende dels på om du bara vill ha tillgång till tabellerna själv och/eller behöver komma åt tabeller som ligger på andra maskiner. I sista fallet ska du välja System) och tryck på “Next”.

6. Välj nu den ODBC-driver du behöver. Här kan det möjligen gå åt pepparn om inte den driver som just din externa databas behöver finns installerad på maskinen. Lite förenklat är ODBC ett protokoll som anger hur SQL-databashanteringssystem ska utbyta information med andra program (som stöder ODBC). Varje databashanteringssystem (tex Oracle, DB2, SQL-Server, …) är skyldigt (om det vill hävda att det är ODBC- kompatibelt) att implementera ODBC-protokollet. Detsamma gäller (framförallt) de progam som vill kunna utbyta info med SQL-databaser via ODBC. Läser man i listan nedan finner man ODBC-program (drivers) för diverse olika databashanteringssystem- typer, jag väljer “IBM DB2 ODBC DRIVER” eftersom jag använt databashanterings- systemet DB2 för att skapa mina databaser. Finns ingen driver för din typ av databas måste du kontakta systemgruppen och be dem installera en sådan.

(12)

7. Klicka på “Next” och sen på “Finish” i nästa dialogruta.

8. I den dialogruta som nu visas ska du ange vilken databas som är aktuell att länka till. Du ska först fylla i ett egenvalt datasourcenamn och sen välja ett existerande alias från listan.

Gå sen vidare till punkt 11. Om inget i listan är det du söker så klickar du istället på “Add- knappen”.

9. Du får nu upp en så kallad wizard. Den här gången ska vi inte fullfölja hela wizarden utan bara utföra några steg för att fiska upp den databas vi söker. Klicka i radioknappen

“Search the network” och tryck sen på “Next”.

10. Expandera System-ikonerna och leta reda på “din” databas och markera den. Tryck nu INTE på “Next” utan “Finish” och sen “Close” i nästa Dialogruta (se nedan).

(13)

13

11. Vi är nu tillbaka i dialogrutan med fliken för “Machine data source”. Avsluta genom OK.

12. Slutligen väljer du ut vika tabeller från databasen du vill länka genom att klicka i dem i den dialogruta som visas, avsluta med OK.

13. Klicka sen på “tabell-fliken” i Access. De nya länkade tabellerna syns nu som vanliga tabeller fast med en speciell symbol, se nedan. Tabellerna kan nu användas som vilka som helst men var beredd att ange ditt DB2-lösenord (om du nu använde DB2) när du vill manipulera tabellerna via dina Access-gränssnittsformulär.

References

Related documents

Utifrån min erfarenhet som personlig assistent, har jag upplevt att det är svårt att utveckla den assisterade måltiden tillsammans med arbetskollegor när kunskap om matens

I resultatdelen redovisas det som framkommit i två teman, elevernas beskrivelser av det stöd som ges för deras svårigheter inom området läs- och skrivutveckling och hur eleverna anser

I detta avsnitt samlar vi de olika perspektiven med tillhörande relationer som kommit att utgöra det utfallsrum när det kommer till beskrivningskategorin kompetens. Under

Denna studie visar hur barns humanitära skäl för uppehållstillstånd förhandlas vid värderingen av medicinska underlag i asylprocessen.. Jag har visat hur statens maktut- övning

Hjärnkoll (Hjärnkoll, 2014), för att motverka negativa attityder kring psykisk ohälsa i stort. Dock har det inte undersökts med läkemedelsbehandling som huvudfokus för

Att få känna tillhörighet och ha kontakt med andra människor, att bli bemött med respekt och att få ett erkännande, att andra lyssnar på vad du har att säga är viktigt för

Subject D, for example, spends most of the time (54%) reading with both index fingers in parallel, 24% reading with the left index finger only, and 11% with the right

När jag ställde frågan om de någon gång har sökt hjälp eller stöd för att de är nära anhörig och vad som hade krävts för att de skulle ha sökt hjälp tidigare svarade IP