OPTIMERING OCH PROGRAMMERING AV TIMEREPORT

Storlek: px
Starta visningen från sidan:

Download "OPTIMERING OCH PROGRAMMERING AV TIMEREPORT"

Transkript

1 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 Örebro SE Örebro, Sweden

2 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

3 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 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

4 Innehållsförteckning 1 Inledning Bakgrund Syfte Mål Läsanvisningar Förkortningar och förklaringar Krav på TimeReport Allmänna krav Inloggning Förstasidan Tidrapportering Projekt Kunder Administration Oprioriterade krav Övrigt Verktyg SQL Server Verktyg i SQL Server Microsoft Visual Studio.NET C# Webbspråk HTML ASP.NET ADO.NET Metoder Skapa en Databas med SQL Server Skapa en ASP.NET-applikation i Visual Studio.NET Webbformulär User control Hämta data ur en databas Data Provider Lagrade procedurer Projekt och lagrade procedurer i TimeReport Hopkopplade Tabeller Sessionsvariabler Undvika sessionsvariabler JavaScript Applikationen TimeReport Förstasidan-Default Inloggning Administration Användare Hämta-funktionen Attestering Kunder Redigera Kund

5 5.6.2 Ny Kund Projekt Nytt Projekt Hämta kund Hämta Projektansvarig Projektmedlemmar Aktiviteter Ny aktivitet Tidrapporter Hjälpen Genomförande Inledning Ramverket Användare-sidan Redigera användare Ny användare I ny användare och redigera användare Ta bort användare Kunder-sidan Redigera Kunder Ny Kund Ta Bort Kund Projekt-sidan Nytt Projekt Hämta Kund Hämta Projektansvarig Projektmedlemmar Aktiviteter Spara projektet och avsluta Tidrapporter-sidan Tidrapportering Veckonummer Lägg till Redigerbar tabell Ta bort tidrapport Attestklar vecka Visa vecka Attest-sidan Administration-sidan Inloggning-sidan Förstasidan (default.aspx) Hjälp-sidan Utvärdering och avslutning Databasmodellen och applikationen Personliga erfarenheter Fortsatt arbete Avslutning Källförteckning Litteratur Internetadresser

6 8.3 Tidigare examensarbeten BILAGOR Bilaga 1: Databasmodellen Bilaga 2: JavaScript 5

7 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

8 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

9 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

10 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

11 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

12 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 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 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

13 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

14 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 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

15 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) 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 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

16 4 Metoder I avsnitten 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

17 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 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 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

18 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 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 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

19 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 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

20 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 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

21 En stor fördel med DataSet är att en konstant uppkoppling mot databasen inte är nödvändig. Det som hämtas till ett DataSet lagras i minnet på servern, vilket medför att användaren kan jobba med alla poster som efterfrågats. Nackdelen med detta är att det är minneskrävande. Många användare som hämtar många tabeller med många poster kräver ett stort minnesutrymme. Däremot kan posterna återanvändas på flera sidor. När en användare har hämtat data från en databas, ändrat dem och försöker uppdatera då ansvarar applikationen för att kontrollera om någon annan användare ändrat i posterna på databasen under tiden. Om så är fallet, måste användaren hämta den nuvarande varianten av posterna och därefter försöka göra om uppdateringen på nytt. Detta brukar kallas för Optimistisk låsning DataTable DataTable är en representation av en tabell i en databas eller en tabell som man har skapat själv. Objektet innehåller många egenskaper och metoder för att kunna arbeta med data. Några exempel är relationer, nyckelvillkor, rader och kolumner vilka består av data samt DefaultView som returnerar en instans av ett DataView-objekt. Hur tabellen ser ut beror på hur den utformats av utvecklaren eller vad som har valts ut genom en SQL-sats SqlDataAdapter En DataAdapter tillhandahåller metoder och egenskaper för att hämta data från en datakälla och spara data i ett DataSet. Genom att använda metoden Fill( ) skapas och fylls en DataTable i ett DataSet. Kopplingen mot databasen öppnas implicit när Fill( )-metoden i DataAdapter anropas. SqlConnection conns = new SqlConnection( server=localhost;database=pubs;uid=sa ); SqlDataAdapter mydataadapter = new SqlDataAdapter( SELECT * FROM User,conns); DataSet mydataset = new DataSet(); mydataadapter.fill(mydataset, User ); En DataAdapter innehåller fyra instanser av Command-klassen: SelectCommand, InsertCommand, UpdateCommand och DeleteCommand. Ovan skapas en instans av SelectCommand samtidigt med instansen av DataAdapter. Det kan också göras enligt följande: SqlDataAdapter mydataadapter = new SqlDataAdapter( ); mydataadapter.selectcommand = new SelectCommand( SELECT * FROM User ); Med en instans av SqlCommandBuilder-klassen kan de resterande tre kommandona skapas automatiskt. SqlCommandBuilder = new SqlCommandBuilder( mydataadapter ); Om den underliggande tabellen har en primärnyckel eller en unik kolumn, finns det sedan tillgång till metoderna Insert, Update och Delete i DataAdapter Lagrade procedurer Lagrade procedurer har använts ofta i detta projekt. Ett exempel på en lagrad procedur presenteras nedan. Det är en procedur som gör update. 20

