OPTIMERING OCH PROGRAMMERING AV TIMEREPORT



Relevanta dokument
Stored procedure i ASP.NET

Stored procedure i ASP.NET

ADO.NET Murach Kapitel 17-20

ASP.NET Thomas Mejtoft

Administrationsmanual ImageBank 2

Lab 6: ASP.NET 2.0 Providermodellen

Innehåll. Dokumentet gäller från och med version

Laboration 1 Introduktion till Visual Basic 6.0

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

VAD GÖR DU / VEM ÄR DU?

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Programmering B med Visual C

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Nya webbservern Dvwebb.mah.se

IT-system. BUP Användarmanual

AVCAD 4.0 för Windows

Skapa din egen MediaWiki

Komponenter med COM (och COM+/VC++ 7.0)

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Manual för din hemsida

Uppdatera Easy Planning till SQL

NetBeans 7. Avsikt. Projektfönster

Telia Connect för Windows

NetBeans 5.5. Avsikt. Projektfönster

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Administrationsmanual ImageBank 2

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

FLEX Personalsystem. Uppdateringsanvisning

Inledande programmering med C# (1DV402) Introduktion till C#

LEX INSTRUKTION LEX LDAP

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Storegate Pro Backup. Innehåll

Klientprogrammering mot databaser

Mål med lektionen! Repetera och befästa kunskaperna.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

NU! NU! Bygg en webbplats NU! Bygg en webbplats. Swedish Language Edition published by Docendo Sverige AB. Bygg en webbplats.

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.

Hemsideutveckling för Anjool AB

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Introduktion till MySQL

Att koppla FB till AD-inloggning

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Installation/uppdatering av Hogia Personal fr.o.m. version 13.1

Introduktion till Winbas. excel till Winbas

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

WP-Edit. Robin Larsson Martin Davik. Examensarbete, grundnivå, 15 hp Datavetenskap Internetteknologprogrammet

Instruktioner för att skapa konton i MV-login

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

ALEPH ver. 16 Introduktion

Räkna med ASP.NET MVC 3

Language Integrated Query, LINQ, och databaser

ASP.NET Web Forms. Copyright Mahmud Al Hakim Vad är Web Forms?

PROGRAMUTVECKLINGSPROJEKT

LVDB i GEOSECMA. Innehåll. Inledning. Produkt: GEOSECMA Modul: LVDB Skapad för Version: Uppdaterad:

KAP 18 SQL SERVER AGENT

Kunskapsbank ICARUS DB

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

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

Webbsidor och databaser i ASP.NET

Nintex Workflow 2007 måste installeras på Microsoft Windows Server 2003 eller 2008.

VAD GÖR DU / VEM ÄR DU?

Utveckling av mötesplats på Internet

Att koppla FB till AD-inloggning

INSTALLATIONSINSTRUKTIONER FÖR VIDA INNEHÅLL

Startanvisning för Bornets Internet

ÖVERVAKNING AV SQL SERVER

Manual - Storegate Team

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

INTRODUKTION TILL JDBC

1.1 Inbjudan Inloggning Viktigt att tänka på 2

Introduk+on +ll programmering i JavaScript

Installationsanvisningar

Installationsanvisningar

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Uppstart. Agda Drift

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

ENTRÉ DOKUMENTHANTERING...

Workshop IBA internet based assessment

Boss installationsmanual förberedelser

Installationsanvisning Boss delad databas

Webservice & ERP-Integration Rapport

DOTNETNUKE SKOLNING Skapat: den 20 november 2012

Innehåll. MySQL Grundkurs

Övningar i SQL. SQLAccess.doc Ove Lundgren

Nyheter i. Solen Administration 6.6

Vision WEB Komma igång med Electrolux Webbokning Windows Server 2012 R2 8/31/2017

DGC IT Manual Citrix Desktop - Fjärrskrivbord

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Användarmanual 1.x. RIW Software Techn AB telefon: fax:

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

12 Webb och kurshemsidor

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Starta MySQL Query Browser

Transkript:

Examensarbete 10 poäng C-nivå OPTIMERING OCH PROGRAMMERING AV TIMEREPORT Reg.kod: Oru-Te-EXD083-D108/04 Jens Nilsson Dataingenjörsprogrammet 120 p Örebro vårterminen 2004 Examinator: Jack Pencz OPTIMIZATION AND PROGRAMMING OF TIMEREPORT Örebro universitet Örebro University Institutionen för teknik Department of technology 701 82 Örebro SE-701 82 Örebro, Sweden

