Microsoft Access raportit ja kyselyt - Luento 6
Tällä luennolla luodaan Microsoft Accessin avulla tietokannan tiedoista raportteja.
Luentotaltiointi
Valitettavasti luennon äänenvoimakkuus on hyvin matala.
Ongelmia videon katselussa?Raportit
Raporttien avulla voidaan tulostaa siistejä yhteenvetoja kyselyjen tai suoraan taulujen pohjalta.
Raportin luonti

- Raportteja on helpointa luoda suoraan raporttivelholla. Valitse Reports -välilehti ja Create report by using wizard.
- Raportin pohjaksi voi valita tauluja tai kyselyjä.
- Voit valita haluamasi kentät tauluistaja kyselyistä.
- Raportin sisältöä voi ryhmitellä kenttien perusteella lisäämällä ryhmittelytasoja (grouping levels).
- Voit määritellä eri kentät haluamaasi järjestykseen (ascending,descending).
- Raporttia voi halutessaan muokkailla (laskea suoraan erilaisia kenttiä) välilehden Summary Options:lla.
- Voit myös valita raportillesi haluamasi ulkoasun ja tyylin.
- Raporttiin voi sisällyttää yhteenvetoja kentistä
Raportin muokkaus
- Valmista raporttia pääset muokkaamaan vaihtamalla Design view -näkymä päälle.

- Raporttia voi muokata mm. toolbox -työkalulla.

- Kenttiä pääset muokkaamaan hiiren oikealla näppäimellä kyseisen kentän päällä ja valitsemalla properties.

Kaavion lisääminen raporttiin

- Raportteihin voidaan lisätä kaavioita. Luo raportti ja valitse Design view ja valitse insert -> chart.
- Valitse raportistasi kohta johon haluat kaavion lisätä ja paina vasenta hiiren näppäintä.
- Sinulle avautuu kaavionluontivelho, jossa pystyt määrittelemään haluamasi kentät, jotka sisällytetään kaavioon.
- Valitse haluamasi kentät ja kaaviotyyppi.
- Voit esikatsella valitsemaasi kaaviota ja määritellä siihen halutut laskutoimitukset kentistä (esim. sum, count), kaksoisnäpäyttämällä kyseistä kenttää kaavion alapuolella. Voit raahata ja pudottaa haluamasi kentän sarjaan, jonka mukaan haluat kaaviosi luoda.
- Raporttia ja kaaviota yhdistävien kenttien täytyy esiintyä raportissa
- Huomaa ettei kaavio päivity oikein vielä suunnittelunäkymässä. Palaa varsinaiseen raporttinäkymään nähdäksesi kaavion oikein.
Uusien kenttien lisääminen raporttiin ja muuta ryhmittelyä
- Valitse muokkaustilassa view -> sorting and grouping, muuttaaksesi ryhmittelyä.
- Lisää uusi kenttä listaan ja valitse sille näkyvät alikentät. (Esim. header ja footer)