22 CREATE PROCEDURE [User_Update_Test] [bit]) AS UPDATE [TimeReport].[dbo].[User] SET [UserName] [Password] [Description] [EmployeeNr] [Admin] [ProjectResponsible] WHERE ( [ID] GO Projekt och lagrade procedurer i TimeReport I TimeReport finns olika C#-projekt som används för att skapa funktioner och anropa olika metoder, exempelvis i projektet som kallas DAL så finns det många C#-filer där funktioner för att exekvera lagrade procedurer finns. Nedan beskrivs de C#-projekt som finns i TimeReport. BLL C#-projekt där objekt, instanser av objekt och metoder skapas. DAL C#-projekt där funktionerna initieras och anropar metoder som finns för att hämta data ifrån en databas. Här anropas bland annat de lagrade procedurerna. För att visa upp data ifrån en tabell i databasen så kan SqlDataReader objektet användas. När ett DataSet exekveras då anropas den lagrade proceduren med metoden ExecuteDataSet och när en uppdatering/redigering eller borttagning av data görs då anropas den lagrade proceduren med metoden ExecuteNonQuery istället. Model C#-projekt där funktionerna implementeras och får sina initierade värden. Vid tillägg/uppdatering och borttagande av data i databasen används inte några filer i Modelprojektet. De filer som ligger här är till för hämtning och uppvisning av data ifrån databasen. Det går även att binda ett DataSet till olika komponenter, men SqlDataReader används i så stor utsträckning som möjligt då detta ger bättre prestanda. Främst så används SqlDataReader på de sidor där ej hopkopplade tabeller finns. 21

23 4.4 Hopkopplade Tabeller För att slippa se id-numren (som är unika) i relaterade tabeller så gör vi så kallad Join av tabellerna i TimeReport. Join betyder just förena eller gå med i och här så handlar det om tabeller som förenas eller frågas ihop. Exempel med INNER JOIN: SELECT [User].UserName, Projekt.ProjektName FROM [User] INNER JOIN Many2many ON [User].ID = Many2many.Användare INNER JOIN Projekt ON Many2many.Projekt = Projekt.ProjektID Detta exempel visar en N:M (många till många relation) mellan projekt och användare, vilket betyder att användare kan vara med i flera, ett eller inga projekt. Samma sak gäller för projekt, det vill säga ett projekt kan ha flera, en eller inga användare. Figur 4-2. Hopkopplad tabell. Resultatet ser ut som figur 4-2 vilket är bättre än att bara se relationerna som id-numren i figur 4-3, vilket inte säger användaren så mycket. ID är i figur 4-3 användarens id och ProjektID är projektets id. Figur 4-3. Icke Hopkopplad tabell. Select-satsen i exemplet med INNER JOIN eller SQL-frågan kan sedan sparas som en lagrad procedur och anropas från exempelvis en applikation. På detta sätt har tabeller med hopkopplingar gjorts av TimeReport-tabellerna för att användaren ska få en bra överblick av tabellerna och slippa att leta efter id-nummer som relationer i applikationen. Fördelen med att använda denna typ av SQL-satser är att det underlättar för både administratör och användare. 22

24 4.5 Sessionsvariabler Sessionsvariabler används för att spara data över flera sidor. Detta kan jämföras med en global variabel i övriga programmeringsspråk. Vid inloggning på en sida med användarnamn och lösenord, kanske nästa sida också, behövs inloggningsinformationen. När en sessionsvariabel skapas i ASP.NET då skapas även ett unikt SessionsID genom en komplex algoritm och sparas sedan som en cookie på användarens webbläsare. Nästa gång användaren vill åt sidan så letar ASP.NET efter den cookien och det SessionsID som har skapats för att ta fram sessionsobjektet för användaren. Sessioner kan liknas med temporära cookies, men är inte egentligen inga riktiga cookies. Skillnaden mellan en session och en cookie är att sessionen försvinner när webbläsaren stängs av, vilket är användbart exempelvis vid inloggningssystem och e-handel. En sessionsvariabel skapas och tas emot på följande sätt: String username = TextBox1.Text(); //Hämtar det som står i en textbox. Session["UserName"]= username; //Skapar en sessionsvariabel. När man sedan tar emot sessionsvariabeln på vilken sida som helst i applikationen, ser det ut på följande sätt: String Name = Convert.ToString(Session[ UserName ]); När kontroll behöver göras för att inte få fel på exempel en login-sida, kan följande göras med sessionsvariabeln: String Name = (Session["UserName"]!= null)?session["username"].tostring():""; Detta görs ifall att textfälten är tomma som variablerna skall skapas av. Ingen sessionsvariabel kan då skapas och inloggningen blir misslyckad. Sessionerna förstörs sedan, exempelvis vid utloggning som i TimeReport genom att anropa metoderna Remove eller Abandon: Session.Contents.Remove("UserName"); Session.Contents.RemoveAll(); Notera att Web.Config filen i applikationen måste ha rätt inställningar i SessionState för att detta skall fungera. Det kan se ut på följande sätt: <sessionstate mode= InProc stateconnectionstring= tcpip= :42424 sqlconnectionstring= data source = ;user id=sa; password= cookieless= false timeout= /> 23

25 Användare måste ha aktiverat cookies i sina webbläsare för att se dessa sidor och för att kunna logga in och använda funktionerna. Om webbläsaren saknar stöd för cookies så går det att lägga till ett kodat SessionsID. Denna teknik kallas för cookie munging. Eftersom användare inom Headlight har cookies aktiverade på sina webbläsare behöver inte cookie munging göras för TimeReport Undvika sessionsvariabler Utvecklare bör bara använda sessionsvariabler för att lagra små datamängder för varje besökare på sidan, till exempel användarnamn och lösenord. Sessionsvariabler bör undvikas då vi ska lagra stora mängder information om varje besökare. Det är då bättre att lagra informationen i förslagsvis en databas som är fallet med TimeReport. En annan metod är cookies, men att använda en databas för stora mängder information är mer optimalt. I TimeReport används högst 4 sessionsvariabler per användare. Man ska undvika att spara för många sessionsvariabler eftersom dessa sparas i serverns ram-minne och tar upp onödigt mycket plats i längden 1. Detta gäller i och för sig främst sidor som är väldigt välbesökta, men eftersom vi har strävat efter att hitta så optimala lösningar som möjligt för TimeReport så gjordes inte fler variabler än så. 4.6 JavaScript JavaScript skrivs i ett HTML-dokument, det vill säga en hemsida. Detta kan tillämpas även på ASP-sidor, men man måste i båda fallen tala om för webbläsaren att man använder skript. Exempel på språkdefinition: <script language=javascript> Skriptet avslutas med sluttagg: </script> Attributet onclick kan sättas och köra ett JavaScript när någon har klickat på knappen enligt följande exempel i code-behind på sidan: Button_start.Attributes.Add( onclick, javascript: return OpenWindow() ); Funktionen OpenWindow() skrivs sedan i HTML- och ASP-koden på sidan som en JavaScript-funktion. Det går även att köra JavaScript på klienten, som i detta fall är användarens egna webbläsare enligt nedanstående exempel: Response.Write( <script>alert( Hejsan! );</script> ); För att skapa exempelvis ett popupfönster kan man göra på lite olika sätt. Sådana beskrivs mer ingående i bilaga 2. 1 Se Internetsidan 24

26 5 Applikationen TimeReport TimeReport eller TimeReport2 som Headlight har valt att kalla det, är en helt ny och omfattande version av ett tidrapporteringssytem. Varje sida som är skapad utgår ifrån menyn till vänster. (Se figur 5-1.) Den enda sidan som inte är länkad till menyn är förstasidan. Denna sida kommer användaren/administratören till första gången sidan efterfrågas av en webbläsare och även då han/hon är inloggad i TimeReport med skillnaden att användaren då kan logga ut från systemet. De sidor som nås från menyn i figur 5-1 beskrivs i avsnitten Förstasidan-Default Förstasidan är den sida som visas när någon av Timereport-sidorna har anropats av en klient, som exempelvis kan vara en användares webbläsare. Den visar en välkomsttext Välkommen till TimeReport och menyn till vänster. (Se figur 5-1.) Menyn uppe till höger visas olika beroende av om användaren är inloggad eller inte. När användaren inte är inloggad och klickar någonstans i menyn till vänster eller uppe till höger på sidan, då omdirigeras användaren automatiskt till inloggnings-sidan. Figur 5-2 visar hur inloggningen ser ut. När man sedan har loggat in då ser förstasidan likadan ut som tidigare med skillnaden att användaren nu även kan logga ut igen genom att klicka logga ut i den översta menyn. Användaren kommer nu även åt de sidor som inte kräver att man är administratör i menyn till vänster och hjälpen. Figur 5-1. Förstasidan - inloggad. 25

27 5.2 Inloggning För att kunna logga in i TimeReport och använda funktionerna krävs att administratören har lagt till ett konto med användarnamn och lösenord med mera. Detta betyder att användaren måste ha specifik information i tabellen User i databasen TimeReport. I C#-filerna som hör till inloggningsförfarandet görs kontroller och kryptering för säker inloggning (64 Bytes) kryptering. I Code behind på inloggnings-sidan körs en lagrad procedur som kontrollerar om användaren finns i databasen. Den filen återanvänds. Däremot behövdes User-tabellen skapas och en kontroll göras i koden för vilken användare som har loggat in. För att veta vilken användare som har loggat in så används sessionsvariabler som ligger kvar tills användaren har loggat ut från TimeReport. Mer om sessionsvariabler finns i kapitel 4, avsnitt 4.5. Figur 5-2. Inloggningsfönstret. 5.3 Administration Figur 5-3 visar hur administrations-sidan ser ut. Denna sida kommer inte en vanlig användare åt. Om användaren försöker att anropa denna sida så omdirigeras han eller hon automatiskt till förstasidan (default.aspx). När administratören anropar sidan då finns här val för följande: Ta bort Projektmedlemmar Ta bort Aktiviteter Tillbaka. För att kunna ta bort ett projekt som har registrerade medlemmar och/eller aktiviteter, så klickar administratören på TaBort till höger om tabellerna Projektmedlemmar och Aktiviteter. Sedan går projektet att ta bort på sidan Projekt. För att kunna ta bort en kund som ingår i ett/flera projekt krävs också att administratören först tar bort projektet som kunden ingår i. Denna kontroll och sida är till för att en användare inte skall kunna ta bort projekt och kunder hur som helst. Låsningen ligger då i relationerna som måste tas bort av administratör. 26

28 Figur 5-3. Administration. 5.4 Användare Endast administratörer kan redigera/ta bort och skapa nya användare som säkerhetsåtgärd. Däremot kan vanliga användare se tabellen. När administratören klickar på Användare-länken då möts han/hon av en tabell där alla inlagda användare i databasen visas och vilka attribut användarna har, exempelvis om man är projektansvarig True (sant), enligt figur 5-4. Figur 5-4. Användare-sidan. När musen dras över tabellen, markeras den rad musen pekar på enligt figur 5-4. Om man klickar med vänster musknapp på raden, öppnas ett popup-fönster där information om användaren kan redigeras. Se figur

29 Figur 5-5. Redigera användare. Man kan här redigera och ändra egenskaperna för användaren. Man kan även redigera/byta vem som är attestansvarig. Figur 5-6 visar hur Ny användare-fönstret ser ut, som kommer fram då administratören har klickat på knappen Ny användare, som finns till höger om tabellen. Det går då att lägga till en ny användare till tabellen. Se figur 5-4. Databasen, tabellen och tabellen i applikationen (datagrid) uppdateras när fönstret har stängts förutsatt att administratören har klickat på Spara-knappen. Figur 5-6. Ny användare. 28

30 Administratören tar bort en användare ifrån TimeReport genom att klicka på Ta Bort på den raden i kolumnen till höger om tabellen som ska tas bort. För att komma åt och Redigera/Lägga till och Ta Bort användare så krävs det alltså att användaren från början är inloggad som administratör. Annars så visas ett meddelande (alert) om att användaren inte är administratör och då inte kan redigera/ändra något på Användare-sidan Hämta-funktionen Finns i både i Ny användare- och Redigera användare-fönstren. När administratören klickar på knappen då visas ett popupfönster med en tabell (datagrid) där han/hon kan välja vilken användare som skall vara attestansvarig. Se figur 5-7. Figur 5-7. Attestansvarig. Namnet sparas till Redigera användare/ny användare-fönstret och id-numret av aktuell användare sparas som en relation i databasen. 5.5 Attestering Denna sida visar vilka tidsrapporter som är klara för attestering, det vill säga vilka användare som har tidrapporterat klart aktuell vecka. Se figur 5-8. Figur 5-8. Tidrapporter som är attestklara. Det är bara administratörer som kan ta bort attestklara tidrapporter som säkerhetsåtgärd, men alla användare kan se tabellen. På så sätt kan anställda påminna varandra om att han/hon har glömt att tidrapportera för denna vecka. Se kapitel 4, avsnitt 4.4. Tabellen är en hopkopplad tabell och fungerar bara som en översikt över de tidrapporter som har gjorts klara för denna vecka. 29

31 5.6 Kunder Figur 5-9 visar vilka kunder som är inlagda i databasen. Det går att lägga till nya kunder, redigera befintliga kunder och ta bort kunder ifrån databasen. Figur 5-9. Kunder-sidan. Om användaren försöker att ta bort en kund som ingår i ett eller flera projekt, går inte detta och ett felmeddelande visas. För att ta bort en sådan kund måste först administratören ta bort relationen genom att ta bort projektet som kunden ingår i. Däremot kan användare precis som administratörer redigera befintliga kunder och lägga till nya kunder Redigera Kund Genom att klicka på den raden i tabellen som användare eller administratör vill redigera så kommer ett popupfönster med informationen om just den kunden. Här kan han/hon ändra informationen och uppdatera tabellen Kunder. Se figur Figur Redigera Kund. 30

32 5.6.2 Ny Kund När administratör eller användare klickar på knappen Ny kund till höger om tabellen Kunder då visas ett liknande popupfönster som vid Redigera Kund enligt figur Figur Ny Kund. När användare/administratör har sparat och klickat på Stäng-knappen då läggs raden till i tabellen som uppdateras tillsammans med databasen. Samma sak gäller för Redigera kund, men där uppdateras istället data i tabellen istället när man har sparat och stängt fönstret. 5.7 Projekt Figur 5-12 visar alla projekt som är inlagda i databasen. Det går att lägga till nya projekt och ta bort projekt ifrån databasen om projektet inte har relaterade medlemmar och/eller aktiviteter. Tabellen projekt är en tabell som det har gjorts join på mot de andra tabellerna, vilket betyder att man tar fram exempelvis namnet på den som är projektansvarig istället för denna postens id. För vidare beskrivning av join (hopkoppling). Se kapitel 4 avsnitt 4.4. Figur Projekt sidan. För att kunna ta bort relationerna projektmedlemmar och aktiviteter så krävs det att den som är inloggad är administratör som har nämnts tidigare. 31

33 5.7.1 Nytt Projekt Det finns många funktioner i Nytt Projekt-fönstret och det är här man väljer vilka som skall vara med i projektet, vilken kund det är, vem som är projektansvarig och vilka aktiviteter som skall ingå. Se figur Figur Nytt Projekt Hämta kund Här kan användaren välja vilken kund som projektet skall vara för, genom att klicka på den raden i tabellen. Fönstret stängs och Namnet visas i ett textfält under rubriken Kund i Nytt projekt-fönstret. Se figurerna 5-14 och Figur Välj Kund. 32

34 5.7.3 Hämta Projektansvarig Samma procedur gäller för projektansvarig. Det är bara att klicka på den rad i tabellen för aktuell projektansvarig som önskas. Figur Välj Projektansvarig. Fönstret stängs när användaren har valt en projektansvarig och personen har lagts till projektet. Tabellen visar alla användare, då vilken användare som helst skall kunna vara projektansvarig eller bli det Projektmedlemmar För att välja vilka användare som skall vara med i det aktuella projektet så väljs knappen medlemmar. Här väljer användaren att klicka på den användare i tabellen som önskas och sedan på Lägg till-knappen som är markerad med >. Användaren som valdes har då lagts till projektet. Ångra/ta bort användare från projektet görs på motsvarande sätt. Klicka på tabellen till höger och därefter på knappen som är markerad med "<". Användaren tas då bort ifrån det aktuella projektet. Se figur Figur Projektmedlemmar. 33

35 5.7.5 Aktiviteter På samma sätt som användaren/administratören kan lägga till projektmedlemmar, kan han/hon lägga till aktiviteter som skall ingå i projektet. Aktiviteten blir en kopia av en standardaktivitet som ingår i projektet. Se figur Figur Aktiviteter. Standardaktiviteter skall vara de aktiviteter som Headlight använder ofta, exempelvis Konsulting. Kostnaden för en person beror på vilka aktiviteter som utförs. Ett projekt kan till exempel innehålla aktiviteterna: Konsulting Kr/tim Utveckling Kr/tim. Kostnaden beror inte enbart på vald aktivitet, även tidstypen (exempelvis normal arbetstid eller övertid) beaktas Ny aktivitet Det går även att lägga till nya standardaktiviteter genom att klicka på Skapa-knappen. En standardaktivitet hör till standardprojektet (som är ett projekt som inte visas och inte skall tas bort ifrån databasen). Denna nya aktivitet kommer då att tillhöra ett standardprojekt och blir på så sätt en standardaktivitet. Se figur Figur Ny Standardaktivitet. 34

36 5.8 Tidrapporter Figur 5-19 visar Tidrapporterings-fönstret. Högst upp till vänster visas aktuell vecka, men användaren kan även välja vilken vecka som skall rapporteras för i kalendern. I dropdownmenyn Projekt så visas de projekt som användaren är deltagare i. Aktiviteterna visas efter vilket projekt det är i dropdown-menyn Aktivitet. Tidstyp-menyn innehåller olika val som exempelvis: Ej debitar (ej debiterbar) Normal Restid Övertid 1 Övertid 2. Lägg till-knappen lägger till en ny tidrapport med tomma fält att fylla i timmarna i. Kommentarer är till för att användaren skall kunna förtydliga något för just den dagen exempelvis var någonstans man har arbetat. Det går att redigera rapporter som inte är attestklara. Visa vecka-knappen visar tidrapporter för den vecka användaren har valt i kalendern. De tidrapporter som är registrerade för den veckan visas då längst ner i fönstret. De timmar som den anställde har jobbat skrivs i textfälten som heltal. Figur Tidrapporter. 35

37 Om det skulle vara så att man i framtiden önskar att ha decimaltal för halva timmar, så går detta att göra med datatypen decimal i databasen. När användaren klickar på Klar för attest, sätts tidrapporterna för veckan som Attestklar-true. De rapporteringar som är gjorda för aktuell vecka och som är klara för attest visas sedan på Attest-sidan. Se avsnitt 5.5, figur Hjälpen I TimeReport ingår en hjälpfunktion. Figur 5-20 visar hur delar av hjälp-sidan ser ut. Denna sida nås från alla fönster då användaren är inloggad i systemet genom att klicka på det gula frågetecknet i högra hörnet på fönstren eller på hjälp-länken uppe i det högre hörnet. Figur Hjälpen. 36

38 6 Genomförande 6.1 Inledning Detta avsnitt beskriver hur delar av applikationen TimeReport har implementerats Ramverket Jag började med att studera det befintliga ramverket som fanns i två så kallade User Controlfiler (ascx-filer). Dessa filer bestod tillsammans av ett tomt skal med en länk som fungerade, en bild (klockan) och bakgrundsfärgen som är blå samt tomma menyer. För att kunna lägga till funktioner bakom så får man skriva HTML-kod och olika skript. Arbetet började med att skapa ett nytt projekt. File New Project öppnar upp ett fönster där man väljer typ av projekt och mall. Här valdes Visual C# Projects ASP.NET Web Application. När detta är gjort då visas ett tomt formulär och det går att lägga till serverkomponenter via en Toolbox. För mer information om hur man hämtar data ifrån databasen och vilka objekt som finns se avsnitt 4 Metoder. 6.2 Användare-sidan För att göra denna sida så används en tabell (datagrid) som är en serverkomponent. För att hämta data från databasen så används här en lagrad procedur som anropas i C#-projektet som kallas DAL i TimeReport. Se avsnitt I Code behind-filen (aspx.cs-fil) till webbformuläret skapades en funktion som i sin tur skapar en ny instans av objektet (User i detta fallet) och sätter datasource på datagriden till funktionen som ligger i ett C#-projekt som kallas BLL. Sedan binds data till tabellen med den inbyggda funktionen DataBind(). För att anropa funktionen som binder data till tabellen, anropas funktionen i Page_Load() där bindningen görs i if(!ispostback), vilket betyder att detta körs första gången sidan laddas, men inte när sidan har laddats om på nytt. För att uppdatera tabellen anropas funktionen som binder data till tabellen på nytt istället. På liknande sätt kan man binda data till ett DataSet. Funktioner som bara behöver returnera ett värde sant/falskt exempelvis för att redigera eller ta bort data ifrån databasen behöver inte bindas. Det är bara när data skall visas upp som det behöver bindas till någon komponent. Detta kan verka omständigt till en början, men när det är klart hur dessa olika projekt, filer och webbformulär fungerar tillsammans med Code behind på ASP-sidorna så är det förståeligt till slut. 37

39 6.2.1 Redigera användare För att få upp ett Redigera användare-popupfönster när man klickar på tabellen på sidan Användare så sätts olika attribut på tabellen (datagrid) där tabellen är bunden i DataItemBound som är en händelse (event). För att veta vilken rad vi har klickat på så tas idnumret också ut på just den raden enligt följande i DataItemBound: TableCell ChangeCell = (TableCell)e.Item.Cells[0]; HyperLink LBtnCBM = new HyperLink(); LBtnCBM.Text = e.item.cells[0].text; ChangeCell.Controls.Add(LBtnCBM); string IDNr = LBtnCBM.Text; Sedan sätts attributet onclick för rader fram till delete kolumnen, och ett JavaScript körs för att öppna det nya fönstret med aktuellt id. for(int i=0; i<8; i++) { e.item.cells[i].attributes.add("onclick","javascript: return openchangebm("+idnr+")"); } Detta är bara en ytterst liten del av koden i DataItemBound, men det ger en liten bild av hur attribut kan sättas på exempelvis en tabell. Funktionen openchangebm som anropas här, är en JavaScript-funktion som öppnar ett popupfönster modalt, med hjälp av en HTML fil som ram. Id-numret hämtas sedan från användare-tabellen till det öppnade popupfönstret genom att anropa metoden Request[ IDNr ]. Vi kan fylla i informationen som vi får från ett DataSet som har kört ytterligare en lagrad procedur där specifik information om användaren har hämtats. För mer information om JavaScript och hur popupfönster kan visas hänvisar jag till bilaga 2 om JavaScript Ny användare En ny användare skapas genom att köra ett JavaScript som öppnar en sida modalt. Attribut sätt på knappen med onclick, men här så skickar vi inte med något id-nummer då detta inte behövs. 38

40 6.2.3 I ny användare och redigera användare Hämta-knappen öppnar ett litet popupfönster med en tabell som innehåller användare som är inlagda i databasen. Denna tabell görs på samma sätt som Användare-tabellen. Men denna kör olika lagrade procedurer beroende på om det är Redigera Användare- som öppnas eller om det är Ny Användare-fönstret. När redigera Användare-fönstret är aktivt då körs en lagrad procedur som försöker att hitta ett id-nummer på användaren med det namnet som står i fältet. Om den mot förmodan inte skulle hitta någon attestansvarig då sätts administratören som attestansvarig. När användaren sedan har valt en attestansvarig då görs en uppdatering av aktuell användare, där id-numret som fås från popupfönstret sparas i databasen och textfältet fylls i med det namnet som den attestansvarige har. Ytterligare en lagrad procedur används här, men denna gör en update av tabellen i databasen istället Ta bort användare Här gör jag en DeleteCommand-händelse på tabellen. När vi har klickat på denna händelse då tar vi först ut id-numret av aktuell rad och kör sedan en lagrad procedur som gör delete av raden med det id-numret. 6.3 Kunder-sidan Denna sida och tabellen skapades i stort sätt på samma sätt som Användare-sidan ovan Redigera Kunder Detta popupfönster aktiveras när man klickar på tabellen. Information om aktuell kund visas då i detta fönster. Här hämtas id-numret från den aktuella raden och sedan körs en lagrad procedur som hämtar informationen om kunden. Sedan används ett DataSet och ett DataAdapter-objekt som fylls med informationen från resultatet av den lagrade proceduren. Slutligen så itererar vi över DataSet-objektet och fyller i informationen från DataAdaptern till fälten som exempelvis kan vara textbox och checkbox-komponenter. När användaren klickar på Spara-knappen då uppdateras kundtabellen genom att en lagrad procedur som gör update körs. När fönstret stängs då uppdateras tabellen Ny Kund Ny Kund är ett popupfönster som aktiveras när användaren har klickat på knappen Ny Kund. Detta fönster görs på samma sätt som Ny användare-funktionen tidigare. Här behövs alltså inget id-nummer och jag öppnar fönstret genom att sätta attribut på knappen och anropar ett JavaScript som visar det nya fönstret modalt. 39

41 När användaren har fyllt i informationen och klickar på Spara då körs en lagrad procedur som gör insert i tabellen i databasen enligt tidigare beskrivning Ta Bort Kund Görs på samma sätt som ta bort användare. 6.4 Projekt-sidan Denna sida skapades på samma sätt som Användare-sidan ovan, med attribut för tabellen. Däremot så skiljer sig denna sidan på så sätt att Nytt projekt-fönstret öppnas när användaren klickar på tabellen och att tabellen är en ihopkopplad tabell. Se avsnitt Nytt Projekt Efter Tidrapporterings-fönstret så är detta fönster det med mest funktioner. Detta fönster öppnar många andra fönster där olika val kan göras. När sidan anropas då skapas ett nytt tomt projekt genom att köra en lagrad procedur som gör en Insert på tabellen Project i databasen. Om sidan sedan stängs utan att man har klickat på spara, tas projektet bort genom att två saker görs: Id-numret tas ut av det skapade projektet enligt avsnitt 4 Delete görs med hjälp av en lagrad procedur enligt tidigare beskrivning Hämta Kund Det fönster som kommer fram visar en tabell, där en lagrad procedur har hämtat alla kunder som finns i databasen (bindning med mera görs enligt tidigare exempel). När användaren sedan väljer en kund i listan genom att klicka på den då läggs denna kund till projektet. Detta görs också med en lagrad procedur som gör update på projekttabellen i databasen, med kundens id Hämta Projektansvarig Utvecklades på samma sätt som Hämta Kund, men här så listas tabellen med användare istället Projektmedlemmar På denna sida finns två tabeller. Den första (till vänster) visar vilka användare som finns inlagda i databasen. Den andra tabellen (till höger) visar de användare som är med i det aktuella projektet. Båda har hämtats fram med hjälp av lagrade procedurer och DataSet som binds till tabellerna. När användaren klickar på en rad i tabellen och sedan på knappen > då anropas en lagrad procedur som gör update och lägger till den aktuella användaren till projektet. Sedan binds tabellen till höger om på nytt (uppdateras). Motsatsen händer när användaren klickar på < knappen. Då körs en lagrad procedur som tar bort markerad användare ifrån projektet och tabellen till vänster uppdateras. 40

42 6.4.5 Aktiviteter Detta fönster skapades på liknande sätt som Projektmedlemmar-fönstret, men här finns också val för att skapa nya standardaktiviteter. När användaren har klickat på Skapa-knappen över tabellen standardaktiviteter, då kommer ett litet fönster upp där han/hon kan fylla i information och spara en ny standardaktivitet. När användaren sedan klickar på Spara då görs en insert med en lagrad procedur i tabellen Activities (Aktiviteter-tabellen i databasen). Sedan så uppdateras tabellen aktiviteter i fönstret och vi ser den nya standardaktiviteten. Aktiviteten läggs till projektet som en kopia när användaren klickar på > knappen, eftersom en standardaktivitet hör till ett standardprojekt och skall inte tas bort ifrån det. Tabellerna som visas i Aktiviteter-fönstret har också hämtats med lagrade procedurer och binds till en tabell (datagrid) Spara projektet och avsluta När projektet har sparats då görs en uppdatering av projektet i databasen med hjälp av en lagrad procedur enligt tidigare modell och relationerna kund, projektansvarig, projektmedlemmar och aktiviteter har lagts till projektet. När Stäng-knappen har klickats på, då uppdateras tabellen på sidan Projekt. 6.5 Tidrapporter-sidan Tidrapporter-sidan visar upp en tabell med de rapporter som användaren som är inloggad har gjort för denna vecka som är nu och som är klara för attestering (faktureringsklara). Denna sida gjordes på det sättet att användarens id hämtas fram genom informationen som fås av sessionsvariabler vid lyckad inloggning. Id-numret används sedan för att ta fram rapporterna som användaren har gjort. När användaren klickar på knappen Lägg Till, då öppnas ett nytt fönster kallat Tidrapportering Tidrapportering Tidrapporterings-fönstret, i figur 5-19 är den sida med flest funktioner och som använder mest metoder och lagrade procedurer. För att få fram vilken användare det är så skickas id-numret med från tabellen på Tidrapporter-sidan. Vi har nu den informationen som behövs för att kunna hämta ytterligare information om exempelvis vilka projekt som användaren är med i (projektmedlemmar). Aktiviteterna fylls i beroende på vilket projekt det är. Även här så körs frågor och data hämtas med hjälp av lagrade procedurer och bindning av data till komponenter (i detta fall dropdownmenyer). 41

43 6.5.2 Veckonummer Aktuell vecka tas fram från ett kalenderobjekt som skapas i Code-behind filen. Veckonumret visas högst upp till vänster på sidan. När användaren väljer vecka i kalendern på sidan då hämtas veckonumret ifrån detta objekt istället och den variabel som innehåller veckonumret med den nya informationen skrivs över. Jag har gjort på detta sätt bara för att användaren snabbt skall kunna tidrapportera för den veckan som är nu utan att behöva välja vecka i kalendern på sidan. Dessutom kan det vara bra som en extra kontroll för att det verkligen är rätt vecka som visas Lägg till Knappen Lägg till, lägger till en ny tom tidrapport i tabellen i databasen. Tomma fält visas i fönstret där användaren kan fylla i timmar efter Projekt aktivitet och vilken tidstyp det gäller. Detta görs med en insert som lagrad procedur till tabellen i databasen. När timmarna sedan har fyllts i och användaren har klickat på Spara-knappen så görs en uppdatering av tidrapporten som redan är skapad Redigerbar tabell Längst ner i fönstret visas en redigerbar tabell (editable datagrid), med de rapporter som användaren har gjort för aktuell vecka. Både attestklara och icke attestklara rapporter visas. Bara de rapporter som inte är klara för attest kan redigeras. När användaren vill redigera en sådan rapport, är det bara att klicka på Redigera till höger om tabellen. Tabellen går då in i redigerbart läge (edit-läge) och visar tomma textfält i cellerna i tabellen enligt figuren 5-19 i avsnitt 5. När användaren sedan uppdaterar posten genom att klicka på Spara så görs en uppdatering av tabellen. Id-numret på vald rad tas fram och värdena i aktuell post sätts till de nya värden som användaren har skrivit in i fälten. Denna redigerbara tabell var svår att implementera, men handledaren på Headlight hade hittat några exempel på Internet som jag sedan utgick ifrån 2. Koden ändrades sedan efter exemplen och redigerades lite. Tabellen kunde då redigeras. Observera att i denna används inte en lagrad procedur, utan här används istället SqlConnection och SqlCommand som öppnar och stänger dataströmmen explicit, enligt beskrivning tidigare i avsnitt 4.3 SqlConnection. Detta gjorde jag för att prova olika metoder och se vilket som passar bäst just för ändamålet. När det gäller redigerbara tabeller då är det rätt bra att göra på detta sätt, men man kan naturligtvis även köra med en lagrad procedur för att uppdatera data i tabellen. 2 Se Internetsidan Microsofts egen.netsida. 42

44 6.5.5 Ta bort tidrapport Det går att ta bort den senast sparade rapporten och en rapport som precis är lagd till aktuell vecka. Detta gjordes med en lagrad procedur som gör delete av id-numret på tidrapporten, som först fås ut genom att ta fram det högsta id-numret. Attestklara rapporter kan inte tas bort Attestklar vecka När användaren är klar med rapporteringen för veckan då klickar han/hon på Klar för Attest. Veckan sätts då till attestklar. Detta har implementerats med en lagrad procedur som sätter en flagga (boolean variabel som är sann/falsk) till sant eller 1. Veckan är då låst för redigering och borttagning. Däremot så kan man i efterhand lägga till poster till denna vecka Visa vecka Visa vecka-knappen visar tidrapporter gjorda för den vecka som är vald i kalendern. Funktionen har gjorts på så sätt att tabellen längst ner binds om (uppdateras) när nytt veckonummer har lagts till. 6.6 Attest-sidan Attest-sidan består av endast en tabell som visar attestklara rapporter som användare har rapporterat in. Om inloggad användare är administratör så kan han/hon här också ta bort tidrapporter som är färdiga eller som av någon anledning har rapporterats fel. Här har en lagrad procedur som kopplar ihop tabeller använts. Se 4.4 Hopkopplade Tabeller. Det DataSet-objekt som innehåller informationen av tabellen binds sedan till tabellen (datagrid) på sidan. 6.7 Administration-sidan Administration-sidan visar upp de två tabellerna med relationer, projektmedlemmar och aktiviteter. Dessa har gjorts med hjälp av lagrade procedurer som fyller ett DataSet och binds sedan till tabellerna (datagrid) på sidan. Administratörer kan här ta bort projektmedlemmar och aktiviteter som är relaterade till projekten på projektsidan. 43

45 6.8 Inloggning-sidan Själva inloggningsidan har inte så många funktioner, utan skickar istället variabler till C#-filer för validering och kryptering. När man trycker på knappen logga in görs en fråga gentemot databasen om användaren med detta användarnamn och lösenord finns i databasen. I Codebehind så görs kontroller där sessionsvariabler sätts om användaren lyckades eller inte att logga in. Dessa variabler kommer man sedan åt nästan överallt i applikationen. Det finns mycket skrivet om inloggningsförfarande och hur man skapar inloggningsfönster i både litteraturen och på Internet. 6.9 Förstasidan (default.aspx) Förstasidan i figur 5-1 skapades sist av alla sidorna, då den skall innehålla länkningen mellan de övriga sidorna. Med länkning menas att om en användare exempelvis skriver in url;en eller en url som är liknande så kommer man automatiskt till rätt sida det vill säga Om en klient (användares webbläsare) försöker att nå sidor som ligger bakom defaultsidan, exempelvis så omdirigeras man till inloggnings-sidan. Detta gäller också då en användare försöker att nå sidorna som är länkade utan att vara inloggad. Användaren blir då automatiskt omdirigerad till SignIn.aspx. Funktionen är implementerad med kontroller och sessionsvariabler. Om användaren är inloggad, sätts en sessionsvariabel till True (Sant). Mer om sessionsvariabler finns skrivet i avsnittet 4.5 Sessionsvariabler Hjälp-sidan Hjälpen som användaren når överallt i applikationen har gjorts med etiketter (lables) och denna innehåller information om applikationen. Längst ner på sidan kan användaren skicka e-post till utvecklaren vid ytterligare frågor eller oklarheter. 44

46 7 Utvärdering och avslutning Utvärderingen består av egna slutsatser och kommentarer från handledare och anställda på Headlight. Fortsatt arbete är förslag på förbättringar som kan införas och avslutningen innehåller bland annat saker som bör tänkas på om liknande system ska utvecklas. 7.1 Databasmodellen och applikationen De spontana reaktioner jag har fått när jag har visat upp databasmodellen för handledare och övriga är att det ser bra ut och att allt som behöver registreras går att göra i databasen. Det är lätt att fortsätta att bygga ut databasen om detta skulle behövas i framtiden. Daniel Janson (chef på Headlight) har testat applikationen och gjort en snabb bedömning. Applikationen fungerar och har kontroller för rättigheter och de funktioner som behövs. De viktigaste funktionerna är implementerade. 7.2 Personliga erfarenheter Jag gjorde ett systemtest och körde igenom alla stegen i både databasen och applikationen med lyckat resultat. Med stegen så menar jag att göra allt som går att göra i både databasen och applikationen exempelvis: Går det att skapa en ny användare och redigera/ta bort. Går det att skapa en ny kund och redigera/ta bort. Uppdateras databasen korrekt och visas data korrekt i applikationen? Fungerar relationerna? Och så vidare. Personligen är jag nöjd med både implementeringen av databasen och applikationen. Jag hann med mer än jag först trodde. Eftersom det mesta var nytt så tog det ganska lång tid att lära sig verktygen. Däremot gick det snabbt att lära sig C# som är likt Java i syntaxen, och likt C++ programmering gällande objektorienteringen. Mot slutet av arbetet tyckte jag att det gav bra insikt i hur det går till att skapa sådana här omfattande projekt i.net och med SQL Server som DBMS (databashanterare). 7.3 Fortsatt arbete Det fanns önskemål om att i framtiden ha ett popupfönster där man kan redigera projekten, vilket inte finns implementerat nu. Istället fick jag fokusera på själva tidrapporteringen, men det tar inte lång tid att sätta sig in i applikationen och databasmodellen för att fortsätta med ett Redigera projekt-fönster. I kraven ville Headlight också om tid fanns, att det skulle gå att lägga till helger såsom julafton, midsommarafton med mera. Det är dessa delar som jag inte har hunnit implementera på grund av tidsbrist och så här i efterhand så har ändå de viktigaste funktionerna och sidorna hunnits med. Dessutom har kommentarer i koden gjorts för att underlätta för fortsatt utveckling av systemet. Framöver kommer det kanske förslag på att visa de färdiga veckorna på ett annat sätt, men personligen så tycker jag att det fungerar rätt så bra som det är implementerat nu. 45

47 7.4 Avslutning Vid en första anblick ser kanske applikationen och fönstren innehållande olika funktioner enkla ut att skapa, men det kan uppstå många problem under arbetets gång. Bara att få exempelvis Användare-sidan att visa en tabell med information från databasen kräver mycket kodskrivande och underhåll. Ändras dessutom något i databasen och tabellerna, måste detta ändras i varje fil och i hela applikationen där data och information om den tabellen finns. Det är därför bra att redan från början ha en så klar bild som möjligt av hur de lagrade procedurerna, databasen och applikationen ska se ut så att man slipper att göra för stora förändringar. Det är bra med lagrade procedurer eftersom de är kompilerade i förväg, men de medför extra arbete när ändringar behöver göras. Applikationen har upplevts som bra eftersom den uppfyller de funktioner som den skall göra. Under utvecklingen tillkom flera idéer om förbättringar och de flesta lyckades jag att implementera, men vissa idéer fick av tidsbrist utgå. För egen del så har jag fått bra kunskaper i hur man skapar applikationer i.net-miljön och hur databaser i SQL Server görs. Samtidigt har jag fått lärdom av hur det är att arbeta på ett företag i ett projekt som har utvecklats från grunden och hur det är att presentera sitt arbete inför kamrater, lärare och anhöriga. 46

48 8 Källförteckning 8.1 Litteratur Anderson, Francis, Homer, Howard, Sussman och Watson: Professional ASP.NET 1.0. Wrox Press Ltd, Birmingham, 2002, ISBN Ek och Eriksson: SQL SERVER 2000 Handboken. Pagina Förlags AB, Sundbyberg, 2000, ISBN Forsberg, Anders: Programmering i C#. Studentlitteratur, Lund, 2003, ISBN Grimes: Developing Applications with Visual Studio.NET. Pearson Education, Inc., Canada, 2002, ISBN Halvorson, Michael: Microsoft Visual Basic.net steg för steg. Pagina Förlags AB, Sundbyberg, 2002, ISBN Jones, Bradley L: Lär dig C# på 3 veckor. Pagina Förlags AB, Sundbyberg, 2002, ISBN Lair och Lefebvre: PURE ASP.NET. SAMS, Indianapolis, Indiana USA, 2002, ISBN X. Lindegren, Håkan: Programvaruprojekt. Stabilitet, användbarhet och inkrementell utveckling. Studentlitteratur, Lund, 2003, ISBN Mack och Seven: Programming Data-Driven Web Applications with ASP.NET. SAMS, Indianapolis, Indiana USA, 2002, ISBN Meyne och Davis: Developing Web Applications with ASP.NET and C#. John Wiley & Sons Inc, New York, 2002, ISBN Mitchell, Walther, Seven, Mack, Payne, Anders, Nathan och Wahlin: ASP.NET: Tips, Tutorials, and Code. SAMS, Indianapolis, Indiana USA, ISBN Payne, Chris: Lär dig ASP.NET på 3 veckor. Pagina Förlags AB, Sundbyberg, 2002, ISBN Ronne, Erik: ASP Active Server Pages. Docendo Sverige AB, Stockholm, 1999, ISBN Sorensen, Shepherd, Roberts och Williams: Applied.NET, Developing people oriented software using C#. Pearson Education Corporate, Canada, 2001, ISBN Wille, Christoph: Presenting C#. SAMS, Indianapolis, Indiana USA, 2000, ISBN

49 8.2 Internetadresser Sökningar relaterade till SQL Server, Visual Studio.NET, C# med mera. Google grupper. Why ASP.NET? Microsoft, Server-Side Data Access. Microsoft, ASP Programming. Jonathan Goodyear, A Fast-Track Guide to ASP.NET. Oleg Gdalevich, An overview in the differences between ASP and ASP.net. Derral Farnsworth-Livingston, En genomgång i sessions, varför och därför! Anders Wickman, Tidigare examensarbeten Obelin Jens och Bergman Anders: ASP vs ASP.NET ur en utvecklares perspektiv. Högskolan Dalarna, Borlänge,

50 BILAGOR

51 Bilaga 1: Databasmodell Databasmodellen visar ett diagram av hur relationerna ser ut i databasen. Exempelvis tabellerna Customer och Project. Dessa har en 1:N (en till många relation), vilket betyder att en kund kan vara med i flera, ett eller inga projekt. Projekten kan dock bara ha en kund. Det finns också någon N:M (många till många relation), som exempelvis ProjectUsers där användare kan vara med i flera, ett eller inga projekt och motsvarande gäller för projekten, det vill säga ett projekt kan ha flera, en eller inga användare.. Databasen är en relationsdatabas som har utvecklats efter de krav och önskemål som Headlight har haft. 1 (1)

52 Bilaga 2: JavaScript I denna bilaga beskrivs två metoder för programmering av popupfönster som kan göras på olika sätt. ShowModalDialog visar ett fönster modalt och Open metoden visar upp ett ickemodalt fönster. Därefter ges en motivering till valet av metod. Det mest kraftfulla och det bästa sättet när man programmerar med serverkomponenter är att använda sig av ShowModalDialog, vilket beskrivs nedan. ShowModalDialog I HTML och ASP koden på sidan görs följande funktioner: <script language=javascript> function OpenWindow() { OpenASPModalDialog('Alter_User.aspx', 530, 550); window.location.reload(true); } function OpenASPModalDialog(url, width, height) { var sfeatures; sfeatures="dialogwidth: "+width+"px; "; sfeatures+="dialogheight: "+height+"px; "; sfeatures+="help: no; "; sfeatures+="resizable: no; "; sfeatures+="scroll: no; "; sfeatures+="status: no; "; sfeatures+="unadorned: no; "; sfeatures+="edge: raised; "; if(url.indexof("?")!= -1) { url += '&nocache=' + (new Date()).valueOf(); } else { url += '?nocache=' + (new Date()).valueOf(); } var result = window.showmodaldialog("userdialog.htm",url, sfeatures); if(result!= undefined) return result; } </script> I HTML filen som används som ram görs följande: <head> <script id="clienteventhandlersjs" language="javascript"> <!-- function window_onload(){ if (window.dialogarguments!= null) { document.all.targetframe.src=window.dialogarguments; } } //--> </script> </head> 1 (3)

53 <BODY onload="return window_onload()" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" bgcolor="#ffffff" scroll="no"> <iframe id="targetframe" width="100%" height="100%"></iframe> Aspx-filen som i exemplet heter Alter_User.aspx läggs sedan i denna HTML-Ram. Open Det går även att använda Open-metoden. Exempelvis om vi anropar samma funktion OpenWindow() men skriver följande i denna istället: window.open('alter_user.aspx',"redigera användare ", "width=550,height=250,top=200,left=200,toolbars=no,scrollbars=yes,status =no,resizable=no"); window.location.reload(true); Att skicka variabler emellan sidorna kan vara lite knepigt om man använder sig av Open metoden enligt nedan. var Customer = new Object(); function parsevalues(text,id) { if(text!= undefined && id!= undefined) { Customer.Id = id; Customer.Name = text; window.returnvalue = Customer; window.parent.location.reload(true); window.close(); } else { alert("fel uppstod vid val av kund. Vänligen försök igen!"); return; } } function postscript() { window.opener.testar(customer); } I <body> taggen på sidan anges sedan: <body MS_POSITIONING="GridLayout" onunload="javascript:postscript();"> I Föräldrafönstret (parent window): //För att få in värdet. function testar(obj) { document.getelementbyid('kundid').value = obj.id; document.getelementbyid('customer_tbx').value = obj.name; } 2 (3)

54 För att sedan lägga variablerna någonstans så går det att använda sig av gömda fält enligt följande: <input id="kundid" type="hidden" name="kundid"> Customer_tbx ovan är textfältet som objektets namn hamnar i. Vilken metod är bäst? Det är enklare att använda window.open än ShowModalDialog och det är mer rakt på sak. Med detta menar jag att man sätter egenskaperna direkt i Open() metoden. Detta har ju fördelen att det är enklare att förstå och programmera sidor av denna karaktär. Nackdelen med denna metod är ändå att det inte görs någon PostBack (omladdning av sidan) på föräldrafönstret när det fönstret som har öppnats sedan stängs. Detta betyder att variabler som vi vill komma åt från detta fönster, för att presentera i föräldrafönstret inte har fått sina värden förrän vi har gjort PostBack av föräldrafönstret, eftersom popupfönstret inte är modalt. Detta gör vi automatiskt när vi använder oss av ShowModalDialog, eftersom denna metod gör en PostBack av föräldrafönstret när popupfönstret stängs och vi får då variablerna ifrån barnfönstret genom att göra en Request (anhållan, begäran) på dessa. Slutsats Är det då verkligen så knepigt att använda sig av Open-metoden. Efter att ha prövat de olika sätten att åstadkomma detta med popupfönster och variabler som skickas tillbaka så skulle jag nog vilja påstå att det går jämt upp med ShowModalDialog metoden. Hädanefter så använder jag ShowModalDialog då denna metod har vissa fördelar gentemot window.open och är ett mer gediget sätt att lösa uppgiften på. Metoden stöds dessutom av fler versioner av Microsoft Internet Explorer. Om HTML-kontroller blandas med Serverkontroller så kan det ge bekymmer eftersom variabler tas om hand på olika sätt. 3 (3)

Stored procedure i ASP.NET

Stored procedure i ASP.NET Stored procedure i ASP.NET OBS! Om du vill jobba med att skapa en stored procedure i en SQL Serverdatabas ifrån VS2010 måste du ha fullversion, expressversionen tillåter dig ej att skapa triggers, stored

Läs mer

Stored procedure i ASP.NET

Stored procedure i ASP.NET Stored procedure i ASP.NET OBS! Om du vill jobba med att skapa en stored procedure i en SQL Serverdatabas ifrån VS2010 måste du ha fullversion, expressversionen tillåter dig ej att skapa triggers, stored

Läs mer

ADO.NET Murach Kapitel 17-20

ADO.NET Murach Kapitel 17-20 Databaser och C# ADO.NET Murach Kapitel 17-20 2013-01-30 1 Winstrand Development Databas ADO.NET Är en del av.net ramverket och tillhandahåller delar för att kommunicera med olika datakällor. Dessa kan

Läs mer

ASP.NET Thomas Mejtoft

ASP.NET Thomas Mejtoft ASP.NET Introduktion till ASP.NET Utveckla i ASP.NET I ASP.NET kan och bör man separera HTML-kod från övrig kod (C#, VB ) I enklare fall läggas kod i script-block Vanligtvis läggs den i en Code Behind-fil

Läs mer

Administrationsmanual ImageBank 2

Administrationsmanual ImageBank 2 Administrationsmanual ImageBank 2 INNEHÅLL 1. Konventioner i manualen 3 2. Uppmärksamhetssymboler 3 3. Vad är imagebank SysAdmin 4 4. Guide för att snabbt komma igång 5 5. Uppgradera din imagebank 1.2

Läs mer

Lab 6: ASP.NET 2.0 Providermodellen

Lab 6: ASP.NET 2.0 Providermodellen Lab 6: ASP.NET 2.0 Providermodellen Den stora finessen med Providermodellen är enkelheten att skapa sin egna provider för att kunna anpassa en tjänst utefter de behov man har. Den gör tillståndshantering

Läs mer

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

Innehåll. Dokumentet gäller från och med version 2014.3 1 Innehåll Introduktion... 2 Före installation... 2 Beroenden... 2 Syftet med programmet... 2 Installation av IIS... 2 Windows Server 2008... 2 Windows Server 2012... 6 Installation av webbapplikationen

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

Läs mer

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

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF! Denna beskrivning har gjorts på Windows 2000 Server (men bör fungera även på Windows XP Home Edition/Professional och Windows 2003 Server). Att installera Oracle 10g kräver ca. 2 GB hårddiskplats och ca.

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Sida: 1(7) Installationsanvisningar VisiWeb Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Detta dokument Detta dokument beskriver hur man installerar VisiWeb på en

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.

Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP. Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär

Läs mer

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

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query). Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework.

Läs mer

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

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse Lär känna MS SQL 2008 / Övning Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill

Läs mer

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.

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. Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning 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. Dokumentet består av

Läs mer

Nya webbservern Dvwebb.mah.se

Nya webbservern Dvwebb.mah.se Nya webbservern Dvwebb.mah.se Bakgrund: BIT (Bibliotek och IT) beslutar att ta ner Novell systemet 28/3 som är en katalogtjänst som styr bland annat alla studenter s.k. hemkataloger på Malmö högskola såväl

Läs mer

IT-system. BUP Användarmanual

IT-system. BUP Användarmanual IT-system Användarmanual Innehållsförteckning 1. Att komma igång med... 1 1.1 Installera... 1 1.1.1 Byt databas... 1 1.1.2 Behörighet att byta databas... 2 1.2 Logga in... 3 1.2 Inloggad... 3 1.3 Logga

Läs mer

AVCAD 4.0 för Windows

AVCAD 4.0 för Windows BILAGA A Installation och konfigurering av SQL-server. Applikationen kan antingen köras mot MS SQL-server eller MS Access. Koppling mot MS-ACCESS databas. MS Access installeras och konfigureras automatiskt

Läs mer

Skapa din egen MediaWiki

Skapa din egen MediaWiki Skapa din egen MediaWiki Inledning och syfte I detta moment skall du installera en egen wiki (Mediawiki), som du skall konfigurera. Du har möjligheten att använda en egen wiki på din dator eller webbhotell

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

Manual för din hemsida

Manual för din hemsida Manual för din hemsida Dynamiska hemsidor är en lösning för att man på ett enkelt sätt skall kunna lägga till, ändra och ta bort sidor på sin hemsida. För att detta skall vara möjligt bygger lösningen

Läs mer

Uppdatera Easy Planning till SQL

Uppdatera Easy Planning till SQL Easy Planning SQL 8.x är vår senaste version av planeringsprogram. Vi rekommenderar alla kunder att uppdatera till den senaste versionen då många nya funktioner har tillkommit. Alla användare som har den

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Telia Connect för Windows

Telia Connect för Windows Telia Connect för Windows Version 3.0 Användarguide Updaterad: 3 juli 2007 Innehåll Ansluta till Internet...3 Information som presenteras av Telia Connect...4 Konfiguration av Telia Connect...7 Fliken

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

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

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna

Läs mer

Administrationsmanual ImageBank 2

Administrationsmanual ImageBank 2 Document information ID: P001 Appendix C Rev: 4 Author: Tomas von Peltzer Product nr: Title: Reviewed by: Approved by: P001 ImageBank Administration Manual Product name: Ingvar Falconer Date: 2014-10-22

Läs mer

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

1.Lär känna MS SQL Observera. Tips. Förberedelse 1.Lär känna MS SQL 2008 Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill genomföra

Läs mer

FLEX Personalsystem. Uppdateringsanvisning

FLEX Personalsystem. Uppdateringsanvisning FLEX Personalsystem Uppdateringsanvisning Innehållsförteckning UPPDATERING... 3 Allmänt... 3 Förberedelser... 3 Informera om uppdatering... 3 Ladda hem uppdateringsfiler... 4 Att observera vid uppdatering...

Läs mer

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

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

Läs mer

LEX INSTRUKTION LEX LDAP

LEX INSTRUKTION LEX LDAP LEX INSTRUKTION LEX LDAP Innehållsförteckning LEX INSTRUKTION LEX LDAP... 1 1 INLEDNING... 1 2 INSTALLATION... 2 3 LEXLDAPSERVICE - KLIENTEN... 3 3.1 HUVUDFÖNSTER... 3 3.2 INSTÄLLNINGAR... 4 3.2.1 Lex...

Läs mer

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst 2004-10-29

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst 2004-10-29 FactoryCast HMI Premium & Quantum PLC MySQL Server och FactoryCast HMI databastjänst 2004-10-29 INNEHÅLLSFÖRTECKNING 1 DATABASTJÄNSTEN...3 1.1 KONFIGURERING AV DATABASTJÄNST...3 2 KONFIGURERING MYSQL...6

Läs mer

Storegate Pro Backup. Innehåll

Storegate Pro Backup. Innehåll Storegate Pro Backup Välkommen! I denna manual kan du bland annat läsa om funktioner och hur du ska konfigurerar programmet. Läs gärna vårt exempel om versionshantering och lagringsmängd innan du konfigurerar

Läs mer

Klientprogrammering mot databaser

Klientprogrammering mot databaser Klientprogrammering mot Databaser Java DataBase Connectivity, JDBC Klientprogrammering mot databaser Native API olika för olika DBMS, ofta i C/C++ ODBC, Open Datbase Connectivity samma API för olika databashanterare.

Läs mer

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

Mål med lektionen! Repetera och befästa kunskaperna. Entity Framework Mål med lektionen! Repetera och befästa kunskaperna. Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt. Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer

Läs mer

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

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

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

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så

Läs mer

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

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF! Denna beskrivning har gjorts på Windows XP Professional (men bör fungera även på Home Edition och Windows 2000/2003). Att installera Oracle 9i Personal Edition kräver ca. 3 GB hårddiskplats och ca. 200

Läs mer

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

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Entity Framework Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: [email protected]

Läs mer

Hemsideutveckling för Anjool AB

Hemsideutveckling för Anjool AB Beteckning: Akademin för teknik och miljö Hemsideutveckling för Anjool AB Christopher Gidlöf Maj 2012 Examensarbete 15hp B nivå Datavetenskap Internetteknologi Examinator: Carina Petterson Handledare:

Läs mer

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

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02) UMEÅ UNIVERSITET Institutionen för datavetenskap Thomas Johansson Oktober 1998 Programutveckling med Java Development Kit (JDK 1.1.x) och Programmers File Editor (PFE 7.02) Umeå universitet 901 87 Umeå.

