თუ ოდესმე დაგჭირვებიათ ველის/მოთხოვნის მნიშვნელობების გამოყოფილი სიის შექმნა თქვენი მონაცემთა ბაზიდან სხვა ინფორმაციასთან ერთად, იცით, რომ ეს, საუკეთესო შემთხვევაშიც კი, შეიძლება რთული იყოს - და ამოცანა, რომლის შესრულებაც, ბევრის აზრით, შეუძლებელი იქნება. მაგალითად, თუ თქვენ გთხოვენ, შეადგინოთ ანგარიში იმის შესახებ, თუ ვინ იყო ტოპ 5 გაყიდვების აგენტი - კლებადი თანმიმდევრობით - წლის თითოეული თვისთვის, ან თითოეულ მომხმარებელთან ყველაზე ახლოს მდებარე 3 მაღაზია, მაშინ შესაძლოა დაგჭირდეთ კროსტაბული შეკითხვების გაკეთება ან შედეგების ხელით გაერთიანება Access-ის გარეთ. თუმცა, მცირე VBA კოდის დახმარებით, თქვენ მიიღებთ შემდეგ შედეგებს რამდენიმე წუთში...
| Jan | ჯონი, სალი, ბილი |
| Feb | სალი, ადამი, ჯონი |
| Mar | ადამი, სალი, ბილი |
ხშირია შემთხვევები, როდესაც სასარგებლო იქნება შედეგების შემოსაზღვრული სიის ჩვენება, როგორც უფრო დიდი მოთხოვნის ნაწილი - ტოპ 3 უმსხვილესი კლიენტის სია თითოეული გაყიდვების წარმომადგენლისთვის, უახლოესი 5 მაღაზია თითოეულ თქვენს ყველაზე მაღალ მხარჯავ კლიენტთან. , სია გრძელდება.
შეწყვიტეთ თქვენი ანგარიშის შეკერვა
მიუხედავად იმისა, რომ ამ ტიპის ანგარიშის შესაქმნელად დეტალების მოპოვება უფრო მეტია, მაგრამ, როგორც წესი, მოგიწევთ შედეგების ხელით შეკერვა Access-ის გარეთ, როგორც ელცხრილის ან ანგარიშის ნაწილი.
შემდეგი კოდი გამორიცხავს წვდომის მიღმა შეკითხვის შედეგებს და ამის ნაცვლად, საშუალებას მოგცემთ მარტივად შექმნათ ზემოთ ნაჩვენები შედეგები.
პირველ რიგში, მოდით გამოვყოთ, რისი გაკეთება გვინდა კოდმა:
„მოთხოვნის გათვალისწინებით, დააბრუნეთ შედეგების x რაოდენობა, გაერთიანებული ერთ სტრიქონში, რომელიც შემოიფარგლება y-ით“
სანამ დავიწყებთ
სანამ კოდს გადავხედავთ, მნიშვნელოვანია აღინიშნოს, რომ მიუხედავად იმისა, რომ შესაძლებელია VBA ფუნქციის შექმნა, რომელიც უფრო ზოგადია და შეუძლია შეასრულოს ნებისმიერი შეკითხვის კომბინაცია, ამის გაკეთება გამოიწვევს საკმაოდ გრძელ კოდს და რას გავაკეთებთ ამ სტატიაში. არის მაგალითის შემთხვევის განსაზღვრა და ამ შემთხვევის დასამუშავებლად ფუნქციის დაწერა. ამის გაკეთება ამ გზით გაგიადვილებთ კოდის ხელახლა შექმნას თქვენი კონკრეტული საჭიროებების დასაკმაყოფილებლად.
ნიმუში საქმე
ჩვენ გვაქვს გაყიდვების მონაცემთა ბაზა, რომელიც ინახავს მომხმარებლის შესყიდვების დეტალებს, პროდუქტის კატეგორიას, რომელსაც ეკუთვნის შესყიდვა. ჩვენ გვსურს მოვამზადოთ ანგარიში, რომელიც აჩვენებს, თვის მიხედვით, ტოპ 3 კატეგორიას კლებადობით.
სიმარტივისთვის, ჩვენ მაგალითს ერთ მაგიდაზე შევინახავთ, თუმცა მთავარი იმუშავებს თქვენი დაყენების მიუხედავად. ცხრილი, რომელსაც ჩვენ გამოვიყენებთ, შემდეგია:
| გაყიდვების |
| Მომხმარებლის სახელი |
| გარიგების თარიღი |
| TransactionValue |
| კატეგორია |
ცხადია, ეს ზედმეტად გამარტივებული კონფიგურაციაა, მაგრამ თქვენ გესმით იდეა.
ახლა - კოდი
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
კოდი - განმარტა

თქვენ შეამჩნევთ, რომ ჩვენ ვამოწმებთ, უნდა დავამატოთ თუ არა სტრიქონს დელიმიტერი – ამ შემოწმების გარეშე თქვენ აღმოჩნდებით ან ცუდად ფორმატირებული შედეგის სტრიქონით, ან მოგიწევთ კოდის დამატება არასასურველი დელიმიტერების მოსაშორებლად – ამ გზით თავიდანვე ინახავს ნივთებს ლამაზად და მოწესრიგებულს.
თავისთავად ფუნქცია, რა თქმა უნდა, შეიძლება გამოიძახოთ შეკითხვის, ანგარიშიდან ან ნებისმიერი ადგილიდან, სადაც გსურთ, Access-დან.
შეასწორეთ დაზიანებული წვდომის მონაცემთა ბაზა
თუ წააწყდებით დაზიანებულია Access მონაცემთა ბაზები როდესაც აწარმოებთ ზემოთ მოცემულ კოდს, მაშინ უმჯობესია გამოიყენოთ რაიმე სპეციალიზებული ინსტრუმენტი მათ შესაკეთებლად და ყველა ცხრილის აღდგენის კორუმპირებული მონაცემთა ბაზებიდან.
ავტორი შესავალი:
მიტჩელ პონდი არის მონაცემთა აღდგენის ექსპერტი DataNumen, Inc., რომელიც მსოფლიო ლიდერია მონაცემთა აღდგენის ტექნოლოგიებში, მათ შორის SQL პრობლემის შეკეთება და Excel-ის აღდგენის პროგრამული პროდუქტები. დამატებითი ინფორმაციისთვის ეწვიეთ www.datanumen. ერთად