Егер сізге дерекқордағы басқа мәліметтермен қатар өріс / сұраныс мәндерінің бөлінген тізімін жасау қажет болса, сіз оның ең қиын болуы мүмкін екенін білесіз және m тапсырмасыost адамдар мүмкін емес деп ойлайды. Егер сізден, мысалы, жылдың әр айы үшін сатылымдағы ең жақсы 5 адамның кім болғандығы туралы есеп беруді сұраған болса немесе әр тұтынушыға ең жақын 3 дүкен болса, онда сіз өзіңізді қалдырасыз айқас кесте сұрауларымен немесе Access-тен тыс нәтижелерді қолмен біріктіру арқылы. Бірақ кішкене VBA кодының көмегімен сіз бірнеше минут ішінде келесі нәтижелерге қол жеткізесіз ...
| Ян | Джон, Салли, Билл |
| Feb | Салли, Адам, Джон |
| Mar | Адам, Салли, Билл |
Нәтижелердің бөлінген тізімін үлкен сұрау шеңберінде көрсету пайдалы болатын кездер болады - әр сату өкілі үшін ең үлкен 3 клиенттің тізімі, сіздің ең көп ақша жұмсайтын тұтынушыларыңыздың әрқайсысына жақын 5 дүкен , тізім жалғасуда.
Есепті біріктіруді тоқтатыңыз
Мұндай есепті жасау үшін егжей-тегжейлі ақпарат алу мүмкін болғанымен, сіз нәтижелерді Access-тен тыс жерде электрондық кесте немесе есептің бөлігі ретінде біріктіруіңіз керек.
Келесі код Access-тен тыс сұраныс нәтижелерімен скрипка жасау қажеттілігін алып тастайды және оның орнына жоғарыда көрсетілген нәтижелерді оңай шығаруға мүмкіндік береді.
Алдымен кодтың не істей алатындығын көрсетейік:
«Сұрауды ескере отырып, x санының нәтижесін шығарыңыз, оны y-мен бөлінген жалғыз жолға біріктіріңіз»
Бастамас бұрын
Кодты қарастырмас бұрын, жалпылама және кез-келген сұраныстарды басқара алатын VBA функциясын құруға болатындығына қарамастан, бұл өте ұзақ кодқа әкелетіндігін ескеру қажет, сондықтан біз осы мақалада не істейміз? мысал жағдайын анықтау және сол істі өңдейтін функцияны жазу. Мұны осылай жасау сіздің қажеттіліктеріңізді қанағаттандыру үшін кодты қайта жасау мүмкіндігін едәуір жеңілдетеді.
Іс үлгісі
Бізде сатып алу тиесілі тауар санатымен бірге тұтынушылардың сатып алуларының егжей-тегжейін сақтайтын сату мәліметтер базасы бар. Біз есеп бойынша, ай бойынша, кему ретімен үздік 3 санатты көрсететін есеп шығарғымыз келеді.
Қарапайымдылық үшін біз мысалды бір кестеде сақтаймыз, бірақ директор сіздің орнатқаныңызға қарамастан жұмыс істейді. Біз қолданатын кесте келесідей орнатылған:
| Сату |
| Тұтынушының аты |
| Транзакция күні |
| Транзакция мәні |
| санат |
Әрине, бұл тым жеңілдетілген қондырғы, бірақ идеяны сіз түсінесіз.
Енді - код
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.com