Jos olet joskus joutunut luomaan rajatun luettelon kenttä-/kyselyarvoista sekä muista tietokannastasi löytyvistä tiedoista, tiedät, että se voi olla parhaimmillaankin haastavaa – ja tehtävä, jonka useimmat ihmiset uskovat olevan mahdotonta. Jos sinua on esimerkiksi pyydetty luomaan raportti siitä, ketkä olivat vuoden viisi parasta myyjää – laskevassa järjestyksessä – kunkin kuukauden osalta tai kolme lähimpänä olevaa myymälää kullekin asiakkaalle, joudut mahdollisesti painimaan ristiintaulukointikyselyiden kanssa tai yhdistämään tuloksia manuaalisesti Accessin ulkopuolella. Mutta pienen VBA-koodin avulla saat aikaan seuraavanlaisia tuloksia muutamassa minuutissa…
| Johannes | John, Sally, Bill |
| helmikuu | Sally, Adam, John |
| maaliskuu | Adam, Sally, Bill |
Usein on hyödyllistä pystyä näyttämään rajoitettu luettelo tuloksista osana suurempaa kyselyä - luettelo kolmen tärkeimmän asiakkaan kullekin myyntiedustajalle, lähin 3 myymälää jokaiselle eniten kuluttavalle asiakkaallesi , luetteloa jatketaan.
Lopeta raportin ompeleminen yhteen
Vaikka on enemmän kuin mahdollista saada yksityiskohdat tällaisen raportin luomiseen, sinun on yleensä päädyttävä tulokset manuaalisesti yhteen Accessin ulkopuolella osana laskentataulukkoa tai raporttia.
Seuraava koodi poistaa tarpeen hioa kyselytuloksia Accessin ulkopuolella, ja sen sijaan voit tuottaa edellä esitetyt tulokset helposti.
Ensinnäkin hahmotellaan, mitä haluamme koodin pystyvän tekemään:
"Annetaan kysely, palauta x tulosten määrä yhdistettynä yhdeksi merkkijonoksi, jonka y rajaa"
Ennen kuin aloitamme
Ennen kuin tarkastelemme koodia, on tärkeää huomata, että vaikka on mahdollista luoda VBA-toiminto, joka on yleisempi ja pystyy käsittelemään mitä tahansa kyselyyhdistelmää, se johtaisi melko pitkään koodiin, joten mitä teemme tässä artikkelissa on määritellä esimerkkitapaus ja kirjoittaa toiminto tapauksen käsittelemiseksi. Kun teet sen tällä tavalla, koodin luominen on helpompaa, jotta se vastaa erityistarpeitasi.
Esimerkkitapaus
Meillä on myyntitietokanta, joka tallentaa tiedot asiakkaiden ostoista sekä tuoteryhmän, johon osto kuuluu. Haluamme tuottaa raportin, joka näyttää kuukausittain 3 tärkeintä luokkaa laskevassa järjestyksessä.
Yksinkertaisuuden vuoksi pidämme esimerkin yhdessä taulukossa, vaikka päämies toimii asennuksestasi riippumatta. Käytettävä taulukko on määritetty seuraavasti:
| Myynti |
| Asiakkaan nimi |
| TransactionDate |
| TransactionValue |
| Luokka |
Ilmeisesti tämä on liian yksinkertaistettu asennus, mutta saat idean.
Nyt - koodi
Public Function CategoryList(Month As String, NumResults As Integer, SortAscending As Boolean, Delimiter As String) As String
Dim sSql, resultString As String
Dim rst As Recordset
Dim firstLine As Boolean
'Create our SQL string using the supplied parameters
sSql = "SELECT TOP " & NumResults & " [category] FROM sales GROUP BY Format([TransactionDate],""mmm""), sales.Category HAVING (((Format([TransactionDate], ""mmm"")) = """ & Month & """))"
If SortAscending Then sSql = sSql & " ORDER BY Sum(sales.TransactionValue) DESC;"
Set rst = CurrentDb.OpenRecordset(sSql)
firstLine = True
'Loop through the results, and create the string to return
With rst
Do While Not .EOF
If Not firstLine Then
resultString = resultString & Delimiter & .Fields("category")
Else
resultString = resultString & .Fields("category")
firstLine = False
End If
.MoveNext
Loop
End With
Set rs = Nothing
CategoryList = resultString
End Function
Koodi - selitetty

Huomaat, että tarkistamme, pitäisikö meidän lisätä merkkijonoon erotinmerkki vai ei - ilman tätä tarkistusta päädyt joko huonosti muotoiltuun tulosmerkkijonoon tai joudut lisäämään koodin ei-toivottujen erottimien poistamiseksi - tällä tavoin pitää asiat alusta alkaen mukavana ja siistinä.
Itse toiminto voidaan tietysti kutsua kyselystä, raportista tai mistä tahansa haluamastasi Accessista.
Korjaa vioittunut pääsytietokanta
Jos kohtaat vioittuneet Access-tietokannat kun suoritat yllä olevan koodin, on parempi käyttää jotain erikoistyökalua niiden korjaamiseen ja palauttaa kaikki taulukot vioittuneista tietokannoista.
Tekijän esittely:
Mitchell Pond on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien korjata SQL-ongelma ja Excel-palautusohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com