Friday, March 27, 2009

ODTUG Schedule available

Check out the full schedule of ODTUG Kaleidoscope 2009. So many sessions..so little time. And even more frustrating: in every timeslot there are at least three must-see sessions! Luckily I have another couple of months to decide where to go (and what I have to skip).
You can view the schedule here. (I have to compete with Scott Spendolini for the APEX crowd...)

Wednesday, March 25, 2009

My first (real) article in print

I just received the latest version of OGH Visie - the magazine of the Dutch Oracle Usergroup. As always there are a lot of interesting articles, but this one in particular attracted my attention: "APEX 3.2 now with Oracle Forms to APEX conversion...". Guess who wrote it... ;-)
For all non subscribers: The magazine is available for download from the OGH website. Those who can't read Dutch have to wait for an upcoming release of Oracle Scene - just today I submitted the English version to the editor. Hope they'll publish it also!

APEX & Oracle eBusiness Suite

Just to share two interesting links about this subject:
One from one of my colleagues About Integration of Oracle APEX with eBusiness Suite.
And one About eBusiness Suite Express.
Maybe of any interest to those who are struggling with this subject....

Wednesday, March 18, 2009

Two Interactive Reports on one Page

Within APEX you normally can't define two Interactive Reports on the same page. But sometimes you do need that kind of solution. You can use Ajax to get the data into your form, but using an IFrame seems a more elegant way. There are some drawbacks using IFrame but (as Johan Cruijff used to say) "every advantage has it's disadvantage".

But this is how it works using an IFrame:
1. Create a page (ex. 24) with an Interactive Report on DEMO_ORDER_ITEMS - set the Page Template to 'Printer Friendly' to get rid of the regular header and footer stuff.
2. Create a page (ex. 23) with an Interactive Report on DEMO_ORDERS
3. On page 23 create an HTML Region with as Region Source:

<IFRAME src="f?p=&APP_ID.:24:&SESSION."
style="width:600px;height:600px"
name="details"
scrolling="no" marginwidth="0" marginheight="0"
frameborder="0" vspace="0" hspace="0" />
4. Set the Link Column attributes of the Interactive Report on DEMO_ORDERS to:
- Link Column : Custom Target
- Link Attributes : target="details" (that's the name of the IFRAME)
- Target Page : 24
- Clear Cache : 24,RIR (will clear the IR cache on Page 24)
- Item 1 : IR_ORDER_ID as the Name, #ORDER_ID# as the Value (will set ORDER_ID as Search Item.
Now if you click on the Column Link on the left IR, the right IR gets synchronized. Isn't that cool?
See the live example on apex.oracle.com.

Thursday, March 05, 2009

Accessing an LOV with a function key (F9)

In good old Oracle Forms you could access an LOV by pressing F9 (depending on your resource file settings). Within APEX you always need a mouseclick....unless you catch a keypress and call the LOV programatically. Of course with help of jQuery.

Create a function in your Page Header:

function checkLOV(pThis, pEvent){
var keynum;
var current = document.getElementsByName( pThis.name );
if(window.event) // IE
{ keynum = pEvent.keyCode; }
else if(pEvent.which) // Netscape/Firefox/Opera
{ keynum = pEvent.which; }
if (keynum == 120) //F9
//The LOV function call is in the anchor of the next TD element
{ eval($(pThis).parent().next().children().attr('href'));
}
}
This function is called by an onkeydown event on the fields with an LOV: onkeydown="checkLOV(this,event)". Ofcourse you also use jQuery and the APEX Repository to set this event for all fields with an LOV definition...
You can see it live on apex.oracle.com.

Update: After a comment of Louis-Guillaume I changed the above code using the jQuery HotKeys plugin. The code gets a lot simpler:

$(function(){
$('#P22_EMP').bind('keydown', 'f9', function(){
eval($(this).parent().next().children().attr('href'));
});
$('#P22_DEPT').bind('keydown', 'f9', function(){
eval($(this).parent().next().children().attr('href'));
});
});
Also available on apex.oracle.com.

How to disable a calendar button....

When you disable a Datepicker field, you can still click the matching image next to that field and doing so will popup the calendar window.

You can easily get this functionality using jQuery:

$(function(){
$('td.datepicker input:text').each(function(){
var i=this.id;
$('#'+i+'_IMG').click(function()
{return (!document.getElementById(i).disabled);});
});
});

This function adds a click event to the Calendar image that will only return true - and therefore do something - if the date field is enabled. You can see how this works on apex.oracle.com.

Why doesn't APEX handle this by itself? I really don't know. Maybe they'll copy this solution (or similar) in the next version....