Examensarbete C-nivå Kunddatabas med fakturering



Relevanta dokument
Bilaga 3, Beskrivning av Runetab och RunerevA

Syfte Denna användarmanual beskriver hur databasen RunerevA används.

Introduktion till Winbas. excel till Winbas

Microsoft. Access Grundkurs.

Kopplingar via datalänk från Winbas till Excel samt Pivottabell 1 (13)

Mitthögskolan ITM Telefon Access. Laborationskompendium för grunderna i databasen Microsoft Access. Detta exemplar tillhör:

LATHUND ACCESS 2000 SV/EN

Fältnamn /Rubrik Fältnamn /Rubrik Fältnamn /Rubrik Fältnamn /Rubrik Data Data Data Data Data Data Data Data

Laboration 1 Introduktion till Visual Basic 6.0

Nyheter i Norstedts Tidbok Mattias Claesson Produktchef

Kom igång med TIS-Office

Har du tid att fakturera? Vi ska visa dig hur du kan få mer tid till annat än pappersarbetet!

Introduktion till MySQL

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Säljdag Intention AB

Tävl-adm 3.0. Tävlingsadministrativt system 1

Har du tid att fakturera? Denna presentation visar dig hur du kan få mer tid till annat än pappersarbetet!

SELLOUT. Version 2.5. eyescream information ab

PROGRAMUTVECKLINGSPROJEKT

Snabbstartsguide. Få hjälp Klicka på frågetecknet om du vill söka efter hjälpinnehåll.

Nytt betalsätt ISO Europastandard för SEB

Microsoft Access. Skapa en ny databas. Östersund Vårterminen 2005

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Landstinget i Östergötland

Kom igång med fakturering

Nytt betalsätt ISO Europastandard för Swedbank

Nytt betalsätt ISO Europastandard för Handelsbanken

Kom igång med Fakturaportalen!

Kom igång med Fakturaportalen!

Importera och använda en textdatabas i Excel

Release Notes. Vad är nytt i Easy Planning Programmet nu Vistakompatibelt. Ny html hjälpfil anpassad för Vista

TNK046 GIS - Databaser Laborationsuppgift 1 Introduktion till Microsoft Access 2007

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Härjedalens kommun

Lathund Registrering av försäljningsorder AGRESSO Logistik

Handbok. Handledning för administratör/-kontoinnehavare. Steg-för-steg-guide för att komma igång med ditt nya tidsredovisningssystem

ALEPH ver. 16 Introduktion

Nytt betalsätt ISO Europastandard för Nordea

Elsmart Användarmanual Nätanmälan för Installatörer

IT-system. BUP Användarmanual

Komma igång med 3L Pro Komma igång med 3L. Copyright VITEC FASTIGHETSSYSTEM AB

Microsoft Excel. Avancerade funktioner

Elsmart Användarmanual Nätanmälan för Installatörer

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

Lathund. Manuell fakturering i Tandvårdsfönster

Pengaktuellt. Nr september 2008

Mamut Enterprise Travel CRM

Registerhantering för Excel 2003

Vilken status har fakturorna i en bunt? Är fakturorna betalningsgodkända? Är fakturorna betalda?

ANVÄNDARMANUAL FAKTURERA

Uppdragsvyn 1. Så här lägger du till ett nytt uppdrag

18. Skriva ut inbetalningskort

Lathund Slutattestant. Agresso Self Service

Excel-guide. Introduktion

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Region Skåne landsting

Handledning för Fristående Svefaktura

Skattereduktion för husarbete

Husavdrag. Copyright FDT AB Köpmangatan LULEÅ. Försäljning Support Fax Hemsida

Snabbguide Visma Compact API Copyright Visma Spcs AB

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Sigtuna kommun

Logga in För att förenkla och ge bättre överblick över sin arbetstid har var och en som tidrapporterar sina unika inloggningsuppgifter.

Läsa dokument/information i advantum

Kundfakturors sändsätt

Registervård Fakturaspecifikation

Se till att posten är i Ändringsläge. Gå till rullgardinsmenyn under Föremål och välj Lägg in bild.

Manual för Typo3 version 4.2

Hantering Reklamationer. Version Torkelson Möbel AB

Arbetsgång för Husarbete

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Eskilstuna kommun

Release Notes. Vad är nytt i Easy Planning Nyheter

Efter inloggningen kommer du till applikationens huvudfönster

INSTRUKTION Specifikation E modul.doc

Version 1.9.2a. Tidrapportering med ctimesheet på Android

SKOLKORT. Användarmanual. Sida 1 av 17

GUIDE TILL SKAPA PROJEKT

Listan på egna rapporter inkluderar rapporter från TIDPLAN.MDB

FLEX Personalsystem. Uppdateringsanvisning

Kundreskontra. Kapitel 9 Kundreskontra Innehåll

Migrera till Access 2010

Denna uppdatering omfattar ett stort antal förbättringar och nya funktioner. Vi rekommenderar alla kunder att göra denna uppdatering.

