როგორ აჩვენოთ მრავალი შედეგი ერთ შეკითხვის ველში თქვენს წვდომაში

გააზიარე ახლა:

თუ ოდესმე დაგჭირვებიათ ველის/მოთხოვნის მნიშვნელობების გამოყოფილი სიის შექმნა თქვენი მონაცემთა ბაზიდან სხვა ინფორმაციასთან ერთად, იცით, რომ ეს, საუკეთესო შემთხვევაშიც კი, შეიძლება რთული იყოს - და ამოცანა, რომლის შესრულებაც, ბევრის აზრით, შეუძლებელი იქნება. მაგალითად, თუ თქვენ გთხოვენ, შეადგინოთ ანგარიში იმის შესახებ, თუ ვინ იყო ტოპ 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

კოდი - განმარტა

VBA კოდიროგორც ხედავთ, კოდი საკმაოდ გასაგებია. ვიწყებთ ჩვენი მოთხოვნის შესაქმნელად მოწოდებული პარამეტრების გამოყენებით. მოთხოვნის სტრიქონის შექმნის შემდეგ, ვასრულებთ მას და ვამოწმებთ შედეგებს, ვაერთებთ მათ ერთმანეთთან, რათა მივიღოთ ერთი შედეგის სტრიქონი, რომელსაც ვეძებთ.

თქვენ შეამჩნევთ, რომ ჩვენ ვამოწმებთ, უნდა დავამატოთ თუ არა სტრიქონს დელიმიტერი – ამ შემოწმების გარეშე თქვენ აღმოჩნდებით ან ცუდად ფორმატირებული შედეგის სტრიქონით, ან მოგიწევთ კოდის დამატება არასასურველი დელიმიტერების მოსაშორებლად – ამ გზით თავიდანვე ინახავს ნივთებს ლამაზად და მოწესრიგებულს.

თავისთავად ფუნქცია, რა თქმა უნდა, შეიძლება გამოიძახოთ შეკითხვის, ანგარიშიდან ან ნებისმიერი ადგილიდან, სადაც გსურთ, Access-დან.

შეასწორეთ დაზიანებული წვდომის მონაცემთა ბაზა

თუ წააწყდებით დაზიანებულია Access მონაცემთა ბაზები როდესაც აწარმოებთ ზემოთ მოცემულ კოდს, მაშინ უმჯობესია გამოიყენოთ რაიმე სპეციალიზებული ინსტრუმენტი მათ შესაკეთებლად და ყველა ცხრილის აღდგენის კორუმპირებული მონაცემთა ბაზებიდან.

ავტორი შესავალი:

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

გააზიარე ახლა:

კომენტარები დახურულია.