Sarakkeet raporteissa
- Jos tietoa halutaan järjestää mieluummin sarakkeittain, valitse ensin raportin muokkaustila (design view).
- Valitse tämän jälkeen muutettava alue, esim. Detail. Paina hiiren oikeaa näppäintä ja valitse properties.
- Valitse Format -välilehdeltä New Row Or Col. Valitse vaihtoehdoksi esim. Before and After.
- Määrittele sen jälkeen montako saraketta sinulla on käytössä file -> page setup -valikosta, Columns välilehdeltä, number of columns kentässä.
Sarakkeet raporteissa
Normaalisti raporteissa jokaisesta tietueesta tulee uusi rivi. Jos ryhmiin liittyy useita tietueita, niin raportista saattaa tulla usean sivun mittainen. Kompakti raportti saavutetaan, kun pitkät rivilistat järjestetään sarakkeisiin:
- Luo raportti normaalisti
- Valitse raportin luomisen jälkeen File | Page Setup | Columns ja aseta sarakkeita tietty määrä ja anna niille leveys.
- Nyt rivien sijaan kaikki tietueet järjestyvät sarakkeille, mikä ei ole
tavoiteltavaa kaikissa tapauksisas. Mene
raportin design-tilaan View | Design View.
- Valitse ylempien ryhmittelytasojen Header-osille oikealla hiiren napilla Properties ja sieltä kohtaan New Col or Row arvo Before Section.
- Valitse vastaavasti Footer-osille arvo After Section.
- Jos Footer-osa ei ole käytössä, niin valitse Before & After
- Siirrä kaikkien osien sisällä olevat kentät vasempaan laitaan, koska sisennys voi viedä tekstin pois sarakkeesta.
Aliraportit
Sarakkeiden ongelmana on se, että kaikkien tietojen on mahduttava määrämittaiseen sarakkeeseen. Sarakkeistaminen on aina raporttikohtainen, joten otsikon kentän pituutta ei voi erikseen säätää. Täytyy siis tehdä kaksi raporttia ja yhdistää ne:
- Tehdään ensin aliraportti, jossa on sarakkeittain tulevat tiedot (esim. suutarin tapauksessa tavarat ja niiden ominaisuudet). Mukaan on otettava kenttä, joka yhdistää tietueen pääraporttiin (esim. Tyo_TyoID).
- Piilota aliraportista ID-kenttä napauttamalla oikealla ja valitsemalla Visible- ominaisuuteen arvo No.
- Luodaan pääraportti, jossa on vain otsikkotiedot (esim. kaikkien töiden tiedot). Lisää aliraportti raahamalla se Details-alueelle.
- Avaa tuodun aliraporttiobjektin ominaisuuslistasta Data-välilehti. Valitse Link Child Fields-kohtaan Tyo_TyoID ja Link Master Fields-kohtaan TyoID (aivan kuten kaavioidenkin kanssa).
- Tarkista vielä, että Details-alueen ja tuodun aliraportin ominaisuuksista, että Can Grow-ominaisuudessa on arvo Yes.
Dynaaminen raportti lomakkeella
Dynaaminen raportti perustuu kyselyyn, jossa jokin tieto tulee lomakkeelta. Suutari saattaisi haluta esimerkiksi tietää juuri katselun alla olevaan työtehtävään liittyvät tavarat ja niiden ominaisuudet tai kyseisessä työtehtävässä jo suoritetut vaiheet.
- Luodaan kysely, jossa on raporttiin haluttavat tiedot. Aluksi raportissa voi olla kaikki tiedot, esim. kaikki tavarat ja niihin liittyvät ominaisuudet:
SELECT LapunNro, Arvo, OminaisuusNimi FROM Tavara, Kuvaillaan, Ominaisuus WHERE Kuvaillaan.Tavara_LapunNro=Tavara.LapunNro And Kuvaillaan.Ominaisuus_OminaisuusID=Ominaisuus.OminaisuusID
- Luodaan raportti tämän kyselyn pohjalta. Esimerkissä voidaan tehdä ryhmittely LapunNron mukaan. Testataan raporttia, missä pitäisi näkyä kaikki tavarat ja näihin liittyvät ominaisuudet.
- Luodaan Tyo-lomake velhon avulla. Otetaan mukaan kaikki normaalit ominaisuudet ja lisäksi TyoID. Avataan Tyo-lomake Design-tilassa, poistetaan TyoID-otsikko ja piilotetaan TyoID-tekstilaatikko. Piilotus onnistuu Properties-ikkunan Visible-ominaisuuden arvoa muuttamalla.
- Lisätään työlomakkeelle CommandButton, joka avaa äskettäin tehdyn raportin Preview-tilaan. Kokeillaan nappia ja raportin pitäisi näyttää edelleen kaikkia tavaroita.
- Tarkista, mikä on TyoID-tekstilaatikon nimi. Tieto löytyy Properties-ikkunan kohdasta Name (yleensä se on sama kuin kentän nimi eli tässä tapauksessa TyoID). Muokataan nyt kyselyä, johon raportti pohjautuu. Avaa Queries-välilehdeltä raportti Design-tilaan ja valitse SQL View, ellei se ole jo päällä. Rajoitetaan näytettäviä tavaroita lomakkeen TyoID-tekstilaatikosta saatavan tiedon perusteella:
SELECT LapunNro, Arvo, OminaisuusNimi FROM Tavara, Kuvaillaan, Ominaisuus WHERE Kuvaillaan.Tavara_LapunNro=Tavara.LapunNro And Kuvaillaan.Ominaisuus_OminaisuusID=Ominaisuus.OminaisuusID AND Tavara.Tyo_TyoID = [Forms]![Tyo]![TyoID];
- Nyt napin painallus antaa vain tiettyyn työhön liittyvät tavarat.
Suutari-esimerkissä työlomakkeelle voidaan tehdä samalla periaatteella myös toinen nappula, joka avaa kirjatut työvaiheet. Aluksi kyselyyn tarvitsee ottaa vain Tehdaan- ja Tyovaihe-tauluista saadut Pvm- ja Kuvaus-ominaisuudet.
Lisätietoa: Omat kontrollit
Halutaan tehdä työlomakkeelle alasvetovalikko, jossa näkyy työhön liittyvät tavarat. Valikosta voidaan ottaa yksi tavara ja näyttää raportti, jossa kerrotaan valitun tavaran ominaisuudet.
- Lisätään Combobox Tyo-lomakkeelle Toolbox-valikosta. Otetaan tiedot taulusta Tavara ja sieltä tieto LapunNro.
- Nyt kytkentä työhön ei vielä toimi, joten muutetaan comboboxin ominaisuuksia. Kohdasta Data | Row Source löytyy tieto
kyselystä, joka hakee comboboxin vaihtoehdot. Lisätään siihen WHERE-ehto:
SELECT Tavara.LapunNro FROM Tavara WHERE Tavara.Tyo_TyoID = [Forms]![Tyo]![TyoID] ORDER BY [LapunNro];
- Huom! Toinen vaihtoehto olisi ollut tehdä kysely, jossa tämä rajoite on huomioitu (ks. edellinen esimerkki)
- Nyt ongelma on se, että comboboxin tiedot eivät päivity, kun vaihdamme
työtä toiseksi lomakkeella. Selvitetään ensin, mikä on Comboboxin nimi (Name-ominaisuus). Valitaan lomakkeelta tyhjä kohta ja sen ominaisuudet, jolloin pääsemme muokkaamaan lomakkeeseen liittyviä tietoja.
Lisätään tapahtumankäsittelijä lomakkeen päivitystapahtumille Event-valikon OnCurrent-kohdasta. Tätä varten joudumme kirjoittamaan muutaman
rivin Visual Basic-koodia, joten valitse Code Builder:
Private Sub Form_Current() ' ajetaan kysely uudelleen eli comboxiin saadaa uudet valintavaihtoehdot Comboboxinnimi.Requery ' asetetaan ensimmäinen vaihtoehto valituksi (Itemdata voi olla myös tyhjä) Comboboxinnimi.Value = Comboboxinnimi.ItemData(0) End Sub
- Lisätään kysely, joka hakee kaikki ominaisuudet ja niiden arvot Kuvaillaan- ja Ominaisuus-tauluista. Luodaan tämän pohjalta raportti.
- Tehdään lomakkeelle CommandButton, joka avaa raportin.
- Lisätään kyselyyn ehto, joka rajoittaa ominaisuudet vain lomakkeelta löytyvään comboboxissa olevaan LapunNro-tietoon:
SELECT Arvo, OminaisuusNimi FROM Kuvaillaan, Ominaisuus WHERE Kuvaillaan.Ominaisuus_OminaisuusID=Ominaisuus.OminaisuusID AND Forms!Tyo!Comboboxinnimi = Kuvaillaan.Tavara_LapunNro;

Käyttäjien kommentit