Skattereduktion för husarbete

1.Lär känna MS SQL Observera. Tips. Förberedelse

Handledning. Exder efaktura för Svefaktura 1.0. Expert Systems 2010 Expert Systems kundtjänst: E-post: Tel:

Instruktion Ansökan om utbetalning Min ansökan

Handledning för Örebro Kommun

Ändringsanmälan. Anvisning för e-tjänsten Skolmjölk. Välj termin. Välj skola/förskola. Ändra en uppgift. Skapa ny skola/förskola

Hantering av timpriser

Introduktionsmanual till Design- / Utvecklarmodulen

Kom igång med fakturering

Presentkort. I grunder/inställningar/blankettval är det blankett nr 1 som används till presentkortsfaktura.

Fakturera. grupper. Skapa. kunder. Välj Fakturering Skapa ny Ny kund i menyn.

ROT/ RUT-avdrag. Innehåll

SIE4-läsaren En applikation utvecklad i Excel som läser SIE4 filer

1. Gå till redigeringsläge i Episerver, klicka på den sida som du vill ha ett formulär på. 2. Klicka på fliken Formulär.

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Hur man skapar samt tar bort relationer mellan fastighetstyngdpunkten och fastighetsytan.

ROT-avdrag. 1. Registrera Grunduppgifter

Nya Aquila använder senaste versionen av våra verktyg: UniPaaS 1.9 (tidigare Magic), samt Crystal Reports version 12 (idag kör ni på version 8).

Manual för attestering via nya webben

Cramo Business Support. användar handbok

CLRS-System. Användarmanual. CLRS-system. Fantastic Four 2011 Page 1

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Mölndals stad

Transkript:

Examensarbete C-nivå Kunddatabas med fakturering Ann-Sofie Karlsson 700123 abn01004@student.mdh.se Byggkonsulten Rune Norbäck AB, Mälardalens Högskola, Datavetenskap Fredrik Norbäck från företaget. Frank Lüders från MDH. 2004-10-03

Sammanfattning 1988 började företaget Byggkonsulten Rune Norbäck AB använda en kunddatabas. Den första versionen var primitiv och togs fram i Pascal. Inför millenniumskiftet flyttades databasen till Access. Nu vill företaget att databasen ska klara av fakturering av pågående projekt. De vill även kunna ta fram statistik och kunna söka efter tidigare arbeten. För att klara detta behövde databasen kompletteras med tidredovisning, fakturering, sökrutiner och statistikrapportering. För att kunna utveckla databasen samtidigt som företaget använde den, delades den upp i två databaser. En del med data i och en med funktionalitet, dvs användargränssnitt och beräkningar. Databasen med data i länkas sedan in i databasen med funktionalitet. Företagets önskemål medförde att nya tabeller fick skapas i databasen, även de existerande tabellerna fick kompletteras. Det tunga arbetet låg dock i att skapa ett nytt användargränssnitt med ny funktionalitet samt rapportgenerering av fakturor mm. Det är inte lätt att skapa en databas som är användarvänlig och användarsäker. Det krävs mycket arbete i bakgrunden för att se till att data som matas in är rätt. Detta underlättas till viss del i Access, men det blir i vissa fall svårare då Access tar hand om t.ex. sparande av data utan att ge utvecklaren möjlighet att styra vissa villkor. Ett annat vanligt problem är kommunikationen mellan utvecklare och kund/användare då dessa sällan pratar samma språk. Det behövs många omtag innan båda är överens om att resultatet är det önskade. 2

Förord Det har varit intressant och lärorikt att få utföra detta arbete. Jag vill passa på att tacka Byggkonsulten Rune Norbäck AB, som gett mig möjligheten till detta. Läsanvisning Denna rapport beskriver hur arbetet lagts upp och hur det utförts. I stället för att ta upp allt i rapporten har skrymmande delar flyttats över till två bilagor. Bilaga 2, Användarmanual, beskriver hur det är tänkt att arbete med databasen RunerevA. Här finns exempel på hur programmet ser ut och vad användaren bör tänka på i olika situationer. Bilaga 3, Beskrivning av Runetab och RunerevA, beskriver hur programmet är uppbyggt och är en referens för framtida förbättringar. 3

Innehållsförteckning 1 Introduktion... 5 1.1 Kort beskrivning av Access... 5 2 Problembeskrivning... 6 2.1 Tidredovisning...6 2.2 Fakturering... 6 2.3 Sökrutiner... 6 2.4 Statistikrapportering... 6 3 Arbete... 7 3.1 Tabeller och relationer... 7 3.2 Tidredovisning... 11 3.3 Fakturering... 11 3.4 Sökrutiner... 12 3.5 Statistikrapportering... 12 3.6 Användargränssnitt & funktionalitet... 12 3.6.1 Design av ett formulär... 13 3.6.2 Design av en formulärs klassmodul... 14 3.6.3 Design av en modul... 15 3.6.4 Design av en klassmodul... 15 3.6.5 Design av en rapport... 16 3.6.6 Design av en fråga... 17 3.6.7 Design av ett makro... 18 3.6.8 Visual Basic for Applications... Error! Bookmark not defined. 3.7 Programmets funktionalitet... 20 4 Analys... 21 5 Slutsatser... 22 6 Vidare arbete... 22 7 Källförteckning... 22 7.1 Internet... 22 7.2 Litteratur... 22 8 Bilagor... 23 8.1 Bilaga 1, Exempel på faktura... 23 8.2 Bilaga 2, Användarmanual... 24 8.3 Bilaga 3, Beskrivning av Runetab och RunerevA... 24 4

