Hogyan jeleníthet meg több eredményt egyetlen lekérdezési mezőben a hozzáférésben

Oszd meg most:

Ha valaha is kellett már mező-/lekérdezésértékek elválasztott listáját létrehoznia az adatbázisából származó egyéb információk mellett, akkor tudja, hogy ez legjobb esetben is kihívást jelenthet – és egy olyan feladat, amelyről a legtöbb ember azt gondolja, hogy lehetetlen. Ha például arra kérik, hogy készítsen egy jelentést arról, hogy kik voltak az év minden hónapjában az 5 legjobb értékesítő – csökkenő sorrendben –, vagy kik voltak az egyes vásárlókhoz legközelebb eső 3 üzlet, akkor valószínűleg kereszttáblás lekérdezésekkel kell bajlódnia, vagy manuálisan kombinálnia kell az eredményeket az Accessen kívül. De egy kis VBA-kód segítségével perceken belül az alábbihoz hasonló eredményeket hozhat létre…

január John, Sally, Bill
Február Sally, Adam, John
Mar Adam, Sally, Bill

Sokszor hasznos lenne egy körülhatárolt találati lista megjelenítése egy nagyobb lekérdezés részeként – minden értékesítési képviselő esetében a 3 legnagyobb vásárló listája, a legtöbbet költő vásárlóhoz a legközelebbi 5 üzlet. , a lista folytatódik.

Hagyd abba a jelentés összefűzését

Ms AccessBár több mint lehetséges, hogy egy ilyen jelentést készítsen a részletekről, általában a végén manuálisan kell összefűznie az eredményeket az Accessen kívül egy táblázat vagy jelentés részeként.

A következő kód kiküszöböli annak szükségességét, hogy az Accessen kívüli lekérdezések eredményeivel babráljon, és ehelyett lehetővé teszi a fent bemutatott típusú eredmények egyszerű előállítását.

Először is vázoljuk, hogy mit akarunk, hogy a kód képes legyen:

„Adott lekérdezés esetén x számú eredményt ad vissza, egyetlen karakterláncban kombinálva, amelyet y-vel határol”

Mielőtt elkezdenénk

Mielőtt megnéznénk a kódot, fontos megjegyezni, hogy bár lehetséges egy általánosabb VBA-függvény létrehozása, amely bármilyen lekérdezéskombinációt képes kezelni, ez meglehetősen hosszú kódot eredményezne, ezért ebben a cikkben mi lesz. egy példaeset definiálása és az adott eset kezelésére szolgáló függvény írása. Ha így tesz, sokkal könnyebben tudja újra létrehozni a kódot, hogy megfeleljen sajátos igényeinek.

A minta eset

Van egy értékesítési adatbázisunk, amely tárolja a vásárlói vásárlások adatait, valamint a vásárláshoz tartozó termékkategóriát. Szeretnénk egy olyan jelentést készíteni, amely havi bontásban mutatja a 3 legjobb kategóriát csökkenő sorrendben.

Az egyszerűség kedvéért a példát egyetlen táblában tartjuk, bár az egyszerű beállítástól függetlenül működik. Az általunk használt táblázat a következőképpen van felállítva:

Értékesítés
Ügyfél neve
A tranzakció időpontja
Tranzakcióérték
Kategória

Nyilvánvalóan ez egy túlságosan leegyszerűsített beállítás, de érti az ötletet.

Most – a kód

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

A kód – magyarázta

VBA kódAmint láthatod, a kód meglehetősen magától értetődő. Először a megadott paramétereket használjuk a lekérdezés felépítéséhez. Miután a lekérdezési karakterlánc létrejött, végrehajtjuk, és végigmegyünk az eredményeken, összefűzve őket, hogy létrehozzuk a keresett egyetlen eredménykarakterláncot.

Észre fogja venni, hogy ellenőrizzük, hogy adjunk-e elhatárolót a karakterlánchoz vagy sem – ez az ellenőrzés nélkül vagy rosszul formázott eredménykarakterláncot kapna, vagy kódot kellene hozzáadnia a nem kívánt határolók eltávolításához. így a kezdetektől fogva szép és rendezett marad a dolog.

Maga a függvény természetesen meghívható lekérdezésből, jelentésből vagy bárhonnan az Accessen belül.

Javítsa ki a sérült hozzáférési adatbázist

Ha találkozik sérült Access adatbázisok A fenti kód futtatásakor jobb, ha valamilyen speciális eszközt használ a javításukra, és helyreállítja az összes táblát a sérült adatbázisokból.

Szerző Bevezetés:

Mitchell Pond adat-helyreállítási szakértő DataNumen, Inc., amely világelső az adat-helyreállítási technológiák területén, beleértve SQL probléma javítása és Excel helyreállítási szoftvertermékek. További információért látogasson el www.datanumen.com

Oszd meg most:

Hozzászólások lezárva.