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.

Uwaga

W nazwach parametrów jest uwzględniania wielkość liter.

Składnia

Formuła DBEXECUTEFIXED ma następujące parametry.

  1. Alias: Określa to relacyjne połączenia danych zdefiniowane w d/EPM Administration.
  2. 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.
  3. 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.

Uwaga

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.