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
Bunday 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

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