Si të shfaqni rezultate të shumta në një fushë të vetme pyetjesh në aksesin tuaj

Nëse ndonjëherë ju është dashur të krijoni një listë të kufizuar të vlerave të fushave/pyetjeve së bashku me informacione të tjera nga baza juaj e të dhënave, do ta dini se kjo mund të jetë sfiduese në rastin më të mirë - dhe një detyrë që shumica e njerëzve mendojnë se nuk do të jetë e mundur. Nëse, për shembull, ju është kërkuar të krijoni një raport se kush ishin 5 shitësit kryesorë - në rend zbritës - për secilin muaj të vitit, ose 3 dyqanet më të afërta me secilin klient, atëherë mund të mbeteni duke u përpjekur të merreni me pyetje të kryqëzuara ose duke kombinuar manualisht rezultatet jashtë Access. Por me ndihmën e pak kodi VBA, do të krijoni rezultate si më poshtë brenda pak minutash…

Janar John, Sally, Bill
Shkurt Sally, Adami, John
E marte Adam, Sally, Bill

Ka shumë raste kur do të ishte e dobishme të jeni në gjendje të shfaqni një listë të kufizuar të rezultateve si pjesë e një pyetjeje më të madhe - një listë me 3 klientët më të mëdhenj për çdo përfaqësues shitjesh, 5 dyqanet më të afërta me secilin prej klientëve tuaj me shpenzime më të larta. , lista vazhdon.

Ndaloni së bashku me raportin tuaj

Znj. AccessNdërsa është më se e mundur për të marrë detajet për të krijuar atë lloj raporti, zakonisht do t'ju duhet t'i bashkoni manualisht rezultatet jashtë Access-it si pjesë e një fletëllogaritëse ose raporti.

Kodi i mëposhtëm shkurton nevojën për t'u përballur me rezultatet e pyetjeve jashtë Access-it dhe në vend të kësaj, do t'ju lejojë të prodhoni me lehtësi llojin e rezultateve të treguara më lart.

Së pari, le të përshkruajmë se çfarë duam që kodi të jetë në gjendje të bëjë:

"Duke pasur parasysh një pyetje, ktheni x numrin e rezultateve, të kombinuara në një varg të vetëm që kufizohet me y"

Para se të fillojmë

Përpara se të shikojmë kodin, është e rëndësishme të theksohet se ndërsa është e mundur të krijohet një funksion VBA që është më i përgjithshëm dhe i aftë për të trajtuar çdo kombinim pyetjesh, duke bërë këtë do të rezultonte në një kod mjaft të gjatë, kështu që çfarë do të bëjmë në këtë artikull është të përcaktohet një rast shembull dhe të shkruhet funksioni për të trajtuar atë rast. Bërja e kësaj mënyre do ta bëjë shumë më të lehtë për ju që të jeni në gjendje të rikrijoni kodin për të përmbushur nevojat tuaja specifike.

Rasti i mostrës

Ne kemi një bazë të dhënash të shitjeve që ruan detajet e blerjeve të klientëve, së bashku me kategorinë e produktit që i përket blerja. Ne duam të prodhojmë një raport që tregon, sipas muajve, 3 kategoritë kryesore në rend zbritës.

Për thjeshtësi, ne do ta mbajmë shembullin në një tabelë të vetme, megjithëse drejtori do të funksionojë pavarësisht nga konfigurimi juaj. Tabela që do të përdorim është vendosur si më poshtë:

Shitjet
Emri i Klientit
Data e transaksionit
Vlera e Transaksionit
Kategoria

Natyrisht ky është një konfigurim tepër i thjeshtuar, por ju e kuptoni idenë.

Tani - kodi

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

Kodi - shpjegohet

Kodi VBASiç mund ta shihni, kodi është mjaft i qartë. Ne fillojmë duke përdorur parametrat e dhënë për të ndërtuar pyetjen tonë. Pasi të krijohet vargu i pyetjes, ne e ekzekutojmë atë dhe i kalojmë rezultatet në ciklin e duhur, duke i bashkuar ato së bashku për të formuar vargun e vetëm të rezultatit që po kërkojmë.

Do të vini re se ne kontrollojmë nëse duhet të shtojmë apo jo një përcaktues në varg - pa këtë kontroll do të përfundoni ose me një varg rezultati të formatuar keq, ose do t'ju duhet të shtoni kod për të hequr kufijtë e padëshiruar - kjo mënyrë i mban gjërat bukur dhe të rregullta që në fillim.

Vetë funksioni sigurisht që mund të thirret nga një pyetje, një raport ose kudo që ju pëlqen nga brenda Access.

Rregulloni bazën e të dhënave të aksesit të dëmtuar

Nëse hasni bazat e të dhënave të Access të korruptuara kur ekzekutoni kodin e mësipërm, atëherë është më mirë të përdorni ndonjë mjet të specializuar për t'i riparuar ato dhe për të rikuperuar të gjitha tabelat nga bazat e të dhënave të korruptuara.

Hyrje e autorit:

Mitchell Pond është një ekspert i rikuperimit të të dhënave në DataNumen, Inc., e cila është lider botëror në teknologjitë e rikuperimit të të dhënave, duke përfshirë riparimi i problemit SQL dhe produkte softuerike të rimëkëmbjes excel. Për më shumë informacion vizitoni www.datanumen.com

Komentet janë të mbyllura.