DBEXECUTE
W środowiskach chmurowych formuła DBEXECUTE jest obsługiwana tylko w aplikacjach komercyjnych Infor. Nie można użyć DBEXECUTE w aplikacjach niestandardowych ani rozszerzonych. Zamiast tego należy użyć DBEXECUTEFIXED.
Można odczytywać wartości z relacyjnej bazy danych, aktualizować istniejące wartości i wprowadzać nowe wartości. DBEXECUTE działa bezpośrednio w bazie danych, nie zaś poprzez listę. Zatem inaczej niż w przypadku funkcji RWDB, można wstawiać wiersze do bazy danych. Parametry formuły DBEXECUTE to instrukcje SQL.
Funkcja DBEXECUTE, funkcja obsługuje cztery kombinacje klawiszy, za pomocą których można wpisać do bazy danych 0, wartość Null albo pusty ciąg.
- DEL: Zapisuje 0
- CTRL+DEL: Zapisuje Null
- BACKSPACE: Zapisuje pusty ciąg ("")
- CTRL+BACKSPACE: Zapisuje pusty ciąg ("")
Składnia
Formuła DBEXECUTE ma trzy następujące parametry.
- Nazwa bazy danych: Określa to relacyjne połączenia danych zdefiniowane w EPM Administration.
- Instrukcja Select: Jest wykorzystywana do pobierania danych z bazy danych. Jest to standardowe polecenie SQL SELECT. Gdy zostanie wprowadzona nowa wartość, istniejąca wartość zostanie zaktualizowana. W przypadku braku istniejącej wartości używana jest instrukcja INSERT. Aby dokonać zapisu zwrotnego do bazy danych, kwerenda musi odwoływać się do klucza głównego. Instrukcja SQL SELECT może zwracać wiele wartości z wiersza, ale formuła DBEXECUTE 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ę.
- Instrukcja INSERT: Określa, w jaki sposób nowe dane są wprowadzane do bazy danych. Jest to standardowe polecenie SQL INSERT. Znaku
?
można użyć w instrukcji INSERT. Odpowiada on wartości wprowadzonej ostatnio przez DBEXECUTE do bieżącej komórki.
Przykład
W tym przykładzie kluczem głównym jest productid
.
=DBEXECUTE("data_connection", "SELECT productid,FROM products WHERE
productid=123","INSERT INTO products VALUES(’123’,?)")
Instrukcja select jest wykonywana za każdym razem, gdy jest przetwarzana funkcja DBEXECUTE. Na przykład, kiedy jest wyświetlana w raporcie, wykorzystywana jako parametr w dowolnej innej formule, wykorzystywana w akcji itd. Natomiast instrukcja INSERT jest wykonywana tylko wtedy, gdy wartość jest wprowadzana do komórki i wartość ta nie istnieje w bazie danych. Funkcja ta może być wykorzystywana, jeśli z akcji korzysta się do wykonania DBEXECUTE i chce się wstawić dane do bazy danych lub wykonać dowolne inne polecenie SQL.
Przykład
W tym przykładzie kluczem głównym jest productid
. Identyfikator produktu, do którego nastąpiło odwołanie, jest przechowywany w zmiennej raportu o nazwie rv_prod.
=DBEXECUTE("data_connection", "SELECT productid, FROM products WHERE
productid="&Reportvariables.rv_prod.text,"INSERT INTO products VALUES(’123’,?)")
DBEXECUTE w Akcjach
Aby wykonać instrukcję INSERT lub dowolne inne polecenie SQL w formule DBEXECUTE wykonywanej przez akcję, użyj instrukcji insert zamiast select.
Przykład
=DBEXECUTE("data_connection", "INSERT INTO products VALUES (’123’,’[a
value]’)","")