Өзіңіздің қол жетімділігіңізде бірнеше нәтижелерді бір сұрау алаңында қалай көрсетуге болады

Қазір бөлісу:

Егер сізге дерекқорыңыздағы басқа ақпаратпен қатар өріс/сұраныс мәндерінің бөлінген тізімін жасау қажет болған болса, бұл ең жақсы жағдайда қиын болуы мүмкін екенін білесіз – және көпшілік бұл тапсырманы орындау мүмкін емес деп санайды. Мысалы, егер сізден жылдың әр айы үшін немесе әр тұтынушыға ең жақын 3 дүкен үшін ең үздік 5 сатушының кім екендігі туралы есеп жасау сұралса, онда сіз айқас сұраныстармен немесе Access-тен тыс нәтижелерді қолмен біріктірумен күресуіңіз мүмкін. Бірақ VBA кодының көмегімен сіз бірнеше минут ішінде келесідей нәтижелер аласыз...

Ян Джон, Салли, Билл
Feb Салли, Адам, Джон
Mar Адам, Салли, Билл

Нәтижелердің бөлінген тізімін үлкен сұрау шеңберінде көрсету пайдалы болатын кездер болады - әр сату өкілі үшін ең үлкен 3 клиенттің тізімі, сіздің ең көп ақша жұмсайтын тұтынушыларыңыздың әрқайсысына жақын 5 дүкен , тізім жалғасуда.

Есепті біріктіруді тоқтатыңыз

Ms AccessМұндай есепті жасау үшін егжей-тегжейлі ақпарат алу мүмкін болғанымен, сіз нәтижелерді 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

Код - түсіндірілді

VBA кодыКөріп отырғаныңыздай, код өте түсінікті. Біз сұранысты құру үшін берілген параметрлерді пайдаланудан бастаймыз. Сұрау жолы жасалғаннан кейін, біз оны орындап, нәтижелерді цикл бойынша қайталаймыз, оларды біріктіріп, іздеген бірыңғай нәтиже жолын құрамыз.

Жолға бөлгішті қосу керек пе, жоқ па екенін тексеретінімізді байқайсыз - бұл тексерусіз сіз нашар форматталған нәтиже жолымен аяқталасыз немесе қажет емес бөлгіштерді жою үшін кодты қосуыңыз керек - осылайша заттар басынан бастап жақсы және жинақы болады.

Функцияның өзі, әрине, сұрау, есеп немесе Access ішінен сізге ұнайтын кез келген жерден шақырылуы мүмкін.

Бұзылған қатынас дерекқорын түзету

Егер сіз кездессеңіз бүлінген Access дерекқорлары жоғарыда аталған кодты іске қосқан кезде, оларды қалпына келтіруге және барлық кестелерді бүлінген мәліметтер базасынан қалпына келтіруге арналған арнайы құралды қолданған жөн.

Автордың кіріспесі:

Митчелл Понд - деректерді қалпына келтіру бойынша сарапшы DataNumen, Соның ішінде деректерді қалпына келтіру технологиялары бойынша әлемдік көшбасшы болып табылатын Inc. SQL ақаулығын жөндеу және excel қалпына келтіру бағдарламалық жасақтама өнімдері. Қосымша ақпарат алу үшін кіріңіз WWW.datanumen.com

Қазір бөлісу:

Пікірлер жабылды.