Sammanfattning Den här rapporten beskriver ett examensarbete utfört åt Headlight AB. Arbetet bestod av att ta fram ett tidrapporteringssystem bestående av en applikation och en databas som skulle innehålla tidrapporter och information om de anställdas arbetstider på företaget. Anledningen till det var att de snabbt och enkelt vill kunna rapportera hur de har arbetat i veckorna. Arbetet behandlar två olika delar. Den första delen är skapandet av en databas med olika procedurer för att registrera poster som kan behandlas med applikationen. Den andra delen bestod av skapandet av applikationen i Microsoft Visual Studio.NET. Tekniken som används här är till för att skapa serverbaserade webbapplikationer. Resultatet blev webbapplikationen TimeReport som hanterar de funktioner som önskats. Detta arbete ledde fram till en databas som följer företagets önskemål samt en applikation som hanterar större delen av informationen som kan lagras i databasen. Summary This thesis work consist of making a complete database for Headlight AB, that would store information about time reports and information about the employees worked time at the company. The reason for this is that they then could quick and easy report how they have worked during the week. This thesis work consists of two parts. One part is to construct an application in Microsoft Visual Studio.NET. The techniques in Microsoft Visual Studio.NET have been used is to create server based web applications. The other part was the database implementation with different procedures to be able to register posts that can be handled by the application. The result is a web application called TimeReport that handle the functions that have been desired. The work has led to a database which follows the company s wishes and also an application that handles most of the information that can be stored in the database. 1

Förord Denna rapport är ett resultat av ett 10 poängs examensarbete på C-nivå som genomförts perioden mars - slutet av maj år 2004. Arbetet har utförts på Headlight AB i Örebro. Jag vill passa på att tacka Dan Larsson, Daniel Janson, David Johansson och alla på Headlight AB som hjälpt till under arbetets gång. Intrycket som jag har fått av företaget är att de anställda hjälper varandra i vått och torrt. Om någon som stöter på problem så hjälps man åt för att hitta en bra lösning. Tekniskt kunnande i samband med god företagsanda gör detta till ett företag som man får väldigt gott intryck av. Dessutom vill jag även passa på att tacka min handledare vid universitetet, Martin Persson och Jack Pencz som är examinator. 2

Innehållsförteckning 1 Inledning... 6 1.1 Bakgrund...6 1.2 Syfte... 6 1.3 Mål... 6 1.4 Läsanvisningar... 7 1.5 Förkortningar och förklaringar... 7 2 Krav på TimeReport... 8 2.1 Allmänna krav... 8 2.2 Inloggning...8 2.3 Förstasidan...8 2.4 Tidrapportering... 8 2.5 Projekt... 9 2.6 Kunder... 9 2.7 Administration... 9 2.8 Oprioriterade krav... 10 2.9 Övrigt... 10 3 Verktyg... 11 3.1 SQL Server... 11 3.1.1 Verktyg i SQL Server... 12 3.2 Microsoft Visual Studio.NET... 13 3.3 C#... 13 3.4 Webbspråk... 14 3.4.1 HTML... 14 3.4.2 ASP.NET... 14 3.5 ADO.NET... 14 4 Metoder... 15 4.1 Skapa en Databas med SQL Server... 15 4.2 Skapa en ASP.NET-applikation i Visual Studio.NET... 16 4.2.1 Webbformulär... 16 4.2.2 User control... 16 4.3 Hämta data ur en databas... 17 4.3.1 Data Provider... 17 4.3.2 Lagrade procedurer... 20 4.3.3 Projekt och lagrade procedurer i TimeReport... 21 4.4 Hopkopplade Tabeller... 22 4.5 Sessionsvariabler... 23 4.5.1 Undvika sessionsvariabler... 24 4.6 JavaScript... 24 5 Applikationen TimeReport... 25 5.1 Förstasidan-Default... 25 5.2 Inloggning... 26 5.3 Administration... 26 5.4 Användare... 27 5.4.1 Hämta-funktionen... 29 5.5 Attestering... 29 5.6 Kunder... 30 5.6.1 Redigera Kund... 30 3

5.6.2 Ny Kund... 31 5.7 Projekt... 31 5.7.1 Nytt Projekt... 32 5.7.2 Hämta kund... 32 5.7.3 Hämta Projektansvarig... 33 5.7.4 Projektmedlemmar... 33 5.7.5 Aktiviteter... 34 5.7.6 Ny aktivitet... 34 5.8 Tidrapporter... 35 5.9 Hjälpen... 36 6 Genomförande... 37 6.1 Inledning... 37 6.1.1 Ramverket... 37 6.2 Användare-sidan... 37 6.2.1 Redigera användare... 38 6.2.2 Ny användare... 38 6.2.3 I ny användare och redigera användare... 39 6.2.4 Ta bort användare... 39 6.3 Kunder-sidan... 39 6.3.1 Redigera Kunder... 39 6.3.2 Ny Kund... 39 6.3.3 Ta Bort Kund... 40 6.4 Projekt-sidan... 40 6.4.1 Nytt Projekt... 40 6.4.2 Hämta Kund... 40 6.4.3 Hämta Projektansvarig... 40 6.4.4 Projektmedlemmar... 40 6.4.5 Aktiviteter... 41 6.4.6 Spara projektet och avsluta... 41 6.5 Tidrapporter-sidan... 41 6.5.1 Tidrapportering... 41 6.5.2 Veckonummer... 42 6.5.3 Lägg till... 42 6.5.4 Redigerbar tabell... 42 6.5.5 Ta bort tidrapport... 43 6.5.6 Attestklar vecka... 43 6.5.7 Visa vecka... 43 6.6 Attest-sidan... 43 6.7 Administration-sidan... 43 6.8 Inloggning-sidan... 44 6.9 Förstasidan (default.aspx)... 44 6.10 Hjälp-sidan... 44 7 Utvärdering och avslutning... 45 7.1 Databasmodellen och applikationen... 45 7.2 Personliga erfarenheter... 45 7.3 Fortsatt arbete... 45 7.4 Avslutning... 46 8 Källförteckning... 47 8.1 Litteratur... 47 8.2 Internetadresser... 48 4

