Kui teil on kunagi olnud vaja koostada piiritletud loend väljade/päringu väärtustest koos muu oma andmebaasi teabega, siis teate, et see võib parimal juhul olla keeruline – ja ülesanne most inimesed arvavad, et see pole võimalik. Kui teil on näiteks palutud koostada aruanne selle kohta, kes olid 5 parimat müügiinimest (kahanevas järjekorras) aasta iga kuu kohta või igale kliendile lähima 3 kaupluse kohta, siis olete tõenäoliselt alles. ristpäringutega riidlemisega või tulemuste käsitsi kombineerimisega väljaspool Accessi. Kuid väikese VBA-koodi abil saate mõne minutiga saavutada järgmisi tulemusi…
| John | John, Sally, Bill |
| veebruar | Sally, Adam, John |
| Teisip | Adam, Sally, Bill |
On palju kordi, mil oleks kasulik kuvada piiritletud tulemuste loendi osana suuremast päringust – iga müügiesindaja 3 suurima kliendi loendist, igale teie kõige rohkem kulutavale kliendile 5 lähimat poodi. , nimekiri jätkub.
Lõpetage oma aruande ühendamine
Kuigi sellise aruande koostamiseks on rohkem kui võimalik saada üksikasju, peate tavaliselt tulemused käsitsi kokku liitma väljaspool Accessi arvutustabeli või aruande osana.
Järgmine kood välistab vajaduse väljaspool Accessi päringutulemustega askeldada ja selle asemel võimaldab teil ülaltoodud tulemusi hõlpsalt toota.
Esmalt kirjeldame, mida me tahame, et kood saaks teha:
"Antud päringule tagastab x arv tulemusi, mis on kombineeritud üheks stringiks, mis on eraldatud y-ga"
Enne kui alustame
Enne koodi vaatamist on oluline märkida, et kuigi on võimalik luua VBA-funktsioon, mis on üldisem ja mis on võimeline käsitlema mis tahes päringukombinatsiooni, tooks see kaasa üsna pika koodi, nii et mida me selles artiklis teeme. on näitejuhtumi määratlemine ja selle juhtumi käsitlemise funktsiooni kirjutamine. Sel viisil toimides on teil palju lihtsam oma konkreetsetele vajadustele vastava koodi uuesti luua.
Näidisjuhtum
Meil on müügiandmebaas, mis salvestab üksikasjad klientide ostude kohta koos tootekategooriaga, millesse ost kuulub. Soovime koostada aruande, mis näitab kuude lõikes 3 parimat kategooriat kahanevas järjekorras.
Lihtsuse huvides jätame näite ühele tabelile, kuigi printsiip töötab olenemata teie seadistusest. Tabel, mida me kasutame, on üles seatud järgmiselt:
| Müük |
| Kliendi nimi |
| Tehingu kuupäev |
| Tehinguväärtus |
| Kategooria |
Ilmselgelt on see liiga lihtsustatud seadistus, kuid saate aru.
Nüüd – kood
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
Kood – selgitatud

Märkate, et kontrollime, kas peaksime stringile eraldusmärgi lisama või mitte – ilma selle kontrollimiseta oleks tulemuseks kas halvasti vormindatud tulemuse string või peaksite soovimatute eraldajate eemaldamiseks lisama koodi – nii hoiab asjad algusest peale kena ja korras.
Funktsiooni ennast saab loomulikult välja kutsuda päringust, aruandest või mis tahes kohas, mis teile meeldib Accessis.
Parandage rikutud juurdepääsu andmebaas
Kui kohtate rikutud Accessi andmebaasid Kui käivitate ülaltoodud koodi, on parem kasutada mõnda spetsiaalset tööriista nende parandamiseks ja kõigi tabelite taastamiseks rikutud andmebaasidest.
Autori sissejuhatus:
Mitchell Pond on andmete taastamise ekspert DataNumen, Inc., mis on maailmas juhtiv andmete taastamise tehnoloogiate, sealhulgas SQL probleemi parandamine ja Exceli taastamise tarkvaratooted. Lisateabe saamiseks külastage www.datanumenCom