Archive for the ‘Apex’ Category

ApEx 4.0 available for download

June 23, 2010

ApEx 4.0 has been released. You can download the new version of ApEx on the website of Oracle.

You can read about the new features of Application Express 4.0 here.

Please mind that the requirements are changed:

Oracle Application Express 4.0 is supported on all Editions (SE1, SE, EE, and XE) of the Oracle database, 10.2.0.3 or higher. Application Express 4.0 can also be used with Oracle Database 10g Express Edition.

First APEX SIG in Belgium (via OBUG) focused on APEX 4.0

June 21, 2010

Last Thursday (17/06) Oracle Benelux User Group, aka OBUG, organised his first APEX SIG, an initiative of Dimitri Gielis and Roel Hartman. Even though the new version of the product is not yet “in production”, the theme of the day was APEX 4.0.

iAdvise sponsors firs APEX SIG in BeNeLuxWe, at iAdvise, are one of the early promoters of Oracle Application Express in Belgium.   Since 2006, we implemented already different solutions with APEX. Therefore, we could not  be absent at this event and decided to participate and sponsor this first APEX SIG day.

Olivier Dupont and Jan Huyzentruyt gave a presentation with the title: “APEX 4.0: Feature 135, 184, 301, 315, 348 … How it was before, how it is now !“  The idea was to demonstrate some of the less spectacular new features of Apex 4.0 that (1) makes the life of the APEX developer easier and more productive and (2) allows to create more good looking, to the point web-application. Most of those features we explained by showing how it was in the “old” days, and how (easy) it is with APEX 4.0.

For everybody who could not attend the OBUG session, we published our presentation at slideshare.net:

A report of the day can also be found here.

SQL Developer and ApEx: Application missing

March 3, 2010

Last week I was searching for a long time to find my application in SQL Developer. I wanted to deploy it to a production environment, the application had APP_ID 113 but I couldn’t find it in SQL Developer:

After some time I noticed an other application that had the same name: “Daily Report”. After I changed the name of my application to “Daily Reports”, I could see it in SQL Developer and deploy it!

Google Translate integrated within xTra4o

January 28, 2010

xTra4o stands for “XLIFF Translator for Oracle”, and more specific for APEX.

xTra4o is an application that iAdvise has built, already a few years ago, that helps in the translation process of an APEX application. This tool is publicly available as referenced by the APEX OTN site.
Read our blogs  referring to this tool, posted in February 2007.

There is a one specific step within the process of tanslating an application that  APEX itself does not so well support; it is step 3 where you must translate all translatable elements within the so-called XLIFF file.

Our xTra4o allows to upload this XLIFF file and translate the individual elements via a specific editor.

A first surplus of this tool is the possibility  to write common terms in a Dictionary  and use this Dictionary for translating similar terms.

Today we have added an additional useful feature to the tool. For each source term you can get the translation via the Google Translate API. Following screenshot shows the new icon, you can click on to let Google make the translation. In the example English terms must be translated into French:

As a user, you can always adjust the proposed translation yourself and decide to add the word in the Dictionary.

