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
Bá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

É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