Jak utworzyć uruchomione zapytanie sum w programie Microsoft Access

Zaawansowane: wymaga specjalistycznego kodowania, współdziałania i wielodostępnych umiejętności.

Ten artykuł dotyczy pliku bazy danych programu Microsoft Access (.mdb) lub pliku bazy danych programu Microsoft Access (.accdb).

Podsumowanie

W tym artykule przedstawiono dwie metody, których można użyć do utworzenia uruchomionego zapytania sumy. Uruchomione zapytanie sum jest zapytaniem, w którym suma dla każdego rekordu jest sumą tego rekordu i wszystkich poprzednich rekordów. Ten typ zapytania jest przydatny do wyświetlania sum skumulowanych w grupie rekordów (lub w danym okresie) na grafie lub w raporcie.

Uwaga W przykładowym pliku Qrysmp00.exe widać pokaz techniki używanej w tym artykule.

Więcej informacji

Metoda 1

Pierwsza metoda używa funkcji DSum i kryteriów w zapytaniu, aby utworzyć sumę bieżącą w czasie. Funkcja DSum sumuje bieżący rekord i wszystkie poprzednie rekordy. Gdy zapytanie zostanie przeniesione do następnego rekordu, funkcja DSum zostanie uruchomiona ponownie i zaktualizuje łączną sumę.

Poniższe przykładowe zapytanie używa tabeli Orders z przykładowej bazy danych Northwind do utworzenia bieżącej sumy kosztów frachtu dla każdego miesiąca w 1997 roku. Przykładowe dane są ograniczone do jednego roku ze względu na wydajność. Ponieważ funkcja DSum jest uruchamiana raz dla każdego rekordu w zapytaniu, zakończenie przetwarzania zapytania może potrwać kilka sekund (w zależności od szybkości komputera). Aby utworzyć i uruchomić to zapytanie, wykonaj następujące kroki:

  1. Otwórz przykładową bazę danych Northwind.

  2. Utwórz nowe zapytanie select i dodaj tabelę Orders (Zamówienia ).

  3. W menu Widok kliknij pozycję Sumy.

    Uwaga W programie Access 2007 kliknij pozycję Sumy w grupie Pokaż/Ukryj na karcie Projekt .

  4. W pierwszej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i wprowadź następujące opcje dla pól Total, Sort i Show:

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

    Wyrażenie w polu Pole wyświetla i sortuje część roku pola OrderDate.

  5. W drugiej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i wprowadź następujące opcje dla pól Suma, Sortowanie i Pokaż:

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

    Wyrażenie w polu Pole sortuje i wyświetla część miesiąca pola Data zamówienia jako wartość całkowitą z zakresu od 1 do 12.

  6. W trzeciej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i wprowadź następujące opcje dla pól Total (Suma) i Show (Pokaż).

    UWAGA W poniższym przykładzie podkreślenie (_) na końcu wiersza jest używane jako znak kontynuacji wiersza. Usuń podkreślenie z końca wiersza podczas ponownego tworzenia tego przykładu.

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

    Wyrażenie w polu Pole używa funkcji DSum() do sumowania pola Freight, gdy wartości w polach AMonth i AYear są mniejsze lub równe bieżącemu rekordowi przetwarzanego przez zapytanie.

  7. W czwartej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i wprowadź następujące opcje dla pól Total, Sort i Show:

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

    Wyrażenie w polu Pole jest wyświetlane co miesiąc w formacie tekstowym, takim jak Jan, Feb, Mar itd.

  8. W piątej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole, a następnie w polach Total(Suma), Criteria (Kryteria) i Show (Pokaż) wybierz następujące opcje:

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

    Wyrażenie w polu Pole filtruje zestaw rekordów zapytania w celu uwzględnienia danych tylko z 1997 roku.

  9. Uruchom zapytanie. Zwróć uwagę, że w polu RunTot są wyświetlane następujące rekordy z uruchomioną sumą:

    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

Druga metoda używa zapytania sumy z funkcją DSum(), aby utworzyć sumę bieżącą dla grupy.

Poniższe przykładowe zapytanie używa tabeli Orders do sumy kosztów frachtu na pracownika, a także do obliczania bieżącej sumy frachtu. Aby utworzyć i uruchomić zapytanie, wykonaj następujące kroki:

  1. Otwórz przykładową Northwind.mdb bazy danych.

  2. Utwórz nowe zapytanie select i dodaj tabelę Orders (Zamówienia).

  3. W menu Widok kliknij pozycję Sumy.

    Uwaga W programie Access 2007 kliknij pozycję Sumy w grupie Pokaż/Ukryj na karcie Projekt .

  4. W pierwszej kolumnie siatki projektu zapytania dodaj następujące pole do pola Pole i wprowadź następujące opcje dla pól Suma i Pokaż:

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

    To pole grupuje dane według identyfikatora EmployeeID.

  5. W drugiej kolumnie siatki projektu zapytania dodaj następujące pole do pola Pole i wprowadź następujące opcje dla pól Suma i Pokaż:

    Field: Freight
    Total: Sum
    Show: Yes
    

    To pole sumuje dane frachtu.

  6. W trzeciej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i wprowadź następujące opcje dla pól Total (Suma) i Show (Pokaż).

    UWAGA W poniższym przykładzie podkreślenie (_) na końcu wiersza jest używane jako znak kontynuacji wiersza. Usuń podkreślenie z końca wiersza podczas ponownego tworzenia tego przykładu.

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

    Wyrażenie w polu Pole używa funkcji DSum() do sumowania pola Freight, gdy identyfikator EmployeeID jest mniejszy lub równy bieżącemu parametrowi EmpAlias, a następnie formatuje pole w dolarach.

  7. Uruchom zapytanie. Zwróć uwagę, że w polu RunTot są wyświetlane następujące rekordy z uruchomioną sumą:

    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