Browsing "Older Posts"

APEX-AT-WORK no image

How can we help Japan?

Von Tobias Arnhold → 3.12.2011
To help the suffering people of Japan my applications from now on "cost" a donation (no matter how small or big) via any aid organisation of Your own choice. All You APEX users who are interested in my plug-in example application just have to send me an e-mail (tobias-arnhold@hotmail.de) including a confirmation of Your donation and You are able to get the export of the application "for free". I hope You have understanding and will do this small effort. I am very greatful for Your cooperation.

Plug-in example application: http://apex.oracle.com/pls/otn/f?p=65560:DONATE_TO_JAPAN

The example application also includes the new "Icon Loader" Plug-in

The plug-in will soon be released.

Info: The application can not be downloaded anymore from my workspace on apex.oracle.com

If you want to then feel free to follow my example and either develope your own "donation for application" -site or you can get access to my workspace "APEX_PLUGINS" and integrate your plug-ins there. I will buy it ;O)
APEX-AT-WORK no image

Range Slider Plug-in for APEX?

Von Tobias Arnhold → 3.08.2011
I'm a bit surprised that there is no range slider plug-in for APEX yet. At least I couldn't find one.

There are a couple of nice examples out there in the wild. I'm curios if somebody of you uses such a plug-in in APEX or is developing a plug-in right now?

I saw one blog entry from Paul Brookes: http://peekbee.blogspot.com/2010/02/range-slider-plugin.html
But the plug-in seems not to be released on: http://www.apex-plugin.com/

List of nice slider solutions:
http://www.paciellogroup.com/blog/misc/samples/aria/slider/doubleslider.html
http://jqueryui.com/demos/slider/#range
http://www.noupe.com/javascript/30-javascriptajax-techniques-for-sliders-scrollers-and-scrollbars.html

I also started a forum entry about it:
http://forums.oracle.com/forums/thread.jspa?threadID=2187679&tstart=0

I will let you know if I here anything about it.
APEX-AT-WORK no image

Es sind die kleinen Dinge, die APEX 4 so viel besser machen

Von Tobias Arnhold → 3.07.2011
Ich habe heute eine Frage im APEX Forum beantwortet. Diese recht trivial klingt, aber in der Konstellation doch recht anspruchsvoll wurde.

Ausgangslage:
Ein Entwickler hat zwei Textfelder: P1_FIELD_A, P1_FIELD_B und beide Felder sind im DATE-Format.
Wenn er das Feld P1_FIELD_A verlässt, dann soll das Feld P1_FIELD_B den Wert von P1_FIELD_A erhalten und diesen Wert automatisch um 1 Jahr erhöhen.

Wie gesagt es klingt recht einfach, sofern Sie PL/SQL verwenden dürfen und APEX 4.0 im Einsatz haben!

Kreieren Sie eine Dynamic Action > "Erweitert" > Event: "Lose Focus" > Item: P1_FIELD_A

TRUE Action: "Set Value" > Set Type: "PL/SQL Expression" >
Code: to_char(add_months(to_date(:P1_FIELD_A,'DD.MM.YYYY'),12),'dd.mm.yyyy')
Page Items to Submit: P1_FIELD_A

Affected Elements: Items > Item: P1_FIELD_B

Mit APEX 3 sah das noch ganz anders aus!
Statt einfach auf eine PL/SQL Funktion zugreifen zu können, musste diese über Javascript als Application Prozess eingebunden werden. Statt 5 Klicks brauchten Sie 20 Zeilen Code der an verschiedenen Stellen lag.
Ich habe die Aufgabe versucht mit Javascript zu lösen. Verdammt unschön und aufwendig so ganz ohne PL/SQL:

Dazu müssen Sie dem Element P1_FIELD_A folgenden Code unter "HTML Form Element Attributes" zuweisen:

onblur="javascript:fnc_field_b(this)"

Und im Page Header folgte dieser JS Code:

<script>
function fnc_field_b(v_field_a){
/* Input: mm/dd/yyyy */
/* Output: dd.mm.yyyy */
/* Documentation: http://www.javascriptkata.com/2007/04/27/mastering-of-the-date-object-in-javascript/ */
/* http://programming.top54u.com/post/Javascript-Convert-String-to-Date.aspx */

/* Create date object */
var myDate = new Date(v_field_a.value);

/* Add 1 year */
myDate.setDate(myDate.getDate() + 365);

/* Create output string DD.MM.YYYY */
/* Day */
var myStr = (myDate.getDate() < 10 ? "0" + myDate.getDate().toString() : myDate.getDate().toString()) + ".";
/* Month */
myStr = myStr + (myDate.getMonth()+1 < 10 ? "0" + (myDate.getMonth()+1).toString() : (myDate.getMonth()+1).toString()) + ".";
/* Year */
myStr = myStr + myDate.getFullYear().toString();

/* Set value */
$s('P1_FIELD_B',myStr);
}

Dabei ist dieser Code noch nicht einmal inhaltlich vollständig. Javascript kann nur das Format mm/dd/yyyy direkt in Date umwandeln.
Ok und diese:
* MM-dd-yyyy
* yyyy/MM/dd
* MM/dd/yyyy
* MMMM dd, yyyy
* MMM dd, yyyy
Unser beliebtes dd.mm.yyyy ist nicht dabei. Also müsste man dieses via ein paar ausgefeilten String-Funktionen noch umwandeln und unter Umständen noch eine Regular Expressions zum Fehlerhandling hinzufügen.
Javascript unterstützt auch nicht die to_char-Funktion. Weshalb ein recht komplexer Script zu umwandeln benötigt wird. Das Gute an JS ist, dass es unzählige Beispiele im Netz gibt.
Weshalb dieser Part recht einfach zu lösen war (http://www.javascriptkata.com/2007/04/27/mastering-of-the-date-object-in-javascript/).

Nur zur Info: Die meisten anderen Web-Entwickler haben kennen keine Dynamic Action Logik bzw. kennen kein PL/SQL.

Das zeigt nur im kleinem Beispiel warum die Entwicklung von APEX Anwendungen so schnell geht.
Ich vergleiche das immer mit Oracle Forms und Oracle Java Alternativen dazu. Wieso tief in den Programmierschichten graben wenn das Leben doch so leicht sein kann. :)