1 Introduktion Byggkonsulten Rune Norbäck AB har för tillfället fyra stycken anställda. Företagets arbetsuppgifter varierar men i huvudsak handlar det om konstruktion av hus eller andra byggnader. Ofta utgår de från en arkitektritning men ibland gör de även den. Företaget räknar på hållfastighet och tar fram byggritningar som sedan kan användas av byggarbetarna på plats. 1988 tog företaget fram ett kundregister, detta gjordes i Pascal då detta var ett naturligt val vid denna tidpunkt. Inför millenniumskiftet blev företaget tvunget att flytta över kundregistret till Access. Filhanteringen i det tidigare programmet skulle inte klara sorteringar och sökningar efter år 2000. I och med flytten till Access kompletterades databasen med projekthantering. Nu vill företaget även klara av tidredovisning, fakturering, sökrutiner och statistikrapportering i databasen. En ytterligare sak som företaget fakturerar är extra kopior (kopieringar) av konstruktionsritningarna. För att kunna utveckla databasen samtidigt som företaget använde den, delades den upp i två databaser. En del med data i och en med funktionalitet, dvs användargränssnitt och beräkningar. Databasen med data i länkas sedan in i databasen med funktionalitet. Företagets önskemål medförde att nya tabeller fick skapas i databasen, även de existerande tabellerna fick kompletteras. Det tunga arbetet låg dock i att skapa ett nytt användargränssnitt med ny funktionalitet samt rapportgenerering av fakturor mm. 1.1 Kort beskrivning av Access Microsoft Access är en databashanterare. I mitten av 1990-talet släppte Microsoft Access version 2. I och med den versionen gavs vanliga användare möjligheten att hantera relativt stora databaser som tidigare bara kunnat hanteras i sk. stordatorer. Utvecklingen av PCn och en förbättring av sökrutinen i Access 2 gjorde att en persondator nu hade kraft nog att hantera mycket större datamängder än tidigare. En annan fördel som snabbt gjorde Access populär var att användarna nu kunde skapa "Windowsbaserade" databaser/program. Tidigare databaser var uppbyggda kring enkla menyer och fält i en textterminalmiljö. Denna revolution fanns visserligen redan i Access 1 men med Access 2 så kunde vanliga användare nu göra stora och användarvänliga databaser. Access databaser är uppbyggda av tabeller, frågor, formulär, rapporter, makron och moduler. Tabellerna används till att lagra data. Frågorna är till för att söka efter poster, bygga upp formulär och rapporter med. På formulär byggs gränssnittet mellan användare och databas med knappar, textrutor mm. Rapporter är till för att visa upp och skriva ut information. Makron används till att köra kommandon och i moduler kan funktioner skrivas som nås av alla formulär. Formulär och rapporter har egna klassmoduler där kod kan skrivas in. Nu för tiden är programmeringsspråket som används VBA (Visual Basic for Applications). För att komplettera funktionaliteten i Microsofts produkter (Access, Word och Excel) används VBA (Visual Basic for Applications). I VBA går det att definiera egna funktioner och subrutiner, som löser specifika arbetsuppgifter. Det hörs av namnet att grunden till VBA 5

