Friday, January 29, 2010

APEX @ ODTUG...

The ODTUG conference will be held in Washington DC again this year. Washington is one of my favorite places and my first ODTUG was in Washington as well... I liked it so much.

So what about APEX at ODTUG? APEX will be huge again... 30+ APEX presentations, the Oracle APEX Development team will be there, all "names" in APEX world will attend... in short a conference not to miss.

Early bird is there till 24th of March and now there is a special too. You can only subscribe for the Sunday Symposium. On Sunday you can watch some of the most well-respected Oracle APEX experts work as a team and demonstrate how to build an application from the ground up! We'll start with a set of requirements, design and build a data model, then build, secure, tune, enhance, and translate a working Oracle APEX 4.0 application right before your eyes!

Next to all the APEX things there are other development tools as well ;-)

And as like the other years, also this time there is a community service again. You find more information here.

Wednesday, January 27, 2010

Sumneva Live!

Early this morning we turned the switch on our site with the message that APEX Evangelists will join forces with Sumner Technologies in a new company called Sumneva.


The four of us will all be directors of this new company. While Doug and Scott will focus more on the US market, John and I will take care of EMEA. Having said that, in a lot of occasions we will work together. The first result of that is all training material will be the same. If you go to the new Sumneva website you'll find a complete set of APEX trainings available to you. From Beginner over Intermediate to Advanced. The next training dates in the US and Europe are already listed!


Next to the training, we'll work together on some clients to provide them with APEX Support the clock round. Although we have many US customers, for a European company it wasn't always easy to get somebody onsite, so now that is solved as well.

We have many more ideas and with the four of us, together with the people we work with we are just stronger in numbers and minds ;-) All of us have specific expertise which we can now leverage when needed.

In the meantime have a look at our new site and feel free to give any comments...

Tuesday, January 26, 2010

APEX 4.0: Dynamic Actions - Part 1

So what is all that about Dynamic Actions in APEX 4.0?

Basically, before we had to write a lot of javascript to get things happening on the client. E.g. you wanted to show or hide a field or a region depending other values on the page.

From APEX 4.0 onwards we can do a lot of these things declarative (through a wizard).
You have two types of Dynamic Actions: Standard and Advanced.


This post will have a closer look into the Standard Dynamic Action. (Advanced will be covered in Part 2)


You will need to specify the selection type of the page elements that define when the dynamic action will fire. You can chose out of: Item(s), Region, DOM Object and JQuery Selector.
Depending the type you chose you'll see different things to fill in e.g. the item(s) or region name, the condition and value when the dynamic action needs to fire.
Next you specify the event type for the dynamic action. In conjunction with the triggering elements define in the 'When' region, this is used to define the actual event on the page that will cause the dynamic action to trigger.

So in the above example I want to fire the dynamic action when my P5_SELECT equals to Y and it looks for it whenever I change the select list.


Next you define what you want to do. In my case I want to disable an item when the value of the select list is N and enable it again when the value is Y.

Finally I told the dynamic action what field it had to enable/disable. You see it live here.

