Kirishdagi bitta so'rov maydonida bir nechta natijalarni qanday ko'rsatish mumkin

Hozir ulashing:

Agar siz ma'lumotlar bazangizdagi boshqa ma'lumotlar bilan birga maydon/so'rov qiymatlarining chegaralangan ro'yxatini yaratishingiz kerak bo'lgan bo'lsa, bu eng yaxshi holatda ham qiyin bo'lishi mumkinligini bilasiz - va ko'pchilik odamlar bu vazifani amalga oshirish mumkin emas deb o'ylashadi. Masalan, agar sizdan yilning har oyi uchun yoki har bir mijozga eng yaqin 3 ta do'kon uchun eng yaxshi 5 ta sotuvchi kim bo'lganligi haqida hisobot tayyorlash so'ralgan bo'lsa, unda siz o'zaro so'rovlar bilan kurashishingiz yoki natijalarni Accessdan tashqarida qo'lda birlashtirishingiz mumkin. Ammo kichik VBA kodi yordamida siz bir necha daqiqada quyidagi kabi natijalarni yaratasiz...

Jan Jon, Sally, Bill
Feb Sally, Adam, Jon
Mar Adam, Sally, Bill

Kattaroq so'rovning bir qismi sifatida ajratilgan natijalar ro'yxatini ko'rsatish foydali bo'lishi mumkin bo'lgan holatlar ko'p bo'ladi - har bir savdo vakili uchun eng yirik 3 ta eng yirik mijozlar ro'yxati, eng ko'p pul sarflaydigan har bir mijozga eng yaqin 5 ta do'kon. , ro'yxat davom etadi.

Hisobotingizni birlashtirishni to'xtating

Ms AccessBunday hisobotni yaratish uchun batafsil ma'lumotga ega bo'lish imkonsiz bo'lsa-da, odatda natijalarni Access'dan tashqarida elektron jadval yoki hisobotning bir qismi sifatida qo'lda birlashtirishga to'g'ri keladi.

Quyidagi kod Accessdan tashqarida so'rov natijalari bilan shug'ullanish zaruratini yo'q qiladi va buning o'rniga yuqorida ko'rsatilgan natijalarni osongina yaratishga imkon beradi.

Birinchidan, kod nima qilishini xohlayotganimizni aniqlaymiz:

"So'rov berilganda, y bilan chegaralangan bitta qatorga birlashtirilgan x sonli natijalarni qaytaring"

Boshlashimizdan oldin

Kodni ko'rib chiqishdan oldin shuni ta'kidlash kerakki, har qanday so'rovlar kombinatsiyasini boshqarishga qodir bo'lgan va umumiyroq bo'lgan VBA funksiyasini yaratish mumkin bo'lsa-da, bu juda uzun kodga olib keladi, shuning uchun biz ushbu maqolada nima qilamiz. misol holatini aniqlash va bu ishni bajarish uchun funktsiyani yozishdir. Buni shu tarzda qilish sizning maxsus ehtiyojlaringizni qondirish uchun kodni qayta yaratishni ancha osonlashtiradi.

Ish namunasi

Bizda xaridorlarning xaridlari tafsilotlari hamda xarid tegishli bo'lgan mahsulot toifasi saqlanadigan savdo ma'lumotlar bazasi mavjud. Biz oylar bo'yicha eng yaxshi 3 toifani kamayish tartibida ko'rsatadigan hisobot tayyorlamoqchimiz.

Oddiylik uchun biz misolni bitta jadvalga qo'yamiz, garchi asosiy o'rnatishingizdan qat'iy nazar ishlaydi. Biz foydalanadigan jadval quyidagicha o'rnatiladi:

savdo
Mijoz nomi
Tranzaktsiya sanasi
TransactionValue
kategoriya

Shubhasiz, bu juda soddalashtirilgan sozlash, lekin siz bu fikrni tushunasiz.

Endi - kod

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

Kod - tushuntirilgan

VBA kodiKo'rib turganingizdek, kod juda tushunarli. Biz so'rovimizni yaratish uchun berilgan parametrlardan foydalanishdan boshlaymiz. So'rov qatori yaratilgandan so'ng, biz uni bajaramiz va natijalarni sikllaymiz, ularni birlashtirib, biz izlayotgan yagona natija qatorini hosil qilamiz.

Biz satrga chegaralovchi qoʻshishimiz kerakmi yoki yoʻqligini tekshirayotganimizni sezasiz – bu tekshiruvsiz siz notoʻgʻri formatlangan natija qatoriga ega boʻlasiz yoki keraksiz cheklovchilarni olib tashlash uchun kod qoʻshishingiz kerak boʻladi – bu yo'l boshidanoq narsalarni chiroyli va tartibli saqlaydi.

Funktsiyaning o'zi, albatta, so'rov, hisobot yoki Access ichidan xohlagan joydan chaqirilishi mumkin.

Buzuq kirish ma'lumotlar bazasini tuzatish

Agar duch kelsangiz buzilgan Access ma'lumotlar bazalari Yuqoridagi kodni ishga tushirganingizda, ularni tuzatish va buzilgan ma'lumotlar bazalaridan barcha jadvallarni tiklash uchun maxsus vositalardan foydalanish yaxshiroqdir.

Muallif kirish:

Mitchell Pond - ma'lumotlarni qayta tiklash bo'yicha mutaxassis DataNumenMa'lumotlarni qayta tiklash texnologiyalari bo'yicha jahon yetakchisi bo'lgan , Inc SQL muammosini tuzatish va excel tiklash dasturiy mahsulotlar. Qo'shimcha ma'lumot olish uchun tashrif buyuring www.datanumen.com

Hozir ulashing:

Comments are closed.