kommer från VB (Visual Basic). A:t kommer från att VB anpassats till produkten (Applikationen) t ex i Excel finns objekt för att hantera celler och dess egenskaper. Liknande anpassningar finns för Word och Access. Några exempel på VBA kod finns i Bilaga 3. 2 Problembeskrivning Ovan nämnda databas har fungerat bra och används i det dagliga arbetet för att hantera kunder och projekt/arbeten. Tidigare har företaget skrivit ut fakturor för hand, men de vill nu att detta ska hanteras med hjälp av databasen. Företaget vill även kunna ta fram statistik och söka efter tidigare arbeten. Detta medför att databasen måste kompletteras med: Tidredovisning. Fakturering. Sökrutiner. Statistikrapportering. 2.1 Tidredovisning De anställda ska sköta sin egen tidredovisning. Dvs var och en matar in vad de jobbat med och hur många timmar i databasen. De som sålt kopior och rest inom ett projekt anger även det. Det finns önskemål om att kunna ändra de anställdas timpris vid fakturering. Det kan vara fråga om övertid eller helgarbete. 2.2 Fakturering För att klara av faktureringen är det flera delar som måste lösas. Dels måste tidrapporteringen och projekthantering kompletteras med information om kostnader. Databasen måste även kompletteras med information om tidigare faktureringar och anbud. Vissa typer av projekt görs på bok och räkning dvs företaget får betalt vartefter de arbetar. Andra projekt görs som anbudsprojekt. I detta fall är kunden och företaget överens om priset för arbetet, kunden får i detta fall en eller flera delfakturor och en slutfaktura. Det ska även gå att ta fram tidigare fakturor för att se vad som är fakturerat på ett visst projekt. 2.3 Sökrutiner För att slippa hålla alla gamla projekt i huvudet vill företaget kunna använda databasen som ett primitivt CM system (Configuration Managment). Sökning i gamla arbeten kan spara mycket arbetstid vid nya arbeten. Dels kan fastigheter redan finnas ritade vilket spar arbete och dels går det att se hur företaget löst vissa problem åt samma kund tidigare. Alla företag har någon form av CM. Det kan innefatta registrering av inkomna brev till fullständiga rutiner för rapporter och ritningar. CM innefattar även arbetsrutiner för att följa t.ex. ISO 9000 certifieringen. 2.4 Statistikrapportering Företaget vill kunna se vilka som har varit de bästa kunderna och de bästa arbetena. Det är även intressant att se vilka projekt som varit minst lönsamma. 6

3 Arbete Examensarbetet gick ut på att ordna till tidrapportering, fakturor, sökrutiner och statistikrapportering. För att klara detta var det tvunget att komplettera databasen med nya tabeller och med mer information i de redan existerande tabellerna Kunder och Arbetsregister. Se Figur 1 nedan. Alla tabeller behöver inmatningsformulär dvs. en dialog som hjälper användaren att lägga till information och ändra viss information. Att ta bort information är i princip inte tillåtet. Det som i denna databas kan tillåtas att tas bort är ofakturerade tidrapporter. 3.1 Tabeller och relationer Figur 1. Tabellernas relationer Tabellerna och deras relationer finns beskrivna i figur 1 ovan. En relation kan göras på många sätt. I denna databas finns bara många till en kopplingar. Ex en kund kan ha många arbeten och många kontaktpersoner (se 1 - i figur 1). Om relationerna byggs upp på ett korrekt sätt förenklar detta konstruktionen av frågor och därmed formulär och rapporter. Exempel på en relation och referensintegritet finns beskrivet i figur 2 nedan. Referensintegritet är ett regelsystem som används i Microsoft Access för att säkerhetsställa att poster inte tas bort eller ändras oavsiktligt för relaterade poster. Kryssrutorna i figur X nedan styr hur en relation skall fungera. Mellan dessa tabeller tillåts uppdateringar av poster som annars skulle hindras av referensintegritetsreglerna. Kopplingarna mellan alla tabeller i databasen Runetab har samma referensintegritetsregel vald, som figuren nedan. 7

Figur 2. Kopplingens referensintegritet Företagets databas är uppbyggd av två databaser, vid namn Runetab och RunerevA. Där Runetab innehåller allt data dvs. tabeller och RunerevA all funktionalitet dvs. användargränssnitt och frågor mm. Detta gör att företaget kan fylla i data i tabellerna samtidigt som utvecklingen sker på annat håll. När databasen RunerevA har ett användargränssnitt länkas databasen Runetab in till RunerevA. Detta gör att alla frågorna med mera i RunerevA kommer åt tabellerna från Runetab. Länkningen sker vid uppstart av databasen RunerevA och fungerar så länge de båda databasfilerna ligger i samma katalog på hårddisken eller i nätverket. Se mer om hur länkningen sker vid uppstart i Bilaga 3 (4.4.1.2). Figur 3 nedan visar hur länkningen ser ut då databasfilerna ligger i katalog "C:\ByggRune\Rune\". Figur 3. Databasen Runetabs länkade tabeller. Nedanför beskrivs tabellerna i Runetab, vilka fält de har, vilken datatyp fältet har och vilket fält som är primärnyckel. 8

En primärnyckel består av ett eller flera fält och ger en unik identifikation av varje post i en tabell. I relationer används primärnycklar ofta för att referera till särskilda poster mellan tabeller. En primärnyckel kallas för sekundärnyckel när den refererar till en annan tabell. Tabellen Arbetsregister består av fälten: Fält Datatyp Arbetsnr Tal Primärnyckel Var Stad Kund Tal Specifikation Start Datum/tid Stop Datum/tid Arbetstyp Kontaktid Tal Anbudsumma Valuta Aconto Ja/Nej Projektledare Kreditfaktura Valuta AnbudBetald Ja/Nej Tabellen Kunder består av fälten: Fält Kundnr Kunden Organisationens namn Adress Ort Postnummer Kontakperson Telefon Telefax Anmärkning Datatyp Räknare Primärnyckel Tabellen Kontaktperson består av fälten: Fält KontaktID Kundnr Kontaktperson Datatyp Räknare Primärnyckel Tal Tabellen Tidrapporter består av fälten: Fält Datatyp Orderspecifikationsnr Räknare Arbertsnr Tal Primärnyckel 9