Den Forum Beitrag finden Sie hier: http://forums.oracle.com/forums/thread.jspa?threadID=2186734&tstart=0

Hide Interactive Report filter dynamically after page load

Von Tobias Arnhold → 2.28.2011
To hide IRR filters always after the page load just use this little JS code inside a dynamic action (event: "Page Load")

/* Hide IRR filter after page load*/
if( $('#apexir_CONTROLS_IMAGE').attr("src") == '/i/minus.gif') {
gReport.toggle_controls($x('apexir_CONTROL_PANEL_CONTROL'));
}

Result:

Interactive Report Header problem with multiple lines

Von Tobias Arnhold →
There is a bug/misbehavior inside the IRR column headers in APEX 4. When you create column names with linebreaks (using the <br> tag) inside then the background color changes to a grey background on the second line.
Workaround: Add this script to your IR region header:
<style>
/* IRR Header Fix */
.apexir_WORKSHEET_DATA th{background-color:#828282!important;}
</style>


Bug view:

Fixed view:


There is a forum entry as well: http://forums.oracle.com/forums/thread.jspa?threadID=1981024
APEX-AT-WORK no image

ORA-20503 im APEX Application Builder

Von Tobias Arnhold → 2.25.2011
Falls Sie auf den Fehler ORA-20503 während der Arbeit im APEX Application Builder treffen, dann wird ihnen dieser Blogeintrag hoffentlich viel Ärger ersparen.

Beispielfälle:

ORA-20503: Die aktuelle Version der Daten in der Datenbank wurde geändert, seit der Benutzer einen Updateprozess eingeleitet hat. Aktuelle Prüfsumme (Checksum) = "CE59A26EB14199C787195DCC947CFC04" Anwendungs-Prüfsumme (Checksum) = "8D8F85130213A161B73628D3D0B3F56E" Zeile der Tabelle WWV_FLOW_FEEDBACK konnte nicht verarbeitet werden.



ORA-20503: Die aktuelle Version der Daten in der Datenbank wurde geändert, seit der Benutzer einen Updateprozess eingeleitet hat. Aktuelle Prüfsumme (Checksum) = "076BC396EB2BA9DEF778E5B684CFA2B5" Anwendungs-Prüfsumme (Checksum) = "3EF59F3E445142B8A971E94C9FFABB59" Fehler beim Verarbeiten von Zeile.

Wahrscheinlich haben Sie mehrere Sprachen in ihrer APEX Umgebung installiert. Beispielsweise: Englisch, Deutsch.

Nun gibt es in APEX 4.0 das Phänomen, dass während der Laufzeit sich die Sprache im Application Builder von Englisch auf Deutsch einfach ändert,
obwohl unter "Home" Englisch als Sprache eingestellt ist.
Der Grund des Problems liegt wohl an ihrer eingestellten "Browser Language", die für gewöhnlich auf Deutsch eingestellt ist.

In diesem Zusammenhang kommt der ORA-20503 Fehler zustande. Ich denke das dies ein Bug in der aktuellen Version ist.
Es ist recht einfach diesen Fehler zu beheben:
- Melden Sie sich am APEX Application Builder an.
- Unter "Home" Startseite (1000) können Sie am rechten Seitenrand die Sprache einstellen "Language"
- Stellen Sie die Sprache auf "Deutsch" um
- Gehen Sie in das Item (bzw. in den fehlerhaften Bereich) und speichern Sie dieses erneut ab.
- Es sollte alles funktionieren!
- Alternativ können Sie auch jederzeit mit einem alternativen Browser die Daten abspeichern, der Fehler bleibt aber in ihrem Standardbrowser existent.

Bei mir trat dieser Fehler bisher nur im Firefox auf. Ich entwickle allerdings auch nur ausschließlich in diesem. :)

Ich hoffe die Sprachsteuerung wird in APEX 4.1 etwas verbessert, so dass weder der ORA-20503 auftritt noch sich einfach die Umgebungssprache ändert.

In den folgenden Forum Beiträgen finden Sie weitere Informationen zum Fehler:
http://forums.oracle.com/forums/thread.jspa?messageID=9299655
http://forums.oracle.com/forums/thread.jspa?messageID=9368275
APEX-AT-WORK no image

Clear the page cache with PL/SQL

Von Tobias Arnhold → 2.24.2011
I just stumbled into a problem where I needed to clear the page cache inside an APEX PL/SQL process.

It is quite easy if you know how:

APEX_UTIL.CLEAR_PAGE_CACHE (160);

-- APEX_UTIL.CLEAR_PAGE_CACHE (
-- p_page IN NUMBER DEFAULT NULL);
-- Description: This procedure removes session state for a given page for the current session.


There are two other similar functions:
CLEAR_APP_CACHE, CLEAR_USER_CACHE

For more information watch the documentation for APEX_UTIL:
http://download.oracle.com/docs/cd/E10513_01/doc/apirefs.310/e12855/apex_util.htm#BABCIAFJ