DBEXECUTEFIXED
DBEXECUTEFIXED jest alternatywą dla DBEXECUTE, która obsługuje parametry. W odróżnieniu od DBEXECUTE, tej formuły można używać zarówno w środowiskach chmurowych, jak i lokalnych, oraz w aplikacjach niestandardowych i rozszerzonych.
Instrukcja SQL jest traktowana jako tekst stały i dlatego nie może bezpośrednio odwoływać się do zmiennych.
Jeżeli instrukcja znajduje się w niechronionej komórce, to można zaktualizować zwracaną przez nią wartość, ale, inaczej niż w przypadku DBEXECUTE, nie można dodawać nowych wierszy.
W nazwach parametrów jest uwzględniania wielkość liter.
Składnia
Formuła DBEXECUTEFIXED ma następujące parametry.
- Alias: Określa to relacyjne połączenia danych zdefiniowane w d/EPM Administration.
- Instrukcja Select: Jest wykorzystywana do pobierania danych z bazy danych. Jest to standardowe polecenie SQL SELECT. Aby umożliwić aktualizację bazy danych, kwerenda musi zawierać klucz podstawowy. Instrukcja SQL SELECT może zwracać wiele wartości z wiersza, ale formuła DBEXECUTEFIXED zignoruje wszystkie prócz pierwszego. Aby więc zwrócić wartość nie będącą kluczem głównym, i dokonać jej zapisu zwrotnego, należy dopilnować, aby klucz główny nie był pierwszą wartością pobieraną przez instrukcję. W przypadku zapisu zwrotnego komórka zawierająca kwerendę musi być niechroniona.
- Wartości parametru: Można używać parametrów o pojedynczej wartości i z wieloma wartościami. W instrukcjach SQL parametry o pojedynczej wartości oznacza się za pomocą składni
@[nazwa_parametru]
. Odwołania do parametrów z wieloma wartościami mają format@@[nazwa_parametru]
. Wartości w parametrach z wieloma wartościami należy rozdzielić pionową kreską(|)
.
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})
Nazwy parametrów są automatycznie definiowane wg wzoru p1,p2 itd.
Przykład
W tym przykładzie formuła zwraca nazwę pozycji, w której identyfikator ma wartość aktualnie przechowywaną w zmiennej raportu rv_configs. items.ID
jest kluczem podstawowym.
=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)
items.id
jest kluczem podstawowym. Jeżeli formuła znajduje się w niechronionej komórce i zwraca wartość, tę wartość można zaktualizować: w tym przykładzie jest to nazwa pozycji.
Ponieważ cała instrukcja SQL jest traktowana jako tekst, nie ma obowiązku łączenia wartości ciągów za pomocą znaku &
, jak to jest w przypadku następujących formuł DBEXECUTE:
=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")
Składnia łączenia jest inna, ponieważ pierwszy przykład dotyczy wartości liczbowej, a drugi – tekstowej.