FakturanrDel FakturaDatum Arbetsbeskr ArbetsKopia Försäljningsdatum Kopiakvantitet Kvantitet Enhetspris Namn Fakturerad Kopia Ant mil Enhetspris mil Specifikation Betald när Valdkreditfaktura KreditDatum Tal Datum/tid Datum/tid Tal Tal Valuta Ja/Nej Ja/Nej Tal Valuta Datum/tid Ja/Nej Datum/tid Tabellen Namntabell består av fälten: Fält Datatyp Namn Primärnyckel Standard timpris Valuta Tabellen Kopietyper består av fälten: Fält Datatyp Kopietypnr Räknare Produkt Primärnyckel st pris Valuta Kvar i lager Tal Tabellen Aconto består av fälten: Fält Nummer Anbud Arbetsnr FakturanrDel Fakturatext Belopp Fakturerad FakturaDatum Datatyp Räknare Primärnyckel Valuta Tal Tal Valuta Ja/Nej Datum/tid Tabellen Bensinpris består av fältet: Fält Datatyp 10

Bensinpris Valuta Primärnyckel Tabellen Antal består av fältet: Fält Datatyp Antal Tal Primärnyckel Tabellen Arbetsregister innehåller pågående och avslutade byggprojekt. I Aconto sparas alla fakturerade fakturor på anbudsprojekt. I Bensinpris lagras det nuvarande bensinpriset. Namntabell innehåller information om företagets anställda och deras timpris. Företagets alla kunder finns lagrade i tabellen Kunder som är kopplad till tabellen Kontaktperson. Olika projekt kan ha samma kund men olika kontaktpersoner. I Kopietyper finns de olika typerna av kopior som företaget använder sig av och dess pris. I tabellen Tidrapporter lagras alla timmar, sålda kopior, resor samt när de skett i ett projekt. Här syns även om dessa är fakturerade eller inte, om de är kreditfakturerade eller inte och när de är betalda. Tabellen Antal innehåller siffror och används i kombinationsrutor. Kombinationsrutor är verktyg som finns till formulären. Tabellen Kredit 3.2 Tidredovisning De anställdas arbetstid sparas i tabellen Tidrapporter när de utför sin tidredovisning. Detta kopplas automatiskt ihop med det projekt de arbetat med, arbeten finns sparade i tabellen Arbetsregister. Vid tidredovisningen anges även hur mycket en anställd rest inom arbetet. Tabellen Bensinpris används här för att räkna ut den totala resekostnaden. Tabellen Namntabell används här för att leta fram den anställdes timpris. Summa kostnader för arbetet beräknas med frågor och beräkningar i samband med faktureringen. Summa timmar och mil för arbetsdagen visas för den anställde när tidredovisningen är klar för den dagen. Det går att söka efter fakturerade och ofakturerade tidrapporter. Detta är av stor vikt vid fakturering och sökning av fakturerade arbeten. Vid löneutbetalningar kan en rapport skrivas ut om hur mycket en anställd har jobbat under en viss månad. Där visas hur många timmar en anställd arbetat under en dag och med vilket arbete. Sedan summeras den anställdes arbetade timmar. 3.3 Fakturering Vid fakturering av ett arbete summeras de ofakturerade tidrapporterna och kopiorna som finns i tabellen Tidrapporter sedan summeras resekostnaderna och läggs till. Uppgifter om resekostnader finns också i tabellen Tidrapporter. Normalt sker faktureringen en gång per månad och projekt. Om det inte arbetats mycket på ett projekt under en månad kan faktureringen skjutas upp till nästa månad. När fakturan är utskriven blir tidrapporterna, resor och kopiorna markerade som fakturerade. Vid varje fakturering skapas en delfaktura. Delfakturans fakturanummer ökas på vid varje fakturering och minskas då faktureringen ångras. I samband med ångerfunktionen avmarkeras alla fakturerade tidrapporter och kopior. Den utskrivna fakturan är indelad i fem kolumner: Se Bilaga 1, Exempel på faktura Månad, som ett visst arbete utförts. 11

