Եթե երբևէ անհրաժեշտություն է եղել ստեղծել դաշտերի/հարցումների արժեքների սահմանափակ ցանկ՝ ձեր տվյալների բազայից ստացված այլ տեղեկությունների հետ մեկտեղ, ապա գիտեք, որ դա լավագույն դեպքում կարող է դժվար լինել, և մի առաջադրանք, որը շատերի կարծիքով անհնար է լինելու: Օրինակ, եթե ձեզ խնդրել են կազմել հաշվետվություն այն մասին, թե ովքեր էին տարվա յուրաքանչյուր ամսվա համար 5 լավագույն վաճառողները՝ նվազման կարգով, կամ յուրաքանչյուր հաճախորդին ամենամոտ 3 խանութները, ապա հնարավոր է, որ ստիպված լինեք զբաղվել խաչաձև հարցումներով կամ ձեռքով համատեղել արդյունքները Access-ից դուրս: Սակայն մի փոքր VBA կոդի օգնությամբ դուք րոպեների ընթացքում կստանաք հետևյալ արդյունքներից մի քանիսը…
| jan | Johnոն, Սալի, Բիլ |
| Feb | Սալլի, Ադամ, ոն |
| ապականել | Ադամ, Սալի, Բիլ |
Բազմաթիվ դեպքեր կան, երբ օգտակար կլիներ, որ հնարավոր լիներ արդյունքների սահմանազատված ցուցակ ցուցադրել որպես ավելի մեծ հարցման մաս. Առաջատար 3 խոշոր հաճախորդների ցուցակ յուրաքանչյուր վաճառքի ներկայացուցիչների համար, ձեր ամենաբարձր ծախսեր ունեցող յուրաքանչյուր հաճախորդի ամենամոտ 5 խանութ: , ցուցակը շարունակվում է:
Դադարեք միավորել ձեր զեկույցը միասին
Չնայած առավելագույն հնարավոր է մանրամասներ ստանալ այդպիսի հաշվետվություն ստեղծելու համար, սովորաբար սովորաբար ստիպված կլինեք ձեռքով միացնել արդյունքները Access- ից դուրս ՝ որպես աղյուսակի կամ զեկույցի մաս:
Հետևյալ ծածկագիրը կտրում է Access- ից դուրս հարցման արդյունքների հետ շփվելու անհրաժեշտությունը և փոխարենը թույլ կտա ձեզ հեշտությամբ արտադրել վերը նշված արդյունքների տեսակը:
Նախ, ուրվագծենք այն, ինչ ուզում ենք, որ ծածկագիրը կարողանա անել:
«Հաշվի առնելով հարցումը, վերադարձրեք x արդյունքի քանակ, զուգորդված մեկ տողի մեջ, որը սահմանազատվում է y- ով»
Նախքան սկսելը
Նախքան ծածկագիրը դիտելը, կարևոր է նշել, որ չնայած հնարավոր է ստեղծել VBA գործառույթ, որն ավելի ընդհանուր է և ունակ է գործածել հարցումների ցանկացած համադրություն, բայց դա անելու է բավականին երկար կոդ, ուստի այն, ինչ մենք կանենք այս հոդվածում: սահմանել օրինակ դեպք և գրել գործը այդ գործը կարգավորելու համար: Այս եղանակով դա անելը ձեզ համար շատ ավելի հեշտ կդարձնի կոդը վերստեղծել ՝ ձեր հատուկ կարիքները բավարարելու համար:
Գործի նմուշը
Մենք ունենք վաճառքների տվյալների բազա, որը պահում է հաճախորդի գնումների մանրամասները, ինչպես նաև այն ապրանքների կատեգորիան, որին պատկանում է գնումը: Մենք ուզում ենք պատրաստել այնպիսի հաշվետվություն, որը ցույց կտա, ըստ ամիսների, լավագույն 3 կատեգորիաները `նվազման կարգով:
Պարզության համար մենք օրինակը կպահենք մեկ սեղանի շուրջ, չնայած որ հիմնականը կաշխատի ՝ անկախ ձեր կարգավորումից: Աղյուսակը, որը մենք կօգտագործենք, կազմված է հետևյալ կերպ.
| Sales |
| Հաճախորդի անունը |
| Գործարքի ամսաթիվը |
| Գործարքի արժեքը |
| կատեգորիա |
Ակնհայտ է, որ սա չափազանց պարզեցված տեղադրում է, բայց գաղափարն ընկալվում է:
Հիմա ՝ ծածկագիրը
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 տվյալների բազաներ երբ գործարկում եք վերոնշյալ ծածկագիրը, ապա ավելի լավ է օգտագործել ինչ-որ մասնագիտացված գործիք դրանք վերականգնելու և բոլոր աղյուսակները կոռումպացված շտեմարաններից վերականգնելու համար:
Հեղինակի ներածություն.
Mitchell Pond- ը տվյալների վերականգման փորձագետ է DataNumen, Inc., որը տվյալների վերականգման տեխնոլոգիաների համաշխարհային առաջատարն է, այդ թվում վերանորոգել SQL խնդիրը և գերազանցել վերականգնման ծրագրային արտադրանքները: Լրացուցիչ տեղեկությունների համար այցելեք www.datanumen.com