Ja jums kādreiz ir bijis jāizveido norobežots lauku/vaicājumu vērtību saraksts kopā ar citu informāciju no jūsu datubāzes, jūs zināt, ka tas var būt sarežģīts uzdevums, ko lielākā daļa cilvēku uzskata par neiespējamu. Piemēram, ja jums ir lūgts izveidot pārskatu par to, kuri bija 5 labākie pārdevēji (dilstošā secībā) katrā gada mēnesī vai 3 tuvākie veikali katram klientam, tad jums, iespējams, būs jācīnās ar krustvaicājumiem vai manuāli jāapvieno rezultāti ārpus Access. Bet ar neliela VBA koda palīdzību jūs dažu minūšu laikā iegūsiet šādus rezultātus…
| John | Džons, Sallija, Bils |
| februāris | Sallija, Ādams, Džons |
| sagandēt | Ādams, Sallija, Bils |
Ir daudzas reizes, kad būtu lietderīgi lielāka vaicājuma ietvaros parādīt norobežotu rezultātu sarakstu - top 3 lielāko klientu sarakstu katram tirdzniecības pārstāvim, tuvākos 5 veikalus katram no jūsu vislielākajiem tēriņiem. , saraksts turpinās.
Pārtrauciet ziņojuma sašūšanu kopā
Lai gan šāda veida pārskata izveidošanai ir vairāk nekā iespējams iegūt detalizētu informāciju, parasti galu galā jums nāksies manuāli savienot rezultātus ārpus Access kā izklājlapas vai pārskata daļu.
Šis kods izslēdz nepieciešamību mocīties ar vaicājuma rezultātiem ārpus Access, un tā vietā ļaus jums viegli izveidot iepriekš parādītos rezultātus.
Vispirms ieskicēsim, ko mēs vēlamies, lai kods spētu:
“Ņemot vērā vaicājumu, atgrieziet x rezultātu skaitu, apvienojot tos vienā virknē, kuru atdala y”
Pirms mēs sākam
Pirms mēs aplūkojam kodu, ir svarīgi atzīmēt, ka, lai gan ir iespējams izveidot VBA funkciju, kas ir vispārīgāka un spēj apstrādāt jebkuru vaicājumu kombināciju, to darot, iegūsiet diezgan garu kodu, tāpēc tas, ko mēs darīsim šajā rakstā ir definēt gadījuma piemēru un uzrakstīt funkciju, lai rīkotos ar šo gadījumu. Šādi rīkojoties, jūs daudz vieglāk varēsit atjaunot kodu, lai tas atbilstu jūsu īpašajām vajadzībām.
Gadījuma paraugs
Mums ir pārdošanas datubāze, kurā tiek glabāta informācija par klientu pirkumiem, kā arī produkta kategorija, kurai pieder pirkums. Mēs vēlamies sagatavot ziņojumu, kurā pa mēnešiem tiek rādītas 3 labākās kategorijas dilstošā secībā.
Vienkāršības labad mēs saglabāsim piemēru vienā tabulā, lai gan galvenais darbosies neatkarīgi no jūsu iestatījumiem. Mēs izmantosim šādu tabulu:
| Atlaides |
| Klienta vārds |
| Darījuma datums |
| TransactionValue |
| Kategorija |
Acīmredzot šī ir pārāk vienkāršota iestatīšana, taču jums ir ideja.
Tagad - kods
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
Kods - paskaidrots

Jūs ievērosiet, ka mēs pārbaudām, vai virknei ir jāpievieno atdalītājs vai nē - bez šīs pārbaudes jūs nonākat vai nu ar slikti formatētu rezultātu virkni, vai arī jums būs jāpievieno kods, lai noņemtu nevēlamus atdalītājus - tas jau no paša sākuma uztur lietas jaukas un kārtīgas.
Pašu funkciju, protams, var izsaukt no vaicājuma, pārskata vai jebkuras citas programmas Access sadaļas.
Labot bojātu piekļuves datu bāzi
Ja jūs sastopaties bojātas Access datu bāzes palaižot iepriekš minēto kodu, labāk ir izmantot kādu specializētu rīku, lai tos labotu un visas tabulas atgūtu no korumpētām datu bāzēm.
Autora ievads:
Mičels Dīķis ir datu atkopšanas eksperts DataNumen, Inc., kas ir pasaules līderis datu atkopšanas tehnoloģiju, tostarp labot SQL problēmu un Excel atkopšanas programmatūras produkti. Lai iegūtu vairāk informācijas, apmeklējiet vietni www.datanumen. Ar