Namn på dem som utfört arbetet. Antal (timmar, mil). Á pris på aktuellt arbete. Total kostnad. Information om sålda kopior finns samlade på fakturans nedre del. Längst ner på fakturan finns de totala kostnaderna summerade samt uppgifter om momsen. Det går även att lägga till information om tidigare delfakturor. Det går att skriva ut kopior på fakturan efter faktureringen. Kreditfakturering innebär att företaget betalar tillbaka pengar till en kund. Det går att välja vilka timmar eller kopior som skall krediteras. Då görs fälten för timpris och enhetspris till negativa i tabellen Tidrapporter. Detta pga att vid beräkningar, som t ex bästa kund ska kunna ge rätt resultat. Även datumet då kreditfakturan gjordes sparas i tabellen Tidrapporter. Vid skapande av ett nytt arbete kan det anges att arbetet är ett sk. anbudsprojekt. Anbudsprojekt sparas också i tabellen Arbetsregister, men vid fakturering av anbud läggs dessa fakturor till i tabellen Aconto. Vid faktureringen anges hur mycket som skall faktureras vid detta tillfälle. Om totalsumman av acontofakturorna överskrider anbudet så meddelas detta vid faktureringen. Även här används en fakturanummer del vilken ökas på vid varje fakturering av ett anbudsprojekt. 3.4 Sökrutiner Vid sökning efter arbeten kan anställda välja vilket sökord de vill använda till sökning. Användare har att välja mellan sökorden arbetsnummer, vart arbetet ligger, vilken stad och till vilken kund arbetet tillhör. När den anställde klickar på knappen Sök visas resultatet av sökningen upp. Vid sökningen skapas frågan efter de sökord som valdes, om frågan ger poster visas resultaten annars meddelas det om att inget resultat hittades på sökordet. 3.5 Statistikrapportering Vid den statistiska rapporteringen för bästa kund summeras produkten av antal mil körda och bensinpriset, produkten av antal timmar jobbade och till vilket pris och produkten av antal sålda kopior och till vilket pris. Sedan visas kunden med den högsta summan överst i formuläret. Detsamma gäller för rapporteringen för bästa arbete, med då visas summorna för arbeten. 3.6 Användargränssnitt & funktionalitet Användargrässnitt byggs upp med hjälp av formulär där det placeras verktyg som knappar, textrutor mm. Detta görs i designläge för formulär. Till varje formulär och verktyg finns egenskaper som nås via egenskapshanteraren. Information som visas i formulär erhålls från frågor. Frågorna kopplas till formulären via egenskapen Datakälla. Rapporter byggs upp på liknande sätt. I rapporter är det viktigt hur posterna visas och skrivs ut. I kapitlen 4.6.1-4.6.7 visas och förklaras de delar som finns att jobba med för att bygga ett användargränssnitt. Viktigt att tänka på vid arbete med formulär, frågor mm är att komprimera databasen ibland. Annars finns det risk att databasen blir fragmenterad och tar 12

upp onödigt mycket diskutrymme. När databasen komprimerats tar databasfilen mindre plats. Komprimering ligger i menyn Verktyg/Databasverktyg/Komprimera databas. 3.6.1 Design av ett formulär Figuren nedan visar ett formulär i designläge. Till vänster finns de verktyg som kan placeras på formuläret. I nedre högra delen av figuren visas egenskapshanteraren. Där går det att sätta formulärens och övriga verktygs egenskaper. I formulärets egenskap Datakälla sätts den fråga in som formuläret ska bygga på, dvs formuläret ska visa informationen från frågan. Beroende på om formuläret tillåter redigering av fälten och hur frågan är uppbyggd, kan ändring av information göras. Om frågan är uppbyggd med uttryck tillåts inte redigering av fälten. I och med detta kan det behövas andra formulär där redigering kan göras. När tabeller är kopplade med en 1 - koppling kan objektet Recordset behövas. Ta till exempel tabellerna Kunder och Kontaktpersoner. Om formuläret bara ska visa kunder kan inte frågan som formuläret är uppbyggd av innehålla båda tabellerna, för då visas en kund flera gånger beroende på hur många kontaktpersoner den kunden har. Om nu detta formulär är till för att lägga till kunder och kontaktpersoner kan objekt av typen Recordset behövas. Recordsetet används för att få tag på tabellen Kontaktpersoner i och med att den informationen inte finns i formuläret. Med detta Recordset kan sedan nya kontaktpersoner läggas till för den aktuella kunden. Det finns mer beskrivning objekt av typen Recordset nedan. Detta var en lösning till ett av de många problem som fanns i examensarbetet. Figur 4. Design av ett formulär 13

Figuren ovan visar designen av formuläret Arbeten. Formuläret Arbeten används till att söka och skapa nya arbetsprojekt. 3.6.2 Design av ett formulärs klassmodul I ett formulärs klassmodul finns alla händelser till formuläret och formulärets verktyg. Vid varje händelse kan kod skrivas för vad som ska ske vid just den händelsen. Det går även programmera egna subrutiner och funktioner. Dessa kan göras till typen Private och Public. Typen Private innebär att subrutinen eller funktionen bara kan nås av detta formulär. Subrutiner eller funktioner med typen Public kan nås av alla formulär och moduler. Typerna Private och Public gäller även för variabler. För att få tag på information som formuläret inte är uppbyggd av kan objekt av typen Recordset användas. Ett Recordset objekt innehåller poster från en tabell eller poster från en fråga. Till detta behövs även ett objekt av typen Database. Först sätts objektet av typen Database att peka på den tänkta databasen. Sedan sätts objektet av typen Recordset att peka på en tabell eller fråga för att hämta information från den tänkta databasen. Ex: Hämta information från tabellen Kunder i den databas som är öppen Dim tblrec as Recordset Dim db as Database Set db= CurrentDb Set tblrec=db.openrecordset("kunder", dbopentable) Figur 5. Design av ett formulärs klassmodul 14