If you go back into the App Builder and look at your page (Tree View) you see the Dynamic Action below (if you still use the Components View it's at the end as well and the screenshot looks like the very first picture on top of this post).

You can still edit the Dynamic Action and configure it further.

I like Dynamic Actions a lot, it will definitely speed up development as it's just build-in now. Not a single line of javascript you have to write. Obviously we now did only a simple thing and you still need to test things if they do what you expect... I tried to Enable/Disable a button, but that didn't work yet, but like the above example with an item it worked like I expected.

Wednesday, January 13, 2010

Oracle Application Express Patch Set 3.2.1.00.12

Yesterday a new patch for APEX came out on My Oracle Support (Metalink). Without the patch number it was difficult for me to find the right patch, as just searching on product family Oracle Application Express didn't give the correct result. So if you want to download the patch from My Oracle Support search for patch number 8548651.

This patch includes a number of fixes:

Bug NumberDescription

5914368

In Firefox, Find functionality in HTML Editor Standard is broken.

5914374

In Firefox, text inside a table in HTML Editor Standard is always striked.

8320124

Updates ignored when editing all regions.

8320185

Error displays when applying changes to include an Oracle Report in application migrations.

8330936

Oracle Reports with a SQL query greater than 4k cannot be converted in Forms conversion.

8331010

Oracle Report SQL queries greater than 4k are not displayed in Forms conversion project.

8331201

Export/import actions cause loss of interactive report print attributes.

8334711

Transactional SQL in SQL Commands results in a ORA-01003.

8338787

Enhanced query not saved correctly when Apply Changes is clicked in application migrations.

8338990

Application import is slow and sometimes times out.

8347332

Unable to use greater than character (>) in expression in CASE statement of computed column.

8351256

Upgrading runtime-only environment results in ORA-04042 errors on GRANT action.

8355079

APEX_UTIL.EXPORT_APPLICATION(_PAGE) throws ORA errors with multibyte characters.

8358834

Cannot create application from a Migration project with mixed case table names.

8370221

Create package with methods on database tables fails.

8371342

When using page groups, manage unassigned links goes to wrong page.

8416002

Slow performance when creating application on spreadsheet.

8417143

ORA-44003: invalid sql name error when creating a Calendar region.

8422688

apex_user_access_log.last_login column not correctly updated.

8431814

Unable to import SQL script using SQL Workshop, SQL Scripts, Import utility.

8432829

Poor performance when running Lists of Values Utilization report.

8460439

Interactive report from copied page takes bind variable value from original page.

8466467

Deep link lost after sso authentication.

8466721

Oracle Application Express schema needs EXECUTE privilege on DBMS_RANDOM, DBMS_OBFUSCATION_TOOLKIT.

8466935

Allow developed applications to call APEX_UTIL.CREATE_USER.

8486277

Unable to edit non-database blocks listed in application migrations.

8494970

COLUMN COLUMN_EXPR not exposed in Oracle Application Express views.

8512898

Build Options display incorrectly in some Oracle Application Express views.

8527710

Tabs overlap in 2-level Tab template in Chrome/Safari for Theme 17.

8530955

Degraded performance using interactive reports over time.

8534848

Interactive report charts raise Object Required error in Microsoft Internet Explorer.

8551429

ORA-00936 is displayed in page views by workspace and user (4050:36).

8553100

Original query generated for Forms conversion uses incorrect column names.

8555172

BLOB download links are incorrect when multiple file items referenced on a page.

8567600

ORA-00942 error occurs in Utilities, Object Reports, PL/SQL Unit Line Counts.

8567757

ORA-00979 error occurs in Utilities, Schema Comparison report.

8568894

JavaScript error using Interactive reports when selecting a column in Search bar.

8571758

Unable to upload Oracle Report XML to Forms conversion project on Oracle Database, release 9.2.

8573453

Create workspace fails - ORA-28232: Invalid input length for Obfuscation Toolkit.



How to install the patch and further information you find in the patch notes. After installing the patch your version of APEX should be 3.2.1.00.12.

Wednesday, January 06, 2010

APEX 4.0: My first Plugin - Editable Select List / Combobox

Before I just played around with APEX 4.0 and tested the new features and created some quick apps, but a week ago I made the decision to really see what APEX 4.0 can give me in a real project.

So the plan I had was to start this project in APEX 4.0. It's a risk as I might never be able to import it again in the next version of the Early Adopters release, but I made this conscious decision because I really wanted to see how much time APEX 4.0 could save me.

I'll do a proper blog post about the outcome once I finish the project, but I already wanted to discuss the Plug-ins part of APEX 4.0.

In my project a person need to be able to see and select a category. If the category doesn't exist he needs to be able to create it. So if I was in APEX 3.x I would look at using a select list or a popup lov. Possibly I would add a plus button next to it and write some javascript code to show a text item to enter a new category if it wasn't already in the system. Alternatively I would use some JQuery plugins like the autosuggest or an editable select list / combobox.

But in APEX 4.0 there is a build-in item type "textfield with autocomplete" which I could have used, but one of the drawbacks of that is that you can't really look what is in the system already without typing some letters. So I searched for an editable select list, but that item type didn't exist.

It would take me about 5 minutes to write some custom JQuery code and hook up the plugin to get an editable select list, but I would need to do that for every project again on every page I want to use it. So I thought it's a good moment to create such item type myself, which I would be able to reuse in every project.

It took me about 3 hours to understand how the plugins worked, read Patrick's documents and look at his examples and use that knowledge to create my first plugin. So I need to use this plugin 36 times to be break-even compared to if I did it the custom route.

But the big advantages of using the plug-in are:
- the implementation will be every time the same
- more people can use
- you don't need to know javascript to get things working

You can see the Editable Select List Plugin working and be able to download it here.

To install the Plugin in your own application, go to Shared Components > Plug-ins and hit the Install button.

Tell it in which app it needs to be installed into (Plug-ins are app specific).


And review the code, my plugin is called AE Sexy Combo, because it's based on the Sexy Combo JQuery plugin.


So now you should be able to create this item type on your pages.

You add a new item of type Plug-ins and select the AE Sexy Combo

You give it a name and you need to add a select statement to it (in the LOV section of the item) and it's ready!

Conclusion; it didn't take me too long to understand how the plugins worked especially not if you investigate the existing examples which you can use as a starting point.
I found it not easy to find my coding mistakes e.g. I'm not sure the plsql code gets parsed, but it took me some time to find I missed a ")" somewhere. But I used the apex_plugin.debug_page_item and found that helpful.
It would be nice to be able to upload multiple files at once and be able to reference the css like you do with javascript e.g. apex_javascript, get an apex_css.

I like Plug-ins very much, I think if people start to share that we can extend APEX ourselves all the time without having to wait for another APEX release. It's a very controlled environment, so much more secure to use especially for non-advanced developers.