Jak utworzyć zapytanie sumy bieżącej w programie Microsoft Access

Uwaga

Nazwa usługi Office 365 ProPlus została zmieniona na Aplikacje usługi Microsoft 365 dla przedsiębiorstw. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis w blogu.

Zaawansowane. Wymaga kodowania eksperta, współdziałania i umiejętności wielu użytkowników.

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

Podsumowanie

W tym artykule pokazano dwie metody, za pomocą których można utworzyć zapytanie sum bieżące. Zapytanie podsumowujące bieżącą to zapytanie, 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 dla grupy rekordów (lub w okresie czasu) na wykresie lub w raporcie.

Uwaga W przykładowej prezentacji pliku można zobaczyć pokaz techniki używanej w tym artykuleQrysmp00.exe.

Więcej informacji

Metoda 1

W pierwszej metodzie do utworzenia sumy bieżącej w czasie używana jest funkcja DSum i kryteria w zapytaniu. Funkcja DSum sumuje bieżący rekord i wszystkie poprzednie rekordy. Gdy zapytanie zostanie przeniesiony do następnego rekordu, funkcja DSum zostanie ponownie uruchomiona i aktualizuje sumę skumulowaną.

W poniższym przykładowym zapytaniu użyto tabeli Zamówienia z przykładowej bazy danych Northwind do utworzenia sumy bieżącej kosztów frachtu dla każdego miesiąca w 1997 roku. Dane przykładowe są ograniczone do jednego roku ze względu na wydajność. Ponieważ funkcja DSum jest uruchamiana raz dla każdego rekordu w zapytaniu, przetworzenie zapytania może potrwać kilka sekund (w zależności od szybkości komputera). Aby utworzyć i uruchomić to zapytanie, wykonaj następujące czynności:

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

  2. Utwórz nowe zapytanie wybierające i dodaj tabelę Zamówienia.

  3. W menu Widok kliknij polecenie Sumy.

    Uwaga W programie Access 2007 kliknij pozycję Sumy w grupie Pokazywanie/ukrywanie na karcie Projektowanie.

  4. W pierwszej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i zaznacz następujące opcje dla pól Suma, Sortowanie i Pokazywanie:

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

    Wyrażenie w polu Pole wyświetla i sortuje rok w polu OrderDate.

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

    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 zaznacz następujące opcje dla pól Suma i Pokaż.

    UWAGA W poniższym przykładzie jako kontynuacja wiersza jest używany znak podkreślenia (_) na końcu wiersza. Podczas ponownego tworzenia tego przykładu usuń podkreślenie z końca wiersza.

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

    W wyrażeniu w polu Pole jest używana funkcja DSum() do sumowanie pola Fracht, gdy wartości zarówno w polach AMonth, jak i AYear są mniejsze niż lub równe bieżącemu rekordowi, który jest przetwarzany przez zapytanie.

  7. W czwartej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i zaznacz następujące opcje dla pól Suma, Sortowanie i Pokazywanie:

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

    Wyrażenie w polu Pole wyświetla każdy miesiąc w formacie tekstowym, takim jak sty, lut, mar i tak dalej.

  8. W piątej kolumnie siatki projektu zapytania wpisz następujące wyrażenie w polu Pole i zaznacz następujące opcje dla pól Suma, Kryteria i Pokaż:

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

    Wyrażenie w polu Pole filtruje zestaw rekordów zapytania tak, aby uwzględniał dane tylko z roku 1997.

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

    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

W drugiej metodzie do utworzenia sumy bieżącej dla grupy jest używane zapytanie sum z funkcją DSum().

W poniższym przykładowym zapytaniu użyto tabeli Zamówienia do zsumowania kosztów frachtu dla każdego pracownika, a także do obliczenia sumy bieżącej frachtu. Aby utworzyć i uruchomić zapytanie, wykonaj następujące czynności:

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

  2. Utwórz nowe zapytanie wybierające i dodaj tabelę Zamówienia.

  3. W menu Widok kliknij pozycję Sumy.

    Uwaga W programie Access 2007 kliknij pozycję Sumy w grupie Pokazywanie/ukrywanie na karcie Projektowanie.

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

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

    To pole grupuje dane według identyfikatorów pracowników.

  5. W drugiej kolumnie siatki projektu zapytania dodaj następujące pole do pola Pole i zaznacz 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 zaznacz następujące opcje dla pól Suma i Pokaż.

    UWAGA W poniższym przykładzie jako kontynuacja wiersza jest używany znak podkreślenia (_) na końcu wiersza. Podczas ponownego tworzenia tego przykładu usuń podkreślenie z końca wiersza.

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

    W wyrażeniu w polu Pole jest używana funkcja DSum(), aby zsumować pole Fracht, gdy identyfikator pracownika jest mniejszy lub równy bieżącym wartościom EmpAlias, a następnie formatuje to pole w złotych.

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

    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