8.3 Tidigare examensarbeten... 48 BILAGOR Bilaga 1: Databasmodellen Bilaga 2: JavaScript 5

1 Inledning 1.1 Bakgrund Detta examensarbete genomfördes på Headlight AB i centrala Örebro. Headlight är främst ett konsultföretag med inriktning mot systemutveckling. Företaget ligger i Örebro, men man arbetar även på flera ställen runt om i Sverige. I skrivandes stund så planerar Headlight att flytta till större lokaler, då verksamheten har utökats. Bakgrunden till examensarbetet är att Headlight har behov av att registrera arbetstider och projekt som olika anställda jobbar med på ett smidigt sätt, samt administrera nya användare, kunder, projekt med mera. De vill kunna samla information i en databas för att enkelt kunna nå den via en applikation. Det fanns en tidigare version skapad i Visual Basic som hade många brister och man såg ett behov av ett helt nytt och mer omfattande system som inte har något som helst med det gamla systemet att göra. Headlight har valt att specialisera sig på Microsofts utvecklingsplattform och utvecklingsverktyg och är Microsoft Certified Solution Partner. I dagsläget använder man sig mest av Microsofts utvecklingsplattform.net. 1.2 Syfte Syftet med det här examensarbetet är att utveckla ett tidrapporteringssystem med tillhörande databas för Headlights anställda. Systemet ska heta TimeReport, och är ett helt nytt system som skall utvecklas i.net. Systemet skall fungera som ett tidrapporteringssystem, som anställda kan använda för att rapportera vilka projekt de jobbar med, vilka möten de har haft, om de har varit på utbildning med mera. Systemet kommer att bestå av flera olika formulär med tillhörande databas med olika tabeller och egenskaper efter företagets önskemål. Både skapandet av databasen och dess utformning för projektet är av stor vikt eftersom det skall vara lätt för Headlight att administrera systemet. Syftet med examensarbetet är även att erhålla kunskaper om att arbeta i verkligt projekt samt att lära sig de verktyg som företaget använder för att lösa sådana här uppgifter. 1.3 Mål Målet med det här examensarbetet är att utveckla TimeReport och programmera systemet ihop med den databas som behövs. Systemet skall programmeras på ett så bra sätt som möjligt med hjälp av felhantering och säker kodning. Testning och loggning av systemet TimeReport kommer att utföras i samband med programmeringen. Hjälpfil eller liknande skall skapas så att Headlight AB kan utnyttja systemet och databaserna till fullo, utan några egentliga svårigheter. Det skall vara lätt att administrera systemet. 6

1.4 Läsanvisningar Kapitel 2 beskriver de ursprungliga kraven samt de krav som har lagts fram muntligen och är prioriterade. I Kapitel 3 beskrivs de verktyg som använts och motiveringar till dessa verktyg. Kapitel 4 presenterar de metoder som har använts för utveckling av systemet. Kapitel 5 beskriver applikationen, visar bilder av hur applikationen ser ut och förklarar kortfattat vad de olika fönstren fyller för funktioner. Kapitel 6 beskriver tillvägagångssätt av hur fönstren och sidorna har implementerats. Kapitel 7 innehåller en utvärdering och avslutning av arbetet. 1.5 Förkortningar och förklaringar ASP Active Server Pages. Microsoft teknologi för att skapa dynamiska webbsidor. C# Programmeringsspråket C Sharp från Microsoft som liknar Java, C och C++. DBMS Database Management System. Databashanteringsprogram. HTML HyperText Markup Language. Standard för visning av dokument på Internet. IDE Integrated Desktop Environment. Integrerad skrivbordsmiljö eller utvecklingsmiljö. Kan i vissa fall även betyda en typ av styrsystem för hårddiskar. IIS Internet Information Services. Webbserver där ASP-skript körs. Java Ett plattformsoberoende programmeringsspråk utvecklat av Sun Microsystems. JavaScript Skriptspråk från Netscape som är baserat på Java. Detta ska inte förväxlas med Java som inte är ett scriptspråk..net (Dot net.) Fullständigt namn är.net Framework. En plattform från Microsoft som innehåller en serie produkter för utveckling, hantering, användning och upplevelse av webbtjänster. ODBC Open Database Connectivity. En standard utvecklad av Microsoft för att göra kopplingar mot databaser. Skriptspråk Programmeringsspråk som tolkas vid körning av exempelvis en webbsida. SQL SQL är det språk som används för att ställa frågor mot en databas. Se utförligare beskrivning nedan. VB Visual Basic. Ett programmeringsspråk som används bland annat i.net. Structured Query Language (SQL) är det språk som används för att kommunicera med databaser. Det är ett standardiserat språk och är officiell standard av ANSI (American National Standards Institute) och IOS (International Organisation for Standardization). Tanken med SQL är att alla databaser ska förstå språket (finns olika dialekter) oberoende av vilken leverantör det är. De vanligaste kommandona som används i SQL är Select, Insert, Update och Delete. Select används för att hämta data medan Insert används för att lägga till data. Update används för att förändra och uppdatera data och Delete för att ta bort data ifrån en databas. 7