Figuren ovan visar formuläret Tidrapporters klassmodul. Formuläret Tidrapporter används till att registrera arbetstimmar och antalet resta mil i arbetet. 3.6.3 Design av en modul Moduler kan användas till att skriva funktioner och variabler som nås utav databasens alla formulär. Funktioner som ligger i en modul kan nås av makron med instruktionen KörBasickod. Skillnaden mellan en modul och en klassmodul är att en klassmodul är kopplad till ett specifikt formulär och koden i en modul kan användas från alla formulär. Figur 6. Design av en modul Figuren ovan visar hur det kan se ut vid arbete med modul. Figuren visar modulen ModulMaxim, som används för att maximera formulär, rapporter samt ge programmet ny titel. 3.6.4 Design av en klassmodul Klassmodul är en modul som innehåller definitionen för ett nytt eget objekt. När en ny instans skapas av en klass så skapas det nya objektet. De procedurer som har definierats i modulen blir egenskaper och metoder för objektet. Klassmoduler i Microsoft Access existerar antingen fristående eller tillsammans med formulär och rapporter. 15

Figur 7. Design av en klassmodul Figuren ovan visar hur det kan se ut vid arbete med en klassmodul. Figuren visar klassmodulen CloseCommand, som används för att avaktivera Access stängknapp. I modulen ModulMaxim används ett objekt av typen CloseCommand för att avaktivera knappen. Det är knappen högst upp till höger i figuren. Detta gjordes för att denna knapp saknar händelse, dvs det går inte att kontrollera vad som gjorts innan programmet stängs. 3.6.5 Design av en rapport En rapports design ser ungefär likadan ut som ett formulärs design. Rapporter har också sin klassmodul, men rapporter har inte precis samma händelser som ett formulär har. 16

Figur 8. Design av en rapport I rapporters designläge finns dock sortering och gruppering som inte finns i formulärs designläge. Detta används till att sortera och gruppera informationen från frågan som rapporten är uppbyggd av, så att utskriften blir bra. I rapportens Utskriftsformat under Arkiv menyn kan marginaler, sidinställningar och layoutalternativ bestämmas. I textrutor kan uttryck ges vilka kan t ex. summera posternas fält, vilket är användningsbart i rapporter såsom fakturor. Figuren ovan visar designen av rapporten rptfaktura. Rapporten rptfaktura används vid utskrift av fakturor. 3.6.6 Design av en fråga Tabeller som används i en fråga läggs till i frågans designläge. Tabeller som inte är kopplade till varann kan kopplas i frågans design. Om kopplingen inte godtas ges ett meddelande. Det går att göra uttryck på fälten, ge villkor till fälten och sortera fälten. I databasen RunerevA har 17

bara urvalsfrågor använts. Det finns flera olika typer av frågor t ex uppdateringsfrågor, tilläggsfrågor och borttagningsfrågor. När frågorna är färdiga bildas motsvarande SQL kod. Det går även att skriva frågorna direkt i SQL kod. SQL (Structured Query Language) är ett språk som ofta används i frågor mot databaser, framförallt i stora databaser. Figur 9. Design av en fråga Figuren ovan visa frågan som rapporten rptfaktura är uppbyggd utav. Två exempel på att summera fältet tal i tabellen Nummer: Första exemplet använder sig av en for-loop. Här stegas posterna igenom och summeras vartefter. Dim tbltal As Recordset Dim db As Database Dim i, sum As Integer Set db = CurrentDb Set tbltal = db.openrecordset("nummer", dbopentable) For i = 0 To tbltal.recordcount - 1 sum = sum + tbltal("tal") tbltal.movenext Next Andra exemplet använder sig av en fråga som har skapats i SQL kod. I denna fråga används funktionen Sum, vilken summerar fälten. Summan ges sedan till ett fält döpt till Summa. Dim SQL As String Dim tbltal As Recordset Dim db As Database Set db = CurrentDb SQL = "SELECT Sum(Nummer.tal) AS Summa FROM Nummer;" Set tbltal = db.openrecordset(sql, dbopendynaset) I och med dessa exempel kan det sägas att det finns många sätt att jobba i Access. Speciellt med objektet Recordset. 3.6.7 Design av ett makro Ett makro är en uppsättning instruktioner som var och en utför en viss operation, t ex öppnar ett formulär. Med makron automatiseras vanliga uppgifter. 18

Figur 10. Design av ett makro I makrots design kan olika instruktioner läggas till. Villkor kan även läggas till för var och en av instruktionerna. Exemplet i figuren ovan är makrot Autoexec. Makron med namnet Autoexec körs automatiskt när databasen öppnas. Detta makro använder sig av villkor. Om funktionen uppdateralankar returnerar ett falskt värde körs instruktionen Meddelanderuta. Det är detta makro som ordnar länkningen av databasen Runetab med funktionen uppdateralankar. Om uppdateralankar returnerar ett falskt värde misslyckades länkningen och ett meddelande ges. 19

