Jak vytvořit dotaz průběžných součtů v Microsoft Accessu

Pokročilé: Vyžaduje odborné kódování, interoperabilitu a víceuživatelské dovednosti.

Tento článek se týká souboru databáze Microsoft Access (MDB) nebo souboru databáze Microsoft Access (.accdb).

Souhrn

Tento článek popisuje dvě metody, které můžete použít k vytvoření dotazu průběžných součtů. Dotaz průběžných součtů je dotaz, ve kterém součet každého záznamu představuje součet tohoto záznamu a všech předchozích záznamů. Tento typ dotazu je užitečný pro zobrazení kumulativních součtů za skupinu záznamů (nebo za určité časové období) v grafu nebo sestavě.

Poznámka Ukázku techniky použité v tomto článku najdete v ukázkovém souboru Qrysmp00.exe.

Další informace

Metoda 1

První metoda používá funkci DSum a kritéria v dotazu k vytvoření průběžného součtu v průběhu času. Funkce DSum sečte aktuální záznam a všechny předchozí záznamy. Když se dotaz přesune na další záznam, funkce DSum se znovu spustí a aktualizuje kumulativní součet.

Následující ukázkový dotaz používá tabulku Orders z ukázkové databáze Northwind k vytvoření průběžného součtu nákladů na dopravu za každý měsíc v roce 1997. Ukázková data jsou z důvodů výkonu omezená na jeden rok. Vzhledem k tomu, že funkce DSum běží jednou pro každý záznam v dotazu, může dokončení zpracování dotazu trvat několik sekund (v závislosti na rychlosti počítače). Chcete-li vytvořit a spustit tento dotaz, postupujte takto:

  1. Otevřete ukázkovou databázi Northwind.

  2. Vytvořte nový výběrový dotaz a přidejte tabulku Objednávky .

  3. V nabídce View (Zobrazení) klikněte na Totals (Součty).

    Poznámka V Accessu 2007 klikněte na Souhrny ve skupině Zobrazit nebo skrýt na kartě Návrh .

  4. Do prvního sloupce návrhové mřížky dotazu zadejte do pole Pole následující výraz a pro pole Součet, Řazení a Zobrazit vyberte následující možnosti:

    Field: AYear: DatePart("yyyy",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    Výraz v poli Pole zobrazí a seřadí část roku pole Datumobjednávky.

  5. Do druhého sloupce návrhové mřížky dotazu zadejte do pole Pole následující výraz a pro pole Součet, Řazení a Zobrazit proveďte následující výběry:

    Field: AMonth: DatePart("m",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    Výraz v poli Pole seřadí a zobrazí část měsíce pole Datum objednávky jako celočíselnou hodnotu od 1 do 12.

  6. Do třetího sloupce návrhové mřížky dotazu zadejte do pole Pole následující výraz a pro pole Součet a Zobrazit proveďte následující výběry.

    POZNÁMKA V následujícím příkladu se jako znak pokračování řádku používá podtržítko (_) na konci řádku. Při opětovném vytvoření tohoto příkladu odeberte podtržítko z konce řádku.

    Field: RunTot: DSum("Freight","Orders","DatePart('m', _
    [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _
    [OrderDate])<=" & [AYear] & "")
    Total: Expression
    Show: Yes
    

    Výraz v poli Pole používá funkci DSum() k sečtení pole Dopravné, pokud jsou hodnoty v polích AMonth i AYear menší nebo rovné aktuálnímu záznamu, který dotaz zpracovává.

  7. Ve čtvrtém sloupci návrhové mřížky dotazu zadejte do pole Pole následující výraz a pro pole Součet, Řazení a Zobrazit proveďte následující výběry:

    Field: FDate: Format([OrderDate],"mmm")
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    Výraz v poli Pole se každý měsíc zobrazuje v textovém formátu, například jan, únor, březen atd.

  8. Do pátého sloupce návrhové mřížky dotazu zadejte do pole Pole následující výraz a pro pole Součet, Kritéria a Zobrazit proveďte následující výběry:

    Field: DatePart("yyyy",[OrderDate])
    Total: Where
    Criteria: 1997
    Show: No
    

    Výraz v poli Pole filtruje sadu záznamů dotazu tak, aby zahrnovala pouze data z roku 1997.

  9. Spusťte dotaz. Všimněte si, že pole RunTot zobrazuje následující záznamy se průběžným součtem:

    AYear AMonth RunTot FDate
    --------------------------------------
    1997 1 2238.98 Jan
    1997 2 3840.43 Feb
    1997 3 5729.24 Mar
    1997 4 8668.34 Apr
    1997 5 12129.74 May
    1997 6 13982.39 Jun
    1997 7 17729.29 Jul
    1997 8 22204.73 Aug
    1997 9 26565.26 Sep
    1997 10 32031.38 Oct
    1997 11 36192.09 Nov
    1997 12 42748.64 Dec
    

Metoda 2

Druhá metoda používá dotaz součtů s funkcí DSum() k vytvoření průběžného součtu pro skupinu.

Následující ukázkový dotaz používá tabulku Objednávky k sečtení přepravních nákladů na zaměstnance a také k výpočtu průběžného součtu přepravy. Pokud chcete vytvořit a spustit dotaz, postupujte takto:

  1. Otevřete Northwind.mdb ukázkové databáze.

  2. Vytvořte nový výběrový dotaz a přidejte tabulku Objednávky.

  3. V nabídce View (Zobrazení) klikněte na Totals (Součty).

    Poznámka V Accessu 2007 klikněte na Souhrny ve skupině Zobrazit nebo skrýt na kartě Návrh .

  4. V prvním sloupci návrhové mřížky dotazu přidejte do pole Pole následující pole a pro pole Souhrn a Zobrazit vyberte následující možnosti:

    Field: EmpAlias: EmployeeID
    Total: Group By
    Show: Yes
    

    Toto pole seskupuje data podle ID zaměstnance.

  5. Do druhého sloupce návrhové mřížky dotazu přidejte do pole Pole následující pole a pro pole Součet a Zobrazit vyberte následující možnosti:

    Field: Freight
    Total: Sum
    Show: Yes
    

    Toto pole sečte data o dopravě.

  6. Do třetího sloupce návrhové mřížky dotazu zadejte do pole Pole následující výraz a pro pole Součet a Zobrazit proveďte následující výběry.

    POZNÁMKA V následujícím příkladu se jako znak pokračování řádku používá podtržítko (_) na konci řádku. Při opětovném vytvoření tohoto příkladu odeberte podtržítko z konce řádku.

    Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00")
    Total: Expression
    Show: Yes
    

    Výraz v poli Pole používá funkci DSum() k sečtení pole Přepravné, pokud je ID zaměstnance menší nebo roven aktuální hodnotě EmpAlias, a pak naformátuje pole v dolarech.

  7. Spusťte dotaz. Všimněte si, že pole RunTot zobrazuje následující záznamy se průběžným součtem:

    Employee SumOfFreight RunTot
    -------------------------------------------------
    Davolio, Nancy $8,836.64 $8,836.64
    Fuller, Andrew $8,696.41 $17,533.05
    Leverling,Janet $10,884.74 $28,417.79
    Peacock, Margaret $11,346.14 $39,763.93
    Buchanan, Steven $3,918.71 $43,682.64
    Suyama, Michael $3,780.47 $47,463.11
    King, Robert $6,665.44 $54,128.55
    Callahan, Laura $7,487.88 $61,616.43
    Dodsworth, Anne $3,326.26 $64,942.69