2 Krav på TimeReport Detta kapitel beskriver de krav som ställts på TimeReport. Kraven utgör dels de ursprungliga önskemålen från Headlight och dels de krav som tillkommit under arbetets gång. 2.1 Allmänna krav TimeReport skall vara ett system där användaren matar in alla tider för sin närvaro och frånvaro på arbetet. Tider för projekt som användaren medverkar i skall fyllas i samt även tider för frånvaro från arbetet. Tiderna för varje vecka skall motsvara den anställdes arbetsvecka. 2.2 Inloggning Inloggningen skall vara säker och skicka variabler vid inloggning till förstasidan. Länkningen mellan sidorna skall vara skyddad, det vill säga att användare inte skall kunna gå bakvägen och nå de huvudsidor som ligger i kataloger i TimeReport. 2.3 Förstasidan Förstasidan skall ha val för att logga in/ut i översta menyn, beroende på om användaren är inloggad eller inte. Dessutom skall länkarna till sidorna aktiveras då användaren är inloggad och kontroller göras om användaren är administratör eller inte. Menyerna skall också visas på varje sida. 2.4 Tidrapportering Det skall finnas ett formulär där anställda varje vecka kan rapportera den tid som minst motsvarar det antal timmar som den anställda har jobbat. Tider kan bestå av nerlagd tid på olika projekt men också för frånvaro från arbetet. Projekt som visas i formuläret styrs av vad användare definierar i projektet och aktivitetens filter. När användaren gjort en vecka klar för attest, låses aktuell vecka för vidare inmatning. Administratören skall i efterhand kunna ta bort aktuell vecka, om användaren har gjort en felaktig inmatning. Det skall gå att lägga till nya poster för hela den aktuella veckan. Det skall gå att redigera icke attestklara poster. Det skall gå att skriva kommentarer för varje dag (exempelvis frånvaro), ort som användaren har jobbat på och övrig information. Projekten skall fyllas i efter vilka projekt inloggad användare är med i. Aktiviteterna fylls i efter vilket projektet är. Det skall gå att visa rapporteringar framåt/bakåt i tiden. Det skall inte gå att ta bort en attestklar vecka och inte heller attestklara poster. En redigerbar tabell skall visa posterna längst ner på sidan och användaren skall här kunna redigera icke attestklara rapporter. 8

2.5 Projekt Följande funktioner skall finnas: Lägga till nytt projekt Lägg till och ändra aktivteter Lägga till och ändra medlemmar Välja vilken kund det är och vem som är projektansvarig för projektet. Projektsidan skall ha val för att ta bort och lägga till nya projekt. Projekt ska bara kunna tas bort om inloggad användare är administratör och då relationer mellan projektmedlemmar och aktiviteter har tagits bort. Hämta kund och hämta projekt skall spara namnen på kunden och projektet. Därefter går programmet tillbaka till nytt projekt-fönstret. Id-numren sparas som relationer i databasen. Projektmedlemmar Det skall gå att lägga till/ta bort användare till ett projekt. Aktiviteter På varje aktivitet skall man definiera namn, tid och timpris. Det skall gå att lägga till/ta bort aktiviteter till projektet. Det skall även gå att skapa nya aktiviteter som fungerar som standardaktiviteter (aktiviteter som alltid visas i fönstret och som används ofta till olika projekt). 2.6 Kunder Man skall ha möjlighet att lägga till nya kunder. Det skall också vara möjligt att ändra uppgifter för en befintlig kund. Kunder som ej ingår i något projekt skall också vara möjlig att ta bort ur systemet. Uppgifter som skall registreras för en kund i systemet är, information som behövs på en faktura. Endast administratören skall kunna ta bort en kund som ingår i ett/flera projekt. 2.7 Administration Kontroll för att se om användaren är administratör eller inte skall göras på de sidor där detta behövs. Är användaren administratör kommer han/hon åt de sidor som är skyddade. Dessa sidor är: Användare-sidan (Redigera/Lägg till/ta bort användare). Administrationssidan (Ta bort relationerna projektmedlemmar och aktiviteter). Attest-sidan (Ta bort tidrapporteringar). För att exempelvis kunna ta bort en kund som är med i ett/flera projekt måste användaren också vara administratör. 9

