Kuidas kuvada oma juurdepääsus ühel päringuväljal mitut tulemust

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

Pr AccessKuigi 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

VBA koodNagu näete, on kood üsna iseenesestmõistetav. Meie start kasutades meie päringu koostamiseks esitatud parameetreid. Kui päringustring on loodud, käivitame selle ja vaatame tulemusi läbi, ühendades need kokku, et moodustada üks otsitav tulemuse string.

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

Kommentaarid on suletud.