Ako vo vašom prístupe zobraziť viac výsledkov v jednom dotazovacom poli

Zdieľať teraz:

Ak ste niekedy potrebovali vytvoriť zoznam hodnôt polí/dotazov s oddelenými čiarami spolu s ďalšími informáciami z vašej databázy, viete, že to môže byť prinajlepšom náročné – a úloha, ktorú si väčšina ľudí myslí, že nebude možná. Ak ste napríklad dostali žiadosť o vytvorenie správy o tom, kto bolo 5 najlepších predajcov – v zostupnom poradí – za každý mesiac v roku alebo o 3 predajniach najbližších ku každému zákazníkovi, potom vám pravdepodobne zostane len trápiť sa s krížovými dotazmi alebo manuálne kombinovať výsledky mimo Accessu. Ale s pomocou malého kódu VBA budete mať v priebehu niekoľkých minút výsledky, ako sú tieto…

Jan John, Sally, Bill
február Sally, Adam, John
Mar Adam, Sally, Bill

Existuje veľa prípadov, kedy by bolo užitočné zobraziť zoznam výsledkov s oddeľovačmi ako súčasť väčšieho dopytu - zoznam 3 najväčších zákazníkov pre každého obchodného zástupcu, 5 najbližších obchodov každému z vašich zákazníkov s najvyššou spotrebou. , zoznam pokračuje.

Prestaňte spájať správu

Pani AccessAj keď je viac ako možné získať podrobnosti na vytvorenie tohto druhu prehľadu, zvyčajne by ste nakoniec museli výsledky spojiť ručne mimo programu Access ako súčasť tabuľky alebo prehľadu.

Nasledujúci kód obmedzuje potrebu manipulovať s výsledkami dotazu mimo programu Access a namiesto toho vám umožní ľahko vytvoriť druh výsledkov zobrazených vyššie.

Najprv si načrtneme, čo chceme, aby kód dokázal:

„Pri zadaní dotazu vráti x počet výsledkov skombinovaných do jedného reťazca, ktorý je ohraničený znakom y“

Skôr ako začneme

Predtým, ako sa pozrieme na kód, je dôležité poznamenať, že aj keď je možné vytvoriť funkciu VBA, ktorá je všeobecnejšia a schopná spracovať ľubovoľnú kombináciu dotazov, výsledkom by bol dosť zdĺhavý kód, čo teda urobíme v tomto článku. je definovať ukážkový prípad a napísať funkciu, ktorá daný prípad zvládne. Ak to urobíte týmto spôsobom, bude pre vás oveľa jednoduchšie vytvoriť kód znova, aby vyhovoval vašim konkrétnym potrebám.

Ukážkový prípad

Máme databázu predaja, ktorá uchováva podrobnosti o nákupoch zákazníkov spolu s kategóriou produktu, do ktorej nákup patrí. Chceme vytvoriť správu, ktorá bude podľa mesiacov zobrazovať najvyššie 3 kategórie v zostupnom poradí.

Pre jednoduchosť si príklad necháme na jednu tabuľku, hoci principál bude fungovať bez ohľadu na vaše nastavenie. Tabuľka, ktorú budeme používať, je nastavená takto:

Sales - Predaj
Meno zákazníka
Dátum transakcie
Hodnota transakcie
kategórie

Je zrejmé, že ide o príliš zjednodušené nastavenie, ale máte predstavu.

Teraz - 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

Kód - vysvetlené

Kód VBAAko vidíte, kód je celkom zrozumiteľný. Začneme použitím zadaných parametrov na zostavenie nášho dotazu. Po vytvorení reťazca dotazu ho vykonáme a prejdeme si výsledky v slučke, pričom ich spojíme a vytvoríme jeden výsledný reťazec, ktorý hľadáme.

Všimnete si, že kontrolujeme, či by sme do reťazca mali alebo nemali pridávať oddeľovač - bez tejto kontroly by ste nakoniec dostali buď zle naformátovaný výsledný reťazec, alebo by ste museli pridať kód na odstránenie nežiaducich oddeľovačov - takto budete mať veci hneď od začiatku pekné a upratané.

Samotnú funkciu je možné samozrejme vyvolať z dotazu, správy alebo z ľubovoľného miesta v rámci programu Access.

Opravte poškodenú databázu prístupu

Ak sa stretnete poškodené databázy Accessu keď spustíte vyššie uvedený kód, je lepšie použiť nejaký špecializovaný nástroj na ich opravu a obnovu všetkých tabuliek z poškodených databáz.

Úvod autora:

Mitchell Pond je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane opraviť problém s SQL a vynikajúce softvérové ​​produkty na obnovenie. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.