2.8 Oprioriterade krav Om det finns tid, skall följande funktioner implementeras: Det skall vara möjligt att skriva ut faktureringsunderlag. Det skall finnas rapporter för projektuppföljning. Det skall gå att redigera befintliga projekt med deras relationer. Det skall finnas möjlighet att ta ut underlag för lön. 2.9 Övrigt Applikationen skall vara skyddad så att användare inte kan göra ändringar på vissa sidor. Alla sidor skall visa tabeller med relevant information. Dessa skall kopplas ihop (join) vid behov för att underlätta för användarna. 10

3 Verktyg I detta kapitel beskrivs de verktyg och den miljö som har använts i examensarbetet. För att skapa databasen till TimeReport användes SQL Server 2000. I miljön finns tillgång till många olika funktioner och analyseringsverktyg. Webbapplikationen TimeReport skapades med hjälp av Microsoft Visual Studio.NET. I Microsoft Visual Studio.NET finns tillgång till tekniken ASP.NET, olika programmeringsspråk (exempelvis C#.NET) och klasserna i Microsoft.NET Framework. SQL-server valdes för att det är ett flexibelt och kraftfullt databasverktyg med hög säkerhet. SQL-server vänder sig i första hand inte till enskilda användare, utan till större grupper som företag. Den har i det närmaste obegränsad kapacitet när det gäller storlek och antalet användare. Visual Studio.NET är en pålitlig plattform som kan hantera många olika programmeringsspråk. Vid webbutveckling, design och debugging är Visual Studio.NET lämpligt att använda, då Visual Studio.NET innehåller en rad olika verktyg, funktioner och komponenter som underlättar i utvecklingen av olika system. Headlight önskade att applikationen skulle programmeras i C# och efter att ha tittat på förrespektive nackdelar mellan de olika programspråk som stöds, beslutades att C# skulle användas. Språket är lätt att använda, lätt att förstå, lätt att sätta sig in i om man har programmerat tidigare och ansågs vara bästa valet för utvecklingen av TimeReport. Hittills har man använt sig av Visual Basic på Headlight, men man har gjort någon lösning med C# som har fungerat bra. Styrkan och flexibiliteten som man kan se i Java och C++ med felhantering och objektorienterad design återkommer också i C#. Dessutom var jag inte främmande för att lära mig ett nytt programmeringsspråk. Avsnitten 3.1 3.5 ger mer information om verktygen som har använts i utvecklingen av TimeReport. 3.1 SQL Server SQL Server är en av de ledande databasprodukterna på marknaden. Främst används SQL Server till att skapa och använda databaser, men det finns även verktyg för att övervaka databasservern, administrera användare och automatisera aktiviteter. Olika versioner av SQL Server De versioner av SQL Server som jag hittills har haft användning för är följande: Enterprise Edition är den tyngsta och mest kraftfulla versionen som används mest av företag eftersom denna stöder Windows 2000 Server och NT. Denna version har fullt stöd för alla funktioner. Developer Edition har samma styrka som Enterprise edition. Den är en fullgod utvecklingsserver, men ej licensierad som en produktionsserver. Den kan köras på alla OS för Windows utom 95/98/Me. Vid val av databassystem bör man ha i åtanke hur viktigt det är med tillgänglighet, kapacitet, hög prestanda och säkerhet. Därför valdes SQL Server som DBMS Database Management System (databashanterare) till detta projekt. 11

3.1.1 Verktyg i SQL Server De verktyg i SQL Server som utvecklare har störst användning av är följande: Enterprise Manager SQL Query Analyser Med verktygen i SQL Server finns funktioner för att Skapa databaser Skapa tabeller Visa vyer Skapa lagrade procedurer Skapa och administrera användare, login och rättigheter Ta säkerhetskopior och göra återställningar Registrera och konfigurera servrar. Enterprise manager - security används för att styra säkerheten för användare och för att manövrera länkade servrar. Enterprise Manager - Processor license låter obegränsat antal användare ansluta till en och samma server, vilket är lämpligt om man främst använder databasservern i kombination med en webbserver. Något som är mycket användbart är lagrade procedurer för att öka prestanda och inte behöva skriva samma SQL-kod på flera ställen. En procedur kompileras i förväg vilket resulterar i bättre prestanda. Frågeverktyget Query Analyser är ett interaktivt fönster för SQL-kommandon (InterActive SQL window) som är mycket användbart för att Skapa SQL-frågor och skript och köra dem mot databasen. Kopiera databaser och tabeller. Manipulera data direkt i tabellerna. Felsöka lagrade procedurer. Editera databaserna under arbetets gång. Man kan även spara SQL-filer och köra dem direkt i Query Analyser. Detta verktyg har använts flitigt speciellt för att kontrollera lagrade procedurer. Enterprise Manager och SQL Query analyser är de verktyg i SQL Server som har använts mycket under utvecklingen av TimeReport. 12

3.2 Microsoft Visual Studio.NET Microsoft Visual Studio.NET är en utvecklingsmiljö som används för att utveckla exempelvis Webbsidor och Webbapplikationer men även windowsbaserade applikationer. Man kan skapa skript (exempelvis JScript), hantera källkod, sätta brytpunkter med mera. Programspråken använder sig av samma integrerade utvecklingsmiljö (IDE), vilket gör att man kan dela verktyg och skapa lösningar med blandade språk. Språken som stöds i.net (dot net) är följande: Visual Basic.NET C#.NET JScript.NET MC++ (Managed C/C++). Optimerad C/C++..NET skall även kunna köras på UNIX-plattformar. Hela.NET Framework stöds inte, utan bara språken och klasserna. 3.3 C# C# (uttalas C Sharp) är ett programmeringsspråk som är utvecklat av Microsoft. Språket påminner mycket om Java i syntaxen. När det skapades då utgick man från språken C och C++. C# är ett objektorienterat språk och släpptes till marknaden sommaren 2000. Man har behållit det som har fungerat bra i C och C++. Tanken med C# var att skapa ett enkelt, modernt och objektorienterat språk. Kompilatorn som används med C# producerar inte maskinspråk utan skapar en Microsoft Intermediate Language fil (MSIL). Denna fil kan inte köras direkt utan Common Language Runtime (CLR) eller innan någon annan kompatibel körmiljö har översatt filen till maskinspråk. Här finns tydliga likheter med Javakod som kompileras till en bytefil men måste översättas av en Java-runtime-miljö till maskinkod. Exempel på kod i C#: using system.data; public class myclass: upperclass { //Do something } /*Ren kod. Inga extra paket krävs.*/ Tester har visat att C# är snabbare än VB och att MC++ går att få snabbare än C# eftersom det optimerar output ; en som det skapar. Det spelar ganska stor roll hur kompilatorn är genererad (hur den är skriven kodmässigt) och detta har också att göra med hur länge som kompilatorn har utvecklats. Man kan göra tester och kontrollera vilken kod som går snabbast ihop med.net, men man kommer oftast fram till att programmeringsspråken går lika snabbt att exekvera beroende av hur koden skrivs. Därför behöver man inte lägga ner mycket energi i denna fråga, utan man väljer helt enkelt det som känns bäst. Professionella utvecklare i.net väljer oftast att programmera i C# för att det är rent, modernt, lätt att använda och är utvecklat just för ändamålet att skapa komponent-orienterade lösningar i.net Framework. Men till 13

skillnad från Java (som man ofta jämför med) så lovar man inte att alla klasser fungerar på alla plattformar. 3.4 Webbspråk Med webbspråk menas de språk som skrivs för att implementera och programmera funktioner på webbsidor (Internetsidor). Exempel på detta är HTML, ASP, PHP och olika skriptspråk (exempelvis JavaScript). 3.4.1 HTML HyperText Markup Language är ett markeringsspråk (sidbeskrivningsspråk) som används bland annat för att skapa hemsidor med. I texten lägger man in så kallade taggar. Dessa talar om hur olika delar av texten och bilderna förhåller sig till varandra och hur detta skall visas. 3.4.2 ASP.NET ASP.NET är en utvecklingsplattform från Microsoft som bland annat används för att skapa webbaserade applikationer som körs under IIS. ASP.NET är liksom PHP en serverteknik där servern knyts samman med klienten och kan skapa dynamiska webbsidor, exempelvis ASPsidor. För att bearbeta ASP.NET-sidor behövs en webbserver och.net Framework. ASP.NET-webbsidor skapas genom att använda händelsestyrda och objektorienterade programmeringstekniker (flera tekniker finns eftersom det finns flera programspråk att programmera i). Här finns även möjligheten att separera programkod och innehåll för en webbsida. Denna teknik kallas för Code behind och i TimeReport så används programmeringsspråket C# även i Code behind. När begäran för en sida görs, är det servern som exekverar och skickar den till webbläsaren. Sidan skickas som HTML-kod. Man kan då inkludera riktig programkod som exempelvis C# och VBScript i ASP.NET-filen. Detta medför att sidan inte behöver vara kompatibel med webbläsaren. 3.5 ADO.NET I.NET Framework kallas tekniken som används för att få tillgång till data för ADO.NET (Active Data Objects.NET). Data kommer oftast ifrån en databas, men man kan även använda sig av andra datakällor. För att arbeta mot databaser finns det två olika namnrymder, en för Microsoft SQL Server och en för de övriga databaserna. För att förbättra prestandan har Microsoft skapat två olika metoder. Den ena används för att kommunicera direkt med en Microsoft SQL Server och den andra för att kommunicera med andra typer av databaser. Klasserna som används finns i namnrymderna System.Data.SqlClient och System.Data.OleDb. 14

4 Metoder I avsnitten 4.1-4.6 beskrivs hur en databas i SQL Server skapas och hur projekt i Visual Studio.NET skapas. Dessutom presenteras metoder för att hämta data ifrån en databas. Dessa metoder har använts för skapandet av TimeReport-databasen och applikationen. 4.1 Skapa en Databas med SQL Server I SQL Server skapar man en ny databas genom att Välja Enterprise Manager Välj den server som databasen ska ligga på Databases Högerklicka - New Database alternativt wizard. En ruta kommer upp där man skriver in namnet på databasen och kan göra vissa inställningar såsom storlek på databasen med mera. Figur 4-1. Fönster för val av databas. När databasen sedan är skapad, finns det val för att Skapa diagram (Diagrams) Skapa Tabeller (Tables) Skapa Vyer (Views) Skapa Lagrade procedurer (Stored procedures) Administrera användare (Users) Ändra på rättigheter som användare har (Roles) Hantera regler (Rules) Ange standarder (Default) Ange användardefinierade datatyper (User defined data types) Ange användardefinierade funktioner (User defined functions). De funktioner som har använts mest för TimeReport-databasen är Diagram, Tabeller, Lagrade procedurer samt Query analyser och Table Query-funktionen där man kan göra Join och mer avancerade SQL-frågor på olika tabeller. 15

4.2 Skapa en ASP.NET-applikation i Visual Studio.NET I ASP.NET är det viktigt att känna till hur webbformulär och user controls fungerar. Detta beskrivs kort nedan. I utvecklingsmiljön Visual Studio.NET skapas ett nytt ASP.NET-projekt genom att välja File New Project. En dialogruta visas där man väljer typ av projekt. Projektet skapas och man får upp ett nytt webbformulär. 4.2.1 Webbformulär Webbformulär (Web Forms) är en ASP.NET-teknik som används för att skapa programmerbara webbsidor. Webbformulär skickas till webbläsaren som HTML-kod och olika script. Detta tillåter alla webbläsare på alla plattformar att se sidorna. Vid användning av webbformulär för att skapa webbsidor, drar och släpper man webbformulärkontroller (i detta fall serverkontroller). Detta gör man för att skapa användargränssnittet. Sedan lägger man till koden för önskade funktioner i egna filer. Ett webbformulär består av en sida med synliga komponenter (aspx-fil) och en med logiska funktioner (aspx.cs-fil) för C#-kod. Formulärets visuella del sparas alltså som en fil med ändelsen aspx. Den består av två vyer, en design-vy och en HTML-vy. Design-vyn är en den yta dit man kan dra och släppa webbkontrollerna. Kontrollerna hämtas från en Toolbox. Exempel på webbkontroller är textboxar, dropdown-menyer, knappar och tabeller. Om en av kontrollerna markeras, kan dess egenskaper ändras i Properties Window och man kan lägga till händelser i Events. Egenskaper kan till exempel vara kontrollens storlek, utseende och om den ska vara synlig eller inte på sidan. Events kan till exempel vara vilken funktion som skall köras vid knapptryckning. 4.2.2 User control I ASP.NET kan man skapa User Controls. De består i stort sett av HTML-kod som sparas i en separat fil. Filen inkluderas dynamiskt när en sida efterfrågas. Detta är användbart då vi vill visa något på alla sidor i applikationen, exempelvis en meny eller logotyp för företaget. En User Control-fil sparas med ändelsen.ascx och den registreras på varje HTML-sida och ASPsida som den finns med på. Registreringen kan göras enligt följande: <%@ Register TagPrefix="TimeReportControl" TagName="NavBar" Src="../Controls/NavBar.ascx" %> TagPrefix är det prefix som används när User Control läggs till på en sida, TagName är en identifikation och src är den relativa sökvägen till.ascx-filen. Inom taggarna <body> och </body> anger vi enligt följande: <TIMEREPORTCONTROL:NAVBAR id="header" runat="server"></timereportcontrol:navbar> 16

4.3 Hämta data ur en databas I ADO.NET finns klasser för att hämta data från en databas. OleDb-klasserna använder OLEDB provider för att koppla upp mot en databas och används för att koppla upp sig mot exempelvis en Oracle- eller Access-databas. När man använder sig av SQL Server då används klasserna som börjar med Sql. Till exempel SqlConnection och SqlCommand. För att använda en Microsoft SQL Server importeras följande namespaces: System.Data System.Data.SqlClient Dessa namespaces används till TimeReport eftersom databasen har skapats med SQL Server. Nedan förklaras de metoder som används för att koppla upp mot en databas och för att hämta information ifrån den. 4.3.1 Data Provider I botten finns Data Provider som kapslar in alla kopplingar till en databas. Den innehåller flera objekt som exempelvis Connection, Command, DataAdapter och DataReader. Eftersom vi använder oss av SQL Server så heter objekten SqlConnection, SqlCommand och så vidare. 4.3.1.1 SqlConnection SqlConnection är den delen av Data Provider som används för att koppla upp/ner mot databasen. Kopplingen kan göras på följande två sätt: 1. Explicit genom att man anropar Open/Close- metod för kopplingen. 2. Implicit genom att använda en DataAdapter. Exempel på att öppna och stänga en koppling mot en SQL-server explicit: SqlConnection myconn = new SqlConnection( server=localhost; database=pubs;uid=sa ); myconn.open(); myconn.close(); Att öppna kopplingen implicit är att föredra. Exempel: SqlConnection Connect = new (ConnectionString); SqlDataAdapter Command = new SqlDataAdapter(CommandText, Connect); Commandtext kan vara en SQL-fråga eller en lagrad procedur Connectionstring är en textsträng med information för uppkoppling mot databasen: Exempel: string ConnectionString = "server=vargen;database=timereport;uid=sa;password= "; 17

4.3.1.2 SqlCommand Ett kommando innehåller information som skickas till servern som en fråga (query) eller som en procedur. Det kan vara vilken SQL-fråga som helst, men den måste stämma överens med den databas som den är kopplad till. SqlCommand kan sättas explicit för att ändra en SQLfråga under programmets gång. Den innehåller det kommando som ska utföras samt vilken koppling som ska användas. Exempel: SqlCommand mycomm= new SqlCommand ( INSERT User(col2) Values( Jens ), myconn); För att utföra ett kommando som inte returnerar datarader exempelvis update, insert och delete anropas metoden ExecuteNonQuery. Exempel: mycomm.executenonquery(); Det går också att skicka med variabler och använda procedurer. Till TimeReport används mest lagrade procedurer, men i vissa fall även metoder som beskrivs här. Då vi ska göra enkla frågor (queries) så är det smidigast att använda sig av DataTable, DataAdapter och SqlCommand. Exempel: SqlConnection conns = new SqlConnection(SQLHelper.CONN_STRING_NON_DTC); DataTable dtn = new DataTable(); SqlDataAdapter ada = new SqlDataAdapter(); ada.selectcommand = new SqlCommand("SELECT max(projectid) as ProjectID FROM Project", conns); ada.fill(dtn); Detta exempel tar ut projektid på det sista projektet som är skapat genom att hämta det högsta numret för denna kolumn i tabellen Project. 4.3.1.3 SqlDataReader Ett DataReader-objekt tillhandahåller metoder och egenskaper som ger en envägsström av datarader från datakällan. Den används som namnet antyder för att läsa resultatet från en databasfråga. DataReadern innehåller bara en post i taget. För att få tag på alla poster används metoden Read( ) som läser från strömmen och returnerar TRUE om det finns fler poster, annars FALSE. När väl en post har använts och nästa har stegats fram då är den föregående borta. Det är också det som ger DataReader bättre prestanda mot att använda en DataAdapter med ett DataSet. En instans av DataReader används vanligen ihop med ett Command-objekt. Commandobjektets ExecuteReader-metod anropas och posterna returneras i ett DataReader-objekt. 18

Exempel: Vi tar ett exempel med koppling till SqlConnection enligt ovan. Vi sätter ett nytt SqlCommand och använder ett SqlDataReader-objekt för att läsa resultatet. Metoden Read() anropas i en while-loop för att få med alla posterna i DataReader-objektet. SqlDataReader mydatareader ; mycommand = new SqlCommand( SELECT * FROM Project, conns ); mydatareader = mycommand.executereader( ); while (mydatareader.read( ) ) { } mydatareader.close( ); conns.close( ); DataReader-objektet har vissa begränsningar. Det går exempelvis inte att sortera eller räkna antalet poster. För att göra detta så får man använda sig av ett DataSet istället. DataReaderobjektet har många Get-metoder. Exempel på dessa kan vara GetInt32(index), GetSqlString(index).ToString() och GetBoolean(index). Dessa returnerar värdet på en kolumn vid ett visst index i form av ett tal, en textsträng och en bit (1 eller 0, det vill säga sant/falskt) på kolumnen. Kopplingen till databasen måste öppnas och stängas manuellt med DataReader. Detta behövs inte då DataAdapter-objektet används. 4.3.1.4 DataSet Ett DataSet representerar en samling (cache) av data som innehåller tabeller, kolumner, samband och begränsningar (constraints). Ett DataSet-objekt lagras i minnet och fungerar som en temporär databas. Det har ingen koppling till databasen utan fylls i och uppdateras med hjälp av ett DataAdapter-objekt. DataSet innehåller klasserna DataTable och DataRelation. DataTable-klassen representerar en databastabell som sparas i minnet. Den kan skapas manuellt eller fyllas från en befintlig databas. Ett DataSet har egenskapen att den håller reda på de ändringar som sker i det data som den innehåller. Detta gör det enkelt att uppdatera datakällan. DataSet innehåller dessutom egenskaper och metoder som hjälper till att hålla reda på data, hur de ska visas och kunna användas. En egenskap är Tables som är ett DataTableCollection-objekt, vilket representerar alla tabeller i ett DataSet. Ett exempel med DataSet, DataTable för att få alla värden från en kolumn: DataSet ds = new DataSet(); if(ds!= null) { foreach (DataTable tmptable in ds.tables) { foreach (DataRow tmprow in tmptable.rows) { Textbox.Text = tmprow["userid"].tostring(); } } } 19