Če ste kdaj morali skupaj z drugimi informacijami iz baze podatkov sestaviti ločen seznam vrednosti polj / poizvedb, boste vedeli, da je v najboljšem primeru lahko izziv - in naloga most ljudje mislijo, da to ne bo mogoče. Če ste bili na primer pozvani, da pripravite poročilo o tem, kdo so bili najboljših 5 prodajalcev - v padajočem vrstnem redu - za vsak mesec v letu ali 3 najbližje prodajalne posamezni stranki, potem boste morda ostali s prepiranjem poizvedb z navzkrižnimi tabelami ali ročnim kombiniranjem rezultatov zunaj Accessa. Toda s pomočjo majhne kode VBA boste v nekaj minutah ustvarili rezultate, kot so naslednji ...
| John | John, Sally, Bill |
| februar | Sally, Adam, John |
| To | Adam, Sally, Bill |
Velikokrat bi bilo koristno, če bi lahko prikazali omejen seznam rezultatov kot del večje poizvedbe - seznam 3 najboljših največjih kupcev za vsakega prodajnega predstavnika, najbližjih 5 trgovin vsaki od vaših najbolj porabljenih strank , seznam se nadaljuje.
Nehajte sestavljati poročila
Čeprav je podrobnosti za ustvarjanje tovrstnega poročila več kot mogoče, bi običajno morali ročno povezati rezultate zunaj Accessa kot del preglednice ali poročila.
Naslednja koda odpravlja potrebo po rokovanju z rezultati poizvedb zunaj Accessa in namesto tega vam bo omogočila, da z lahkoto ustvarite zgoraj prikazane rezultate.
Najprej opišimo, kaj želimo, da lahko koda počne:
"Glede na poizvedbo vrnite x število rezultatov, združenih v en niz, ki je razmejen z y"
Preden začnemo
Preden pogledamo kodo, je pomembno opozoriti, da čeprav je mogoče ustvariti funkcijo VBA, ki je bolj splošna in je sposobna obdelovati katero koli kombinacijo poizvedb, bi to povzročilo precej dolgo kodo, kaj bomo storili v tem članku je določiti primer primera in napisati funkcijo za obravnavo tega primera. Če boste to storili na ta način, boste veliko lažje ustvarili kodo, da bo ustrezala vašim posebnim potrebam.
Primer primera
Imamo prodajno bazo podatkov, ki vsebuje podatke o nakupih strank, skupaj s kategorijo izdelka, ki mu nakup pripada. Izdelati želimo poročilo, ki po mesecih prikazuje tri glavne kategorije v padajočem vrstnem redu.
Zaradi enostavnosti bomo primer shranili v eno tabelo, čeprav bo glavnica delovala ne glede na vašo nastavitev. Tabela, ki jo bomo uporabljali, je postavljena na naslednji način:
| Prodaja |
| Ime stranke |
| Datum transakcije |
| TransactionValue |
| Kategorija |
Očitno gre za preveč poenostavljeno nastavitev, vendar idejo razumete.
Zdaj - koda
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
Koda - razložena

Opazili boste, da preverjamo, ali naj niz dodajamo ločilo ali ne - brez tega preverjanja bi na koncu dobili slabo oblikovan niz rezultatov ali pa bi morali dodati kodo za odstranitev neželenih ločil - na ta način so stvari že od samega začetka lepe in urejene.
Samo funkcijo lahko seveda pokličete znotraj poizvedbe, poročila ali kjer koli želite iz Accessa.
Odpravite poškodovano dostopno bazo podatkov
Če naletite poškodovane baze podatkov Access ko zaženete zgornjo kodo, je bolje uporabiti neko posebno orodje, da jih popravite in obnovite vse tabele iz poškodovanih baz podatkov.
Uvod avtorja:
Mitchell Pond je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z popravilo težave SQL in excel programske izdelke za obnovitev. Za več informacij obiščite www.datanumen.com