FILTER, funkcja ER
Funkcja FILTER
zwraca określoną listę jako wartość typu Lista rekordów po zmianie zapytania tak, aby filtrowała ona dane pod kątem określonego warunku.
Składnia
FILTER (list, condition)
Argumenty
list
: Lista rekordów
Prawidłowa ścieżka elementu źródła danych o typie danych Lista rekordów.
condition
: Wartość logiczna
Prawidłowe wyrażenie warunkowe, które jest używane do filtrowania rekordów z określonej listy.
Wartości zwracane
Lista rekordów
Wynikowa lista rekordów.
Uwagi dotyczące użytkowania
Ta funkcja różni się od funkcji WHERE, ponieważ podany warunek jest stosowany do każdego źródła danych modułu Raportowanie elektroniczne (ER) o typie Rekordy tabeli na poziomie bazy danych. Listę i warunek można zdefiniować przy użyciu tabel i relacji.
Jeśli jeden lub oba argumenty skonfigurowane dla tej funkcji (list
i condition
) nie zezwalają na przetłumaczenie tego żądania na bezpośrednie wywołanie SQL, w czasie projektowania jest generowany wyjątek. Ten wyjątek informuje użytkownika, że elementu list
lub condition
nie można użyć do tworzenia zapytania dotyczącego bazy danych.
Banknot
Funkcja FILTER
różni się od funkcji WHERE
w przypadku korzystania z funkcji VALUEIN
do określania kryteriów wyboru.
- Jeśli funkcja
VALUEIN
jest używana w zakresie funkcjiWHERE
, a drugi argumentVALUEIN
odwołuje się do źródła danych, które nie zwraca rekordów, jest uznawana wartość logiczna Fałsz, która zwracaVALUEIN
. W związku z tym wyrażenieWHERE(Vendors, VALUEIN(Vendors.VendGroup, VendGroups, VendGroups.VendGroup))
nie zwróci rekordów dostawcy, jeśli źródło danych VendGroups nie zwróci rekordów grupy dostawców. - Jeśli funkcja
VALUEIN
jest używana w zakresie funkcjiFILTER
, a drugi argumentVALUEIN
odwołuje się do źródła danych, które nie zwraca rekordów, wartość logiczna Fałsz, która zwracaVALUEIN
, jest ignorowana. W związku z tym wyrażenieFILTER(Vendors, VALUEIN(Vendors.VendGroup, VendGroups, VendGroups.VendGroup))
zwraca wszystkie rekordy źródła danych Dostawcy, nawet jeśli źródło danych VendGroups nie zwróci żadnych rekordów grupy dostawców.
Przykład 1
Jeśli element Vendor został skonfigurowany jako źródło danych ER odwołujące się do tabeli VendTable, wyrażenie FILTER (Vendors, Vendors.VendGroup = "40")
zwraca listę wyłącznie dostawców należących do grupy dostawców 40.
Przykład 2
Jeśli element Vendor został skonfigurowany jako źródło danych ER odwołujące się do tabeli VendTable, a element parmVendorBankGroup został skonfigurowany jako źródło danych ER zwracające wartość o typie danych Ciąg, wyrażenie FILTER ( Vendor.'<Relations'.VendBankAccount, Vendor.'<Relations'.VendBankAccount.BankGroupID = parmVendorBankGroup)
zwraca listę tylko kont dostawców należących do określonej grupy bankowej.
Przykład 3
Wprowadzasz źródło danych DS typu Pole obliczeniowe, które zawiera wyrażenie SPLIT ("A,B,C", ",")
. Następnie wprowadzasz inne wyrażenie FILTER( DS, DS.Value = "B")
. Podczas próby zapisania tego wyrażenia w projektancie formuł ER, jest zgłaszany następujący wyjątek: „Błąd weryfikacji: wyrażenie listy funkcji FILTER nie pozwala na tworzenie zapytań”.