Kā savā piekļuvē vienā vaicājuma laukā parādīt vairākus rezultātus

Kopīgot tūlīt:

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ā

Access kundzeLai 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

VBA kodsKā redzat, kods ir diezgan pašsaprotams. Mēs sākam ar norādīto parametru izmantošanu, lai izveidotu mūsu vaicājumu. Kad vaicājuma virkne ir izveidota, mēs to izpildām un ciklā apstrādājam rezultātus, apvienojot tos kopā, lai izveidotu vienoto meklējamo rezultātu virkni.

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

Kopīgot tūlīt:

Komentāri ir slēgti.