Crystal Reports - enkla rapporter del #1
Förord
Pappersrapporter är fortfarande ett krav även om man strävar efter det "papperslösa kontoret". Oftast räcker det med de rapporter man kan göra från VB eller Access. Vid vissa tillfällen är kraven högre och då är det fristående rapportgeneratorer som gäller. En av de mest kända (och använda) är Seagate Systems Crystal ReportsInnehåll
»»
»
»
Relaterade artiklar
» Crystal Reports - Kör rapporter från VB
Att skapa en ny rapport
Till denna artikel finns ett databas-exempel som du kan hämta.Exempel 371 (11kb)Starta Crystal Reports, välj att skapa rapporten "As a Blank Report" och tryck OK.
I detta exempel kommer jag att använda mig av en Access-databas med två tabeller, denna databasen finns att ladda ner här. I "Data Explorer" fönstret, expandera "Database Files" och dubbelklicka på "Find Database File".
Öppna databasen "crystal.mdb".
Rutan "Data Explorer" har nu kompletterats med två tabeller: "Inloggningar" och "Namn". Dubbelklicka på dessa eller markera och välj "Add" för att få den gröna bocken på ikonerna. Tryck sedan på "Close" för att fortsätta.
Nästa ruta som kommer upp är "Visual Linking Expert" där du kan definera hur tabellerna skall kopplas samman. Har du namngett dina kolumner någorlunda väl så kommer Crystal Reports själv att lösa länkningen, annars är det bara "dra & släpp" som gäller. Tryck "OK" för att fortsätta.
Nästa fönster som kommer upp är "Field Explorer" som visar alla fält du har tillgänglig till dina rapporter, du har med fält från databasen "Database Fields:" och andra fält:
Formula Fields: Du har möjlighet att göra egna formler i ett enkelt scriptspråk för att göra egna funktioner.
Parameter Fields: Om du gör rapporten mot en Stored Procedure som vill ha parametrar, finns de här om du vill ha dem på rapporten.
Running Total Fields: Om du gör en summering i rapporten kommer de att finnas här. Group Name Fields: Om du gör grupperingar i rapporten kan du få ut namnet på grupperingen härifrån.
Special Fields: Innehåller texter som t.ex. sidnummer, rapportnamn m.m.
Att lägga ut text på din rapport
[Bilden nedskalad, klicka på den för att öppna i originalstorlek]
Dra fältet "Namn" från tabellen "Namn" som ligger under "Database Fields" och placera denna i "Details".
[Bilden nedskalad, klicka på den för att öppna i originalstorlek]
Du har nu en rapport som vid körning kommer att visa alla Namn som finns i tabellen Namn. Du får automatiskt med kolumnens namn som rubrik, för att ändra rubriken skall du högerklicka på den och välja "Edit Text Object", döp om den till t.ex. "Namnlista med alla namn i databasen".
För att se hur rapporten ser ut när den körs, tryck på knappen som ser ut som en blixt.
När du trycker på knappen så kommer en "Preview" av rapporten att skapas, denna ligger som en flik och det är enkelt att växla fram och tillbaka.
I "Preview"-fönstret ser du nu hur din rapport kommer att se ut. Den ser inte ut mycket för världen nu men du kan enkelt ställa vilket teckensnitt och teckenstorlek dina fält skall ha, detta ser ut som i vilken ordbehandlare som helst, du markerar vad du vill ändra och ändrar på det, därför kommer jag inte att gå igenom detta här. Du kan precis som i Word använd dig av tabbar för att låsa fält vid en viss höjd eller bred, dessa får du fram genom att klicka på linjalen. Du får då fram en liten grå pilspets och en streckad linje som går över hela rapporten, dessa placeras ut automatiskt när du lägger in ett fält.
För att fortsätta denna "kurs" och inte gå in i för mycket upprepningar skall vi fortsätta med en rapport där databas-fältet "SmekNamn" har placerats sidan om "Namn" och där vi döpt om rubriken till "Kallas för..."
Ändra fältegenskaper
Genom att högerklicka på ett objekt (till exempel ett databasfält som du lagt till i rapporten) och välja "Format Field" kan du ändra egenskaper på hur texten skall visas:
Supress:
Detta anger om fältet skall visas eller inte.
Horizontal Alignment:
Anger hur texten skall justeras.
Keep Object Together:
Om objektet tar mer plats än det finns plats på sidan kommer texten inte att skrivas ut förrän på nästa sida, alltså hålla ihop texten. Om texten tar mer plats än en sida kommer denna funktion inte att fungera.
Close Border on Page Break:
Om ditt objekt har en ram anger detta om ramen kommer att slutas vid ny sida och skapa två separata rutor eller inte stänga och lämna rutan "öppen" i slutet och i början på nästa sida.
Can Grow:
Anger om fältet kan växa i storlek och om du vill att det skall kunna växa till ett visst antal rader.
Tool Tip Text:
Är precis vad det låter...
Text Rotation:
Om du vill rotera texten ett visst antal rader.
Suppress if dublicated:
Om du vill att information som repeteras inte skall visas.
De andra flikerna innehåller funktioner som finns som standard i de flesta ordbehandlingsprogram, jag kommer inte att gå igenom dem.
Villkorsstyra format
Det finns alltid möjligheten att du vill inte visa ett visst fält om det står något du inte vill ska synas.
Vi antar att du lagt till så att rapporten består av fälten "Namn" och "SmekNamn". Låt oss säga att du av någon anledning inte vill att det skall synas något smeknamn om smeknamnet är "Muuu".
Högerklicka på fältet "SmekNamn" i "Details" i design-fliken och välj "Format Field...".
Tryck på knappen
Till höger om egenskapen du vill villkorsstyra, i detta fallet "Supress". Du får då upp "Format Formula Editor".
Det du vill åstadkomma är att om SmekNamn är Muuu så skall Supress vara Sant, annars skall Supress vara Falskt. Crystal-scriptspråket påminner om de flesta scriptspråk, det du är ute efter är:
if {Namn.Smeknamn} = "Muuu" then
true
else
false
Tryck på knappen
för att testa om formeln fungerar, tryck på knappen
- för att spara formeln och stänga formel-editorn.
Du kan se på "Format Editor"n att du har ett villkorsstyrt format, knappen är utbytt till .
Om du nu kör en preview på rapporten ser du att smeknamnet "Muuu" inte syns.
Självklart kan du även villkorsstyra andra saker på rapporten, om du till exempel vill dölja hela raden där smeknamnet är "Muuu" får du i design-fliken högerklicka på sektionen "Details" och välja "Format Section, du frå då upp ett egenskapsfönster liknande det som du fick innan, du har samma knappar och samma formel-editor. Det är bara att pröva sig fram.
Kommentarer till formel-editorn!
Jag måste varna er. Formel-editorn är VÄLDIGT buggig. När jag skrev denna artikel och skull skapa min formel fick jag gå in i formel-editorn fyra-fem gånger och skriva samma text varje gång innan den fungerade. Jag har råkat ut för detta tidigare och det den gnäller för är "A Boolean was expected" och jag har fått felet även då jag använt en Boolean... Ge inte upp! Det fungerar till slut.Denna kurs kommer förmodligen att fortsätta i framtiden så jag uppskattar om ni kommer med kommentarer eller om det är något särskilt ni vill veta.
Elin Persson
Ett förslag på fortsättning på kursen är hur man använder Crystal Reports i asp.net.