Läs mer

Introduktion till MySQL

Introduktion till MySQL Introduktion till MySQL Vad är MySQL? MySQL är ett programmerings- och frågespråk för databaser. Med programmeringsspråk menas att du kan skapa och administrera databaser med hjälp av MySQL, och med frågespråk

Läs mer

Att koppla FB till AD-inloggning

Att koppla FB till AD-inloggning Att koppla FB till AD-inloggning Helen Ekelöf 16. nov. 2017 (uppdaterad 10.april 2018) SOKIGO Box 315 731 27 Köping +46 (0)8 23 56 00 [email protected] http://www.sokigo.com Org.nr: 556550-6309 INNEHÅLLSFÖRTECKNING

Läs mer

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

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, 1971. Internet började med ARPANET Olika slags datornätverk Förberedelse inför laboration 4. Historik Protokoll, / Adressering, namnservrar WWW, HTML Föreläsning 5 Internet LAN Local Area Network student.lth.se (ganska stort LAN) MAN Metropolitan

Läs mer

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

Installation/uppdatering av Hogia Personal fr.o.m. version 13.1 Installation/uppdatering av Hogia Personal fr.o.m. version 13.1 Viktig information gällande installation Från version 12.2 av Hogia Personal krävs Microsoft.Net Framework 3.5 SP1 för att installation skall

