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
Ndë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

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