3.7 Programmets funktionalitet Här beskrivs i korthet vad som kan göras i programmet. Mer om detta finns i Bilaga 2, Användarmanual. Hur formulär, tabeller och funktioner mm är konstruerade finns beskrivet i Bilaga 3. För att examensarbetet skulle bli komplett fick flera formulär skapas och gamla ändras. I figur 10 nedan visas programmets huvudmeny. Härifrån styrs allt arbete. Figur 11. Formuläret Meny Knapparna öppnar nya formulär. Knapparnas namn antyder vad som kan göras i dessa formulär. Nedan beskrivs i korthet vad som går att göra i databasen. Avsluta: Logga in: Timpriser, Milersättning och Kopietyper: Bästa Kund och Bästa Arbete: Kopieringar och Tidrapporter: Arbeten och Kunder: Sök: Skriv ut tidrapport: Fakturera och Fakturera Anbud: Fakturerade och Fakturerade Anbud: Betalda fakturor: Avslutar programmet. Används till att logga in med nytt namn. Visar upp och hanterar aktuell tabells information. Tar fram statistik. Används till att fylla i antal timmar arbetade och antal sålda kopior. Används till att skapa nya och söka efter arbeten och kunder. Tar fram sökresultatet. Används för utskrift av anställdas arbetade timmar. Används vid fakturering. Tar fram de fakturerade delfakturorna. Visar upp de betalda fakturorna. 20

4 Analys Ett vanligt problem är kommunikationen mellan utvecklare och kund/användare då dessa sällan pratar samma språk, men det största problemet är att få programmet tillräckligt användarvänligt. I Access formulär uppdateras databasen när formulär stängs eller vid förflyttning till en annan post. Om inte användare fyller i alla väsentliga fält vid skapande av ny post ges svårtydda felmeddelanden när formuläret stängs. På grund av denna anledning skapades en Spara knapp. I Spara knappens händelse kontrolleras att alla fält som behövs fyllas i för referensintegritetens skull är ifyllda. Om användare inte klickar på knappen Spara kan användare inte lämna formuläret, förutom om knappen Ångra klickas. Knappen Ångra kan användas när en ny post har skapats. Det fanns också problem vid skapande av rapporter. Frågan som en rapport är uppbyggd av var ett av problemen. Att göra grupperingarna rätt i rapporten så att informationen sorteras och skrivs ut bra var ett annat. Även att få plats med informationen rapporterna och subrapporterna var svårt. Hur det löstes finns beskrivet i Bilaga 3. Att få formulär att visa information, sker med frågor. Men att få frågorna att ta fram rätt information är svårt. Om t ex frågorna var uppbyggda med uttryck kunde dessa poster inte ändras. Då fick ett annat formulär skapas i vilket det gick att ändra på värdena. Ett exempel är vid fakturering, där det ska gå att ändra på en anställds timpenning innan fakturan skrivs ut. På grund av detta skapades ett formulär för att söka poster. Detta formulär är uppbyggd av en fråga, som inte innehåller något uttryck och i detta formulär går det att ändra på timpenningen och antalet arbetstimmar. Även vid registrering av kopior skapades ett liknande formulär av samma orsak. Det krävs extra arbete för att få ett databasprogram att se ut och fungera som ett vanligt program. Det ska t ex inte gå att pendla mellan formulär utan att först stänga det aktiva formuläret. T ex vid skapandet av ett nytt arbete ska det aktiva formuläret stängas innan ett nytt formulär kan öppnas. I detta fall är det löst med två knappar Spara och Stäng. Vid knappen Spara kontrolleras om den anställde har fyllt i alla fält som behövs och om posten sedan är sparad går det att stänga formuläret. Vid första försöket att lösa detta problem maximerades formulären, men även om egenskaperna för minimera och maximera knapparna avaktiverats kom en minimeraknapp fram. I och med detta kunde användare minska ned formuläret och gå vidare till andra formulär. Maximeringen av formulär fick lösas med APIfunktioner som hittades ute på Internet. API, Application Programming Interface, är funktioner, meddelanden, datastrukturer, datatyper och instruktioner som operativsystemet använder för att t ex styra hur ett program ska se ut och fungera. Ett annat problem var att RunerrevA kunde stängas med knappen längst upp till höger. Till denna knapp finns ingen händelse, där kontrollering om vad som gjorts innan stängning kunde göras. På grund av detta skapades en klassmodul, CloseCommand, som skapar ett objekt som tar hand om aktivering och avaktivering av stängknappen. Klassmodulen CloseCommand använder sig också av API-funktioner. Stängknappen avaktiveras när förhandsgranskningen av rapporter öppnas, pga att en del fakturor faktureras innan utskrift och om utskrift inte sker ska dessa fakturor kunna avfaktureras. Detta görs menyn Arkiv/Stäng om så behövs. Hur menyer byggs upp i Access går att läsa i Bilaga 3. 21