Läs mer

Introduktion till Winbas. excel till Winbas

Introduktion till Winbas. excel till Winbas Introduktion till Winbas excel till Winbas Skapa datakälla Första gången man gör en koppling till databasen måste man skapa en ny datakälla, denna källa kan sedan användas till flera olika kopplingar.

Läs mer

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

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata Innehåll MySQL Intro Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata 1 Lagrad procedur / Stored Procedure Lagrad procedur har många namn, förkortningen

Läs mer

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

WP-Edit. Robin Larsson Martin Davik. Examensarbete, grundnivå, 15 hp Datavetenskap Internetteknologprogrammet WP-Edit Robin Larsson Martin Davik 2014 Examensarbete, grundnivå, 15 hp Datavetenskap Internetteknologprogrammet Handledare: Anders Jackson Examinator: Carina Pettersson WP-Edit av Robin Larsson Martin

Läs mer

Instruktioner för att skapa konton i MV-login

Instruktioner för att skapa konton i MV-login Instruktioner för att skapa konton i MV-login MV-Login är ett inloggningssystem, avsett för inloggning i MV-Nordics program, webbprogram och appar. Administration av systemet samt webbprogramen finner

Läs mer

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

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa. Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa. Antal: Enskilt Material: En dator med Windows 7 (Vista, Windows 8 eller

Läs mer

ALEPH ver. 16 Introduktion

ALEPH ver. 16 Introduktion Fujitsu, Westmansgatan 47, 582 16 Linköping INNEHÅLLSFÖRTECKNING 1. SKRIVBORDET... 1 2. FLYTTA RUNT M.M.... 2 3. LOGGA IN... 3 4. VAL AV DATABAS... 4 5. STORLEK PÅ RUTORNA... 5 6. NAVIGATIONSRUTA NAVIGATIONSTRÄD...

Läs mer

Räkna med ASP.NET MVC 3

Räkna med ASP.NET MVC 3 Instruktion Räkna med ASP.NET MVC 3 Introduktionsuppgift Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Du ska följa steg-för-steg -instruktionen i denna introduktionsuppgift och skapa

Läs mer

Language Integrated Query, LINQ, och databaser

Language Integrated Query, LINQ, och databaser Language Integrated Query, LINQ, och databaser 1 Imperativ eller deklarativ programmering Imperativ programmering Du som programmerare beskriver i detalj alla steg som måste utföras för att lösa en viss

Läs mer

ASP.NET Web Forms. Copyright Mahmud Al Hakim [email protected] http://www.webbacademy.se. Vad är Web Forms?

ASP.NET Web Forms. Copyright Mahmud Al Hakim mahmud@dynamicos.se http://www.webbacademy.se. Vad är Web Forms? ASP.NET Web Forms Copyright Mahmud Al Hakim [email protected] http://www.webbacademy.se Vad är Web Forms? Web Forms är en del av ASP.NET ramverket. Web Forms är kontroll- och händelsestyrd programmeringsmodell

Läs mer

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

LVDB i GEOSECMA. Innehåll. Inledning. Produkt: GEOSECMA Modul: LVDB Skapad för Version: Uppdaterad: Produkt: GEOSECMA Modul: LVDB Skapad för Version: 10.4.1 Uppdaterad: 2019-05-21 LVDB i GEOSECMA Innehåll Inledning... 1 Hämta XML från NVDB... 2 Full LVDB-import... 3 Inkentell LVDB-import... 4 NVDB inställningar...

Läs mer

KAP 18 SQL SERVER AGENT

KAP 18 SQL SERVER AGENT KAP 18 SQL SERVER AGENT Tjänsten Sql Server Agent Operator Job Alert (larm) http://www.youtube.com/watch?v=ii1tc493bzm 1 VAD ÄR SQL SERVER AGENT? SQL Server Agent är en tjänst (service) som ansvarar för:

Läs mer

Kunskapsbank ICARUS DB

Kunskapsbank ICARUS DB Kunskapsbank ICARUS DB K E Y L O G I C A B 1 Innehållsförteckning 1 Innehållsförteckning 1 2 SQL Server 2005 3 2.1 Installation 3 2.2 Användargränssnitt (DBMS) för SQL Express 3 2.3 Undvik att transaktionsloggen

Läs mer

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

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie 2017-03-09 Justering för krav på Windows Server 2012 1.2 Micke 2017-04-07 Vitec Ekonomi från x.60 kräver IIS 8 och websocket.

Läs mer

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

Kopplingar via datalänk från Winbas till Excel samt Pivottabell 1 (13) Kopplingar via datalänk från Winbas till Excel samt Pivottabell 1 (13) Skapa datakälla Första gången man gör en koppling till databasen måste man skapa en ny datakälla, denna källa kan sedan användas till

Läs mer

Webbsidor och databaser i ASP.NET

Webbsidor och databaser i ASP.NET Webbsidor och databaser i ASP.NET med VB.NET Webbaserad applikationsutveckling december 2005 Innehållsförteckning 1 TABELLER OCH INSTÄLLNINGAR I DENNA SAMMANFATTNING... 3 1.1 Tabeller... 3 1.2 Lägga till

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

Att koppla FB till AD-inloggning

Att koppla FB till AD-inloggning Att koppla FB till AD-inloggning Helen Ekelöf 16. nov. 2017 (uppdaterad 22.maj 2018) SOKIGO Box 315 731 27 Köping +46 (0)8 23 56 00 [email protected] http://www.sokigo.com Org.nr: 556550-6309 INNEHÅLLSFÖRTECKNING

Läs mer

INSTALLATIONSINSTRUKTIONER FÖR VIDA INNEHÅLL

INSTALLATIONSINSTRUKTIONER FÖR VIDA INNEHÅLL VIDA INSTALLATIONSINSTRUKTIONER VIDA 2015 INNEHÅLL 1 INLEDNING... 3 2 FÖRE INSTALLATION... 4 2.1 Checklista för åtgärder före installation... 4 2.2 Tredjepartsprodukter... 4 2.2.1 Adobe Reader... 5 2.3

Läs mer

Startanvisning för Bornets Internet

Startanvisning för Bornets Internet Startanvisning för Bornets Internet Denna guide kommer att hjälpa dig igång med Bornets Internet. Sidan 1 av 41 Innehållsförteckning Titel Sidan Kapitel 1. Introduktion... 3 Kapitel 2. TCP/IP-inställningar

Läs mer

ÖVERVAKNING AV SQL SERVER

ÖVERVAKNING AV SQL SERVER ÖVERVAKNING AV SQL SERVER Hantering resurser för samtidiga användare Övervakning av SQL Servers aktiviteter Hantering av blockerade processer Användning av SQL Profiler för att hitta besvärliga frågor

Läs mer

Manual - Storegate Team

Manual - Storegate Team Manual - Storegate Team Om tjänsten Med Storegate Team får du full kontroll över företagets viktiga digitala information. Du kan enkelt lagra, dela och arbeta i filer med högsta säkerhet inom ditt företag.

Läs mer

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

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LABB 1 Databassagan och en rundtur i databasers märkliga värld Plushögskolan Frågeutveckling inom MSSQL - SU14 I Microsoft SQL-Server Management Studio kan man arbeta på olika sätt. Antingen via användargränssnittet

Läs mer

INTRODUKTION TILL JDBC

INTRODUKTION TILL JDBC INTRODUKTION TILL JDBC Vad är JDBC? JDBC står för Java DataBase Connectivity. JDBC ingår i Java och består av en del klasser som har hand om databasfunktionalitet. Med Java följer JDBC-ODBC Bridge driver,

Läs mer

1.1 Inbjudan Inloggning Viktigt att tänka på 2

1.1 Inbjudan Inloggning Viktigt att tänka på 2 Tidrapportering TIDRAPPORTERING 1 1 VAD BEHÖVS 2 1.1 Inbjudan 2 1.2 Inloggning 2 1.3 Viktigt att tänka på 2 2 UPPBYGGNAD 3 2.1 Startsida 3 2.2 Profilsida 4 2.3 Schema 6 2.4 Tidrapport 7 2.4.1 Översikt

Läs mer

Introduk+on +ll programmering i JavaScript

Introduk+on +ll programmering i JavaScript Föreläsning i webbdesign Introduk+on +ll programmering i JavaScript Rune Körnefors Medieteknik 1 2012 Rune Körnefors [email protected] Språk Naturliga språk Mänsklig kommunika+on T.ex. Svenska, engelska,

Läs mer

Installationsanvisningar

Installationsanvisningar Installationsanvisningar Hogia Webbrapporter INNEHÅLLSFÖRTECKNING Systemkrav version 2011.XX 3 Installation av IIS för Windows Server 2003 5 Installation av IIS för Windows Server 2008 8 Nyinstallation

Läs mer

Installationsanvisningar

Installationsanvisningar Installationsanvisningar Hogia Webbrapporter INNEHÅLLSFÖRTECKNING Systemkrav version 2013.x 3 Installation av IIS för Windows Server 2008 5 Nyinstallation av Hogia Webbrapporter 8 Installation och inloggning

Läs mer

Uppstart. Agda Drift

Uppstart. Agda Drift Uppstart Agda Drift Innehåll Installation och inloggning Installation sidan 3 Inloggning Agda Drift sidan 4 Starta Agda PS sidan 5 Administration och rutiner för användning av Agda PS via Agda Drift Utskrift

Läs mer

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

SQLs delar. Idag. Att utplåna en databas. Skapa en databas Idag SQLs delar Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver

Läs mer

ENTRÉ DOKUMENTHANTERING...

ENTRÉ DOKUMENTHANTERING... Entré Innehåll ENTRÉ DOKUMENTHANTERING... - 2 - Starta Dokumenthantering... - 3 - Lägga till dokument via frågeguide... - 4 - Frågeguiden... - 5 - Lägga till dokument manuellt... - 7 - Lägg till fil...

Läs mer

Boss installationsmanual förberedelser

Boss installationsmanual förberedelser 1 Boss installationsmanual förberedelser Boss kan installeras på flera sätt, Serverinstallation eller Nätverksinstallation. För båda dessa sätt kan man dela databasen med flera användare. Serverinstallation,

Läs mer

Installationsanvisning Boss delad databas

Installationsanvisning Boss delad databas Installationsanvisning Boss delad databas sid 2 (25) Innehåll 1 Inledning 3 2 Systemkrav klient 3 3 Serverinstallation 3 3.1 Systemkrav 3 3.2 SQL Server 3 3.3 Behörighet vid installation 4 3.4 Behörighetskontroll

Läs mer

Webservice & ERP-Integration Rapport

Webservice & ERP-Integration Rapport Webservice & ERP-Integration Rapport Hardwood AB Mustafa Lazem 930916-9713 Jonas Ahrne 920325-0379 Hasan Nerjovaj 940130-7195 Stefan Liden 920628-0639 2014-05-18 Innehåll Bakgrund... 2 Syfte... 2 Projektbeskrivning...

Läs mer

DOTNETNUKE SKOLNING Skapat: den 20 november 2012

DOTNETNUKE SKOLNING Skapat: den 20 november 2012 DOTNETNUKE SKOLNING Skapat: den 20 november 2012 CONTENTS WebbSidans Layout... 3 Inloggning... 3 Kontroller för administrering... 4 Växla visnings läge... 4 View Läge... 4 Edit Läge... 4 Layout Läge...

Läs mer

Innehåll. MySQL Grundkurs

Innehåll. MySQL Grundkurs MySQL Grundkurs Copyright 2014 Mahmud Al Hakim [email protected] www.webbacademy.se Innehåll Introduktion till databaser Installera MySQL lokalt Webbserverprogrampaket (XAMPP) Introduktion till phpmyadmin

Läs mer

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14 Övningar i SQL Övningar i SQL Använd Access för att öva SQL (= Structured Query Language) Skapa tabeller med SQL 1. Ny databas: SQLÖVNING Klicka: Frågor > Ny > Design > OK >Stäng > SQL Radera ordet SELECT.

Läs mer

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

Vision WEB Komma igång med Electrolux Webbokning Windows Server 2012 R2 8/31/2017 Vision WEB Komma igång med Electrolux Webbokning Windows Server 2012 R2 8/31/2017 Aktivera IIS 1/11 1. och det gör man genom att gå in på serverhanteraren som pilen visar. 1 8/31/2017 2 Aktivera IIS 2/11

Läs mer

DGC IT Manual Citrix Desktop - Fjärrskrivbord

DGC IT Manual Citrix Desktop - Fjärrskrivbord DGC IT Manual Citrix Desktop - Fjärrskrivbord Ver 130912 Innehåll 1 Använda Citrix Desktop - Fjärrskrivbord... 2 2 Inställningar i Fjärrskrivbordet... 7 Kontrollera att de applikationer du har tillgång

Läs mer

Användarmanual 1.x. RIW Software Techn AB [email protected] telefon: 08-766 70 20 fax: 08-766 70 05 www.riwsoftware.com

Användarmanual 1.x. RIW Software Techn AB info@riwsoftware.com telefon: 08-766 70 20 fax: 08-766 70 05 www.riwsoftware.com Användarmanual 1.x Page 2 of 18 Innehållsförteckning BookitWise... 3 Systemkrav... 3 Logga in... 4 Kalenderförklaring... 5 Enkelt bokningsformulär... 6 Anvancerat bokningsformulär... 7 Avancerat Lägg till

Läs mer

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

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV. Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV. Kortfattat skall ni lära er följande. - Ni skall lära er att koppla upp er mot den lokala Jasmine databasen - Köra

Läs mer

12 Webb och kurshemsidor

12 Webb och kurshemsidor 12 Webb och kurshemsidor Många lärare använder sig av kurswebbsidor eller egna personliga webbsidor som ett ställe att samla information och dokumentation kring sitt arbete. Om du ska skapa en webbsida,

Läs mer

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

Manuell installation av SQL Server 2008 R2 Express för SSF Timing Manuell installation av SQL Server 2008 R2 Express för SSF Timing Innehåll 1. Metoder att installera...1 2. Förutsättningar...2 DotNet Framework 3.5...2 MSI Installer 4.5...2 3. Hämta SQL Server 2008 R2

Läs mer

Starta MySQL Query Browser

Starta MySQL Query Browser Starta MySQL Query Browser 1. Starta MySQL Query Browser genom att antingen välja i Startmenyn: 2. eller leta upp ikonen på skrivbordet för start av MySQL Query Browser och dubbelklicka på den. 3. Du bör

Läs mer