This post is valid up to Oracle APEX 20.01 version, when there is CKEditor version 4. From APEX 20.02, when creating new Rich Text Editor page item, it’ll be created as CKEditor version 5 and parts of the codes below won’t work.
It’s been a while since the last time I posted something, but there were no new challenges, which always inspire me to share the solutions with you, until last week. I was tasked to build dynamic surveys, where users can define their own questions. This resulted into decision of building a function in a package, which returns HTML of the survey in CLOB. In another application we already used load and save CLOBs so I reused the code and behold, I got apex.ajax.clob is not a constructor error. What caused the error and how to solve it is what I’ll be talking about today. If you are interested about an article about surveys, I might do it in future, but now I’ll focus more on the standard use of CLOB column in application and that’s using it together with APEX Rich Text Editor.
Last week I wrote about how to setup your Web Source and how to create report from it as source. Lastly, I explored the external filters and order by functions and how to use them. This time, I’m going to talk about caching of the web source and why not to use the external filters and order by.
Welcome back to my blog. It’s a while since my last blog post, but the lack of interesting or worth sharing stuff made me go on hold for over a half year. That changed with the last request I got. Due to some reasons we have internal application which we currently develop, but we want to expose part of it to the big bad Internet. Due to the nature of the Internet we won’t be risking exposing the application itself and we only create reporting application, which will connect to only specific objects in database remotely, so we limit the risk of exposing data we don’t want to expose.
From the first time I started working with Oracle Application Express (several years back) I liked it. Only few small things bothered me at time, but with every version it always got better. For example I hated tabular forms, but love to use interactive grids now. The only thing I don’t recall ever changing are cascading list of values. I still use them, but some native behaviour bothers me every time I implement them. Mainly I’m speaking about the fact, if you change parent list, all cascading child lists are refreshed and all selected values are cleared. In select lists it can be overlooked, but where it infuriate me are shuttle boxes, where – in cascade you might have several shuttle boxes, selected dozens items, just to be cleared if you remove one item from the parent box. This problem lead to article you’re about to read.
this is just quick note. One reply got me thinking to put every code I wrote here as an example on the apex.oracle.com website so you can try it yourself. Here is the new link: https://apex.oracle.com/pls/apex/f?p=70928:1. I’ll update the application with the other articles, but for now I put there only the one with interactive grid calculations and validations.
One of the features I always hated in the previous versions of APEX (before 5) were tabular forms. I never got then, they were always behaving funky, it was hard to debug and I preferred to write dynamic tabular forms by myself then with the built in functionality. It changed with the release of Interactive Grids with the Oracle APEX version 5.
When I’ve started working with them it was in the English speaking company and I didn’t face the problem I had later in Czech company, where I wanted to customize or translate buttons. It was not difficult to understand words like “edit” or “save” for users, but I wanted to have consistency in these buttons across the whole application.
What do you say, when you start new website? Hi? Anyway, this is my new blog (I have others about different topics). Hopefully this will be an interesting read for everybody who is looking for information about Oracle Application Expres (APEX). But more than that – it will probably be a place, where I’ll be saving some snippets of codes which were useful in the past and which I have always troubles search for again.