We have discovered that Google does not always treat ‘special characters’ in a proper way. For some of those signs (like the ‘#’ sign), we block the API call. It is possible that we do not block all special characters yet, but this can easily be added. If you detect such cases, let us know via the feedback option in the tool.

To use this Google Translate API we started from the PL/SQL code that you can find on this blog.

ApEx 4.0 : Tabular Form Validations

January 24, 2010

An other nice feature of ApEx 4.0 will be the option to create tabular form validations. This will give tabular forms the only thing it missed so far, an easy way to validate the data before you try to save it.

In the previous editions you could write your own validation for a tabular form but you had to take care of the session state of the data you filled in, otherwise the date you changed would be lost if a validation was triggered.

An other option you could use was to implement the famous ApExLib Framework from Patrick Wolf.

To create a tabular form validation in ApEx 4.0 you just create a new validation and you will see that an extra option is present:

Step 1

(more…)

ODTUG first day ApEx roundup

June 22, 2009

The ApEx Symposium on the first day of ODTUG is over. It was a great day full of very interesting presentations. The day started with Joell Kallman presenting the keynote: Application Express: Ahead of the Curve. A very interesting and amusing presentation about the possible future of ApEx.

After Joell it was my time to present ‘APEX at Brussels Airport‘. I had a limited time slot of 30 minutes but at the end I had a good feeling about my presentation. Seeing I got several questions after the presentation, I hope I helped some people with giving them new ideas for possible technical solutions.

During the symposium I saw some very nice presentations giving all sorts of approaches for developing ApEx applications. At the end of the day there was an ApEx Panel Discussion with:
- David Peak
- Joell Kallman
- Patrick Wolf
- John Scott

Everyone (including moderator Scott Spendolini) got a chance to ask questions about ApEx with some interesting discussions following.

I’m looking forward to monday where Michael Hitchwa will be presenting Oracle Application Express 4.0.

ODTUG : ApEx Symposium

June 13, 2009

ODTUG 2009 in Kaleidoscope is coming very close. I will be presenting: Mission Critical APEX – APEX at Brussels Airport in the category Customer Success.

The ApEx Symposium will start on Sunday 21 JUN and I will be first after the keynote of Joel Kallman.

I started to prepare quite late as I never got an answer on my abstract BUT it seemed that all mails from ODTUG for some reason came into my junk mail folder. A good reason to not just delete any message that lands into it, totally my own fault.

A colleague found my name on this website, from then on I could confirm for ODTUG.

I’m looking forward to the next sessions:

- Dietmar Aust: PDF Printing with APEX—A Cost-free Alternative
- Roel Hartman: How to Integrate APEX and Oracle Forms?
- John Scott: Increasing Scalability with Oracle Application Express
- Patrick Wolf: The Quest for the Hidden Treasure of Oracle APEX

And there are at least 10 other sessions I want to attend to, there are so many session that it is very difficult to choose from them.

See you at ODTUG!!

Force page submits when paginating via selectlist

April 11, 2009

This is an extension for my previous post, how to not only submit via the next and previous links, but also via select.

This might not be the best solutions, and improvements are possible, but it’s a good startpoint. We will replace the #TEXT#-variable of Apex with our own generated html-code.

You need to add 3 extra lines in your sql-query to get the information you need, these columns don’t need to be displayed:
,ROWNUM API_ROWNUM
,COUNT(1) OVER() API_TOTALROWS
,NVL(:P1_ROWS,15) API_RPP

You will need to create a function that create our html-code, and an application-item to store the result in. My app-item will be API_SELECT and my function will be f_get_report_vars. The code will be shown below.

Next we have 2 modification in the report template.

We need to retrieve our total number of rows, our current displayed rows and our rows per page. I changed the column template 1 condition to PLSQL and added f_set_reportvars(‘#API_ROWNUM#’,'#API_TOTALROWS#’,'#API_RPP#’) = 0.

0 is a dummy value so my evalution is always TRUE. It might not be the correct place to do this, because it wasn’t designed to be used like this and the function is execute for every displayed row, instead of just once. (Suggestions are welcome)

Next step is changing the pagination template, which is default empty or
&ltspan class=”instructiontext”>#TEXT#&lt/span>
and use our app-item
&ltspan class=”instructiontext”>&API_SELECT.&lt/span>

And the function making this magic happen would be:

create or replace
FUNCTION f_set_reportvars(pin_rownum IN NUMBER
,pin_total_rows IN NUMBER
,pin_rpp IN NUMBER
) RETURN NUMBER
IS
lv_select VARCHAR2(1000);
ln_from NUMBER;
ln_to NUMBER;
ln_sets NUMBER;
ln_page_id NUMBER := apex_util.get_session_state(‘APP_PAGE_ID’);
ln_app_id NUMBER := apex_util.get_session_state(‘APP_ID’);
ln_session NUMBER := apex_util.get_session_state(‘SESSION’);
ln_region_id NUMBER;
BEGIN
–optional, set variables for other usage
–apex_util.set_session_state(‘API_ROWNUM’,piv_rownum);
–apex_util.set_session_state(‘API_TOTALROWS’,piv_totalrows);
–apex_util.set_session_state(‘API_PPR’,piv_ppr);

–get region id, when more then one report per page you need a tag in your static_id
SELECT region_id
INTO ln_region_id
FROM apex_application_page_regions
WHERE application_id = ln_app_id
AND page_id = ln_page_id
AND source_type = ‘Report’
/*AND static_id LIKE ‘MYTAG%’*/;

–define number of row ranges
ln_sets := CEIL(pin_total_rows/pin_rpp);
–when more then 1 row range, create select list
IF ln_sets > 1 THEN
lv_select := ‘&ltselect id=”X01_’||ln_region_id
||’” onchange=”doSubmit(”f?p=’||ln_app_id||’:'||ln_page_id||’:'||ln_session
||’:pg_R_’||ln_region_id||’:NO&pg_min_row=”+this.options[selectedIndex].value+”&pg_rows_fetched=_’||pin_rpp||”’);” size=”1″ name=”X01″>’;
–make an option in the select list for every row range
FOR i IN 1..ln_sets LOOP
ln_from := ((i-1)*pin_rpp)+1;
ln_to := LEAST((i*pin_rpp),pin_total_rows);
–make difference between current row range and others
IF pin_rownum BETWEEN ln_from AND ln_to THEN
lv_select :=lv_select||’&ltoption selected=”selected” value=”current”>Row(s) ‘||ln_from||’-'||ln_to||’ of ‘||pin_total_rows||’&lt/option>’;
ELSE
lv_select :=lv_select||’&ltoption value=”‘||ln_from||’&pg_max_rows=’||pin_rpp||’”>’||ln_from||’-'||ln_to||’ of ‘||pin_total_rows||’&lt/option>’;
END IF;
END LOOP;
–close select-tag
lv_select := lv_select||’&lt/select>’;
END IF;
–set application item with select list
apex_util.set_session_state(p_name => ‘API_SELECT’
,p_value => lv_select);
–return dummy
RETURN 0;
END;


Follow

Get every new post delivered to your Inbox.