- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 



 FuzzyDizzie » Delphi » Artiklar » Skapa en enkel rapport
Operativsystem: Windows 95/98/ME/2000/XP
Delphiversion: Delphi 5 eller senare
Komponenter: TQuickRep, TQRBand, TQRDBText, TQRLabel, TADOQuery, TDatasource, TButton
  Publicerad: 2002-02-01
Läst: 3801
Röster: 8
Skribent: Staffan Berg

Rösta på artikeln


Förord


När en slutanvändare använder ditt program vill han eller hon oftast kunna skriva ut innehållet. Delphi erbjuder en ytterst kraftfull rapportgenerator i vilken du visuellt kan konstruera din rapport med avseende på placering, formatering, sidhuvud, sidfot, detaljer och gruppering. I denna artikel kommer jag att beskriva grunderna för att skapa en rapport utifrån en Accessdatabas.

Definiera datakällan till rapporten
För att kunna skapa en enkel applikation med en rapport måste vi som sagt var ha en databas och precis som i ADO-artikeln använder jag i denna artikel databasfilen Biblio.mdb som följer installationen av Microsoft Access. Infoga kontrollerna TADOQuery och TDatasource på ditt formulär. Du hittar dessa komponenter på flikarna ADO respektive Data Access

Börja med att koppla datakällan i din Datasource genom att välja ADOQuery1 i egenskapen Dataset i Objektinspektorn.
Markera ADOQuery1 och leta reda på databasfilen Biblio.mdb genom att köra guiden som startar när du klickar på knappen med de tre punkterna i egenskapen Connectionstring i Objektinspektorn. Välj därefter egenskapen SQL och skriv in följande SQL-sats i fönstret som kommer upp:  


 SELECT * FROM Authors WHERE au_id < 51;


SQL-

SQLsatsen plockar ut alla poster från alla fält i tabellen Authors med ID-nummer lägre än 51. Detta för att vi skall begränsa antalet poster i vår rapport till 50 stycken. Databasen Biblio.mdb innehåller som standard över 16 000 poster och det kan ju vara lite slöseri att skriva ut alla dessa.

Infoga QuickReport-komponenterna
Du finner alla rapportkomponenter på fliken QReport. Välj komponenten TQuickRep som du hittar längst till vänster i fliken och rita sedan ut den med lagom storlek på formuläret. Koppla sedan QuickRep1 till komponenten ADOQuery1 genom att välja denna i egenskapen Dataset

Vi börjar sedan att bygga rapporten visuellt med hjälp av några av de övriga komponenterna på samma flik. Det kan vara lämpligt att ha ett sidhuvud i rapporten. Vi fixar detta genom att infoga ett sådant med komponenten TQRBand. Denna komponent har ett antal valmöjligheter. I egenskapen BandType väljer vi rbPageHeader som representerar sidhuvudet på rapporten. Infoga sedan en rubrik (en etikett) på detta sidhuvud och döp den till Författare (förslagsvis). Detta gör du i egenskapen Caption i Objektinspektorn.

Infoga därefter ytterligare en TQRBand i rapporten och definiera denna som rbDetail i egenskapen BandType. När denna komponent är definierad som detalj läser rapporten alla poster som är definierade i SQL-egenskapen för ADOQuery1 dvs. de 50 första posterna. För att posterna överhuvudtaget skall visas i rapporten måste vi också bestämma vilka fält som vi vill ha med i rapporten. För detta ändamål använder vi oss av komponenten TQRDBText.

Rita ut tre komponenter av typen TQRDBText på rapporten och koppla sedan dessa till databasfilens tre fält (au_id, Author och Year_Born). Detta utförs genom att välja dessa i egenskapen DataField. Glöm ej heller att välja ADOQuery1 i egenskapen Dataset även för dessa kontroller.

Notera!
Jag har infogat ett understrykningsstreck mellan orden Year och Born i fältnamnet Year Born. Detta för att jag upptäckte att mellanslaget ställde till bekymmer när man skriver SQL-satser. Har du inte tillgång till Microsoft Access så att du kan ändra detta på ett smidigt sätt kan du använda dig av klammerparenteser i dina SQL-satser [Year Born]. Detta eliminerar också problemen med mellanslag i fältnamn.

När du infogat alla kontrollerna bör rapporten se ut så här:

Det är egentligen inte svårare än så här att skapa en enkel rapport. Du ritar ut en rapport på formuläret och lägger sedan på de komponenter som du önskar använda. Det finns en hel rad med olika komponenter på fliken QReport som du säkert redan upptäckt. När du håller muspekaren över dessa uppenbarar sig en popuptext med ett förklarande namn. Mer information om hur dessa används hittar du i Delphis direkthjälp. 

Testa rapporten
När vi nu kommit så här långt vill vi testa och kontrollera hur vår rapport kommer att se ut. För att enklast göra detta ska vi titta på rapporten i förhandsgranskningsläge. Vi infogar en vanlig kommandoknapp som vi hittar på fliken Standard. Dubbelklicka på denna och skriv sedan in följande Pascalkod:


QuickRep1.Preview;



Denna kod öppnar ett förhandsgranskningsfönster och här ser du hur rapporten kommer att se ut på papper. Du kan utifrån detta fönster skriva ut rapporten. Vill du inte ha denna förhandsgranskningsfunktion kan du istället skriva ut rapporten direkt från formuläret. Byt då bara ut metoden Preview mot Print.
 

QuickRep1.Print;


 


Fler komponenter
Rapportgeneratorn i Delphi är bevisligen ytterst kraftfull och du kan skapa flera funktioner utöver de som jag har demonstrerat i denna artikel. Du kan t ex gruppera information genom att infoga komponenten TQRGroup och sedan infoga textrutor i denna efter hur fälten skall grupperas. Du kan också skapa uttryck där du kan beräkna önskade poster. För detta används komponenten TQRExpr. Mitt tips är att prova sig fram genom att infoga komponenterna, koppla dessa mot andra komponenter och därefter provköra. Man ser ganska snabbt hur de används och vad de utför.


Vid tangentbordet
/Staffan Berg



 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -