<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6481483192141562388</id><updated>2012-01-30T21:01:12.611+01:00</updated><category term='Personal stuff'/><category term='MySQL'/><category term='Sparkline'/><category term='AaW - DBMON'/><category term='Logbuch - Die Plugin App'/><category term='APEX examples'/><category term='Data mapping'/><category term='AJAX'/><category term='jQuery Mobile'/><category term='TREE'/><category term='RMAN'/><category term='DOAG'/><category term='OracleXE'/><category term='Dynamic Actions'/><category term='DE'/><category term='ORA-'/><category term='APEX Kurs'/><category term='APEX issues'/><category term='Linux'/><category term='SQL Developer'/><category term='DBMS_SCHEDULER'/><category term='UILayout'/><category term='Tools'/><category term='Tooltip'/><category term='IE issues'/><category term='APEX Plugin'/><category term='OHS'/><category term='EXTJS'/><category term='Browser issues'/><category term='Development tools'/><category term='Logbuch'/><title type='text'>APEX-AT-WORK by Tobias Arnhold</title><subtitle type='html'>Solutions and ways to improve your Oracle APEX application</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default?start-index=101&amp;max-results=100'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>155</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1515845176098647616</id><published>2012-01-25T22:33:00.003+01:00</published><updated>2012-01-26T22:48:37.949+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Sparklines für APEX</title><content type='html'>Ich habe in den letzten Tagen meine Plugin-Applikation aktualisiert. Neben den altbewährten Beispielen, findet Ihr nun auch die Integration von Sparklines und eines Image Slider Beispiels.&lt;br /&gt;&lt;br /&gt;Das Image Slider Plugin geht im Zuge meines DOAG Artikels online. Wer schon vorab Interesse am Plugin hegt, kann sich gern bei mir melden.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-OKYjulHM8Nc/TyB0s7ZEU0I/AAAAAAAAAcw/AFhsBXMqH2E/s1600/bsp_slider1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/-OKYjulHM8Nc/TyB0s7ZEU0I/AAAAAAAAAcw/AFhsBXMqH2E/s320/bsp_slider1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Nachtrag 26.01.2012:&lt;/b&gt;&lt;br /&gt;Ich habe den Artikel inhaltlich endlich fertig bekommen und kann nun beruhigt ein paar kleine Feinschliffe vornehmen. Nach 10 Stunden Arbeit, erstellt sich so ein Artikel echt nicht von Selbst. :)&lt;br /&gt;&lt;br /&gt;Das Sparkline Plugin gibt es bei DOAG Regionaltreffen zu haben, bei denen ich die Anwendung "Logbuch - Die Plugin App" präsentiere. Aktuell sind wieder welche im März in Dresden und Mannheim geplant.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Wxza5Okc_TY/TyB0ru4h6iI/AAAAAAAAAco/HqwctSic6j0/s1600/bsp_sparklines.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" src="http://1.bp.blogspot.com/-Wxza5Okc_TY/TyB0ru4h6iI/AAAAAAAAAco/HqwctSic6j0/s320/bsp_sparklines.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Hier ist der Link zur Anwendung: &lt;a href="http://apex.oracle.com/pls/apex/f?p=65560:1" target="_blank"&gt;http://apex.oracle.com/pls/apex/f?p=65560:1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1515845176098647616?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1515845176098647616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1515845176098647616&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1515845176098647616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1515845176098647616'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2012/01/sparklines-fur-apex.html' title='Sparklines für APEX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-OKYjulHM8Nc/TyB0s7ZEU0I/AAAAAAAAAcw/AFhsBXMqH2E/s72-c/bsp_slider1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1818990788436838716</id><published>2012-01-22T23:50:00.000+01:00</published><updated>2012-01-25T22:34:03.691+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Next image plug-in?</title><content type='html'>After I created the source for the image slider plug-in. I think I can use it for any slider/gallery technique I like.&lt;br /&gt;&lt;br /&gt;Now I'm thinking which jQuery image solution could be the next APEX plug-in?&lt;br /&gt;What do you think? Or do you even have a better idea? &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.twospy.com/galleriffic/example-2.html"&gt;http://www.twospy.com/galleriffic/example-2.html&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/galleriffic-gallery-jquery-image-slideshow-tools-free.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/galleriffic-gallery-jquery-image-slideshow-tools-free.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://coffeescripter.com/code/ad-gallery/"&gt;http://coffeescripter.com/code/ad-gallery/&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/ad-gallery-jquery-image-slideshow-tools-free.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/ad-gallery-jquery-image-slideshow-tools-free.jpg" width="400" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://css-tricks.com/examples/MovingBoxes/"&gt;http://css-tricks.com/examples/MovingBoxes/&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/moving-boxes-gallery-jquery-image-slideshow-tools-free.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/moving-boxes-gallery-jquery-image-slideshow-tools-free.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://css-tricks.com/examples/FeaturedContentSlider/"&gt;http://css-tricks.com/examples/FeaturedContentSlider/&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/featured-slider-jquery-image-slideshow-tools-free.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="196" src="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/01/jquery-gallery-solutions/featured-slider-jquery-image-slideshow-tools-free.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1818990788436838716?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1818990788436838716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1818990788436838716&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1818990788436838716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1818990788436838716'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2012/01/next-image-plug-in.html' title='Next image plug-in?'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8691128154919469489</id><published>2012-01-22T23:12:00.002+01:00</published><updated>2012-01-26T23:32:56.973+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Slider plug-in with images from table</title><content type='html'>I added a new example for the slider plug-in:&lt;br /&gt;&lt;a href="http://apex.oracle.com/pls/apex/f?p=65560:12"&gt;http://apex.oracle.com/pls/apex/f?p=65560:12&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-PkJ8M7wBL80/TxyGkDLSU9I/AAAAAAAAAcg/yYfZyjs6Fj8/s1600/slider_beispiel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://2.bp.blogspot.com/-PkJ8M7wBL80/TxyGkDLSU9I/AAAAAAAAAcg/yYfZyjs6Fj8/s320/slider_beispiel.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In the new example I show the slider selecting the image from a table column.&lt;br /&gt;This is the select I use:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;select&lt;br /&gt;IMG_ID as id,&lt;br /&gt;'#OWNER#.aaw_img_display?p_img_id=' || to_char(IMG_ID) as img,&lt;br /&gt;IMG_FILENAME as text,&lt;br /&gt;IMG_DESCRIPTION as description,&lt;br /&gt;'bottom' as position&lt;br /&gt;from AAW_IMAGES&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I also show how the dynamic action refresh looks like if you swith the value inside the select list.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Instructions about the table solution&lt;/b&gt;&lt;br /&gt;Denes Kubiceks Example: &lt;a href="http://apex.oracle.com/pls/otn/f?p=31517:64" target="_blank"&gt;http://apex.oracle.com/pls/otn/f?p=31517:64 &lt;/a&gt;&lt;br /&gt;Hil&amp;amp;Co: &lt;a href="http://blog.hilandco.com/2010/05/how-to-show-blob-type-column-as-image.html"&gt;http://blog.hilandco.com/2010/05/how-to-show-blob-type-column-as-image.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the DDL code I used:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;CREATE SEQUENCE   "AAW_IMG_SEQ"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE  NOORDER  NOCYCLE ;&lt;br /&gt;/&lt;br /&gt;CREATE TABLE  "AAW_IMAGES" &lt;br /&gt;   ( "IMG_ID" NUMBER NOT NULL ENABLE, &lt;br /&gt; "IMG_FILENAME" VARCHAR2(100), &lt;br /&gt; "IMG_DESCRIPTION" VARCHAR2(500), &lt;br /&gt; "IMG_MIMETYPE" VARCHAR2(100), &lt;br /&gt; "IMG_FILE" BLOB NOT NULL ENABLE, &lt;br /&gt; "IMG_TIME_STAMP" DATE NOT NULL ENABLE, &lt;br /&gt; "IMG_UPD_USER" VARCHAR2(50) NOT NULL ENABLE, &lt;br /&gt; "IMG_CHARACTER_SET" VARCHAR2(100), &lt;br /&gt; "IMG_BLOB_TIME_STAMP" DATE, &lt;br /&gt; "IMG_CLASS" VARCHAR2(100), &lt;br /&gt; "IMG_TEXT" VARCHAR2(500), &lt;br /&gt;  CONSTRAINT "PK_IMG_ID" PRIMARY KEY ("IMG_ID") ENABLE&lt;br /&gt;   ) ;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE TRIGGER  "AAW_IMG_TRG" &lt;br /&gt;   BEFORE INSERT OR UPDATE&lt;br /&gt;   ON AAW_IMAGES&lt;br /&gt;   REFERENCING NEW AS NEW OLD AS OLD&lt;br /&gt;   FOR EACH ROW&lt;br /&gt;DECLARE&lt;br /&gt;BEGIN&lt;br /&gt;   IF :NEW.IMG_ID IS NULL&lt;br /&gt;   THEN&lt;br /&gt;      SELECT AAW_IMG_SEQ.NEXTVAL&lt;br /&gt;        INTO :NEW.IMG_ID&lt;br /&gt;        FROM DUAL;&lt;br /&gt;   END IF;&lt;br /&gt;   IF INSERTING&lt;br /&gt;   THEN&lt;br /&gt;      :NEW.IMG_TIME_STAMP := SYSDATE;&lt;br /&gt;      :NEW.IMG_UPD_USER := NVL (v('APP_USER'), USER);&lt;br /&gt;   END IF;&lt;br /&gt;   IF UPDATING&lt;br /&gt;   THEN&lt;br /&gt;      :NEW.IMG_TIME_STAMP := SYSDATE;&lt;br /&gt;      :NEW.IMG_UPD_USER := NVL (v('APP_USER'), USER);&lt;br /&gt;   END IF;&lt;br /&gt;EXCEPTION&lt;br /&gt;   WHEN OTHERS&lt;br /&gt;   THEN&lt;br /&gt;      raise_application_error (-20101,&lt;br /&gt;                               'Error Trigger LOG_FIL_TRG: ' || SQLERRM&lt;br /&gt;                              );&lt;br /&gt;END AAW_IMG_TRG;&lt;br /&gt;/&lt;br /&gt;ALTER TRIGGER  "AAW_IMG_TRG" ENABLE;&lt;br /&gt;/&lt;br /&gt;create or replace PROCEDURE aaw_img_display( p_img_id IN NUMBER)&lt;br /&gt;AS&lt;br /&gt;     &lt;br /&gt; l_mime        VARCHAR2 (255);&lt;br /&gt;   l_length      NUMBER;&lt;br /&gt;   l_file_name   VARCHAR2 (2000);&lt;br /&gt;   lob_loc       BLOB;&lt;br /&gt;BEGIN&lt;br /&gt; &lt;br /&gt;         SELECT IMG_MIMETYPE, IMG_FILE, DBMS_LOB.getlength (IMG_FILE)&lt;br /&gt;         INTO l_mime, lob_loc, l_length&lt;br /&gt;         FROM aaw_images&lt;br /&gt;         WHERE img_id = p_img_id;   &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;   OWA_UTIL.mime_header (NVL (l_mime, 'application/octet'), FALSE);&lt;br /&gt;   HTP.p ('Content-length: ' || l_length);&lt;br /&gt;   OWA_UTIL.http_header_close;&lt;br /&gt;   WPG_DOCLOAD.download_file (lob_loc);&lt;br /&gt;    &lt;br /&gt;END aaw_img_display;&lt;br /&gt;/&lt;br /&gt;GRANT EXECUTE ON aaw_img_display TO PUBLIC;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;About the images: &lt;a href="http://www.freedigitalphotos.net/"&gt;http://www.freedigitalphotos.net&lt;/a&gt;&lt;br /&gt;I used them from prozac1, Ron Bird, Jennifer Ellison, xedos4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8691128154919469489?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8691128154919469489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8691128154919469489&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8691128154919469489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8691128154919469489'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2012/01/slider-plug-in-with-images-from-table.html' title='Slider plug-in with images from table'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-PkJ8M7wBL80/TxyGkDLSU9I/AAAAAAAAAcg/yYfZyjs6Fj8/s72-c/slider_beispiel.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5968407952350011497</id><published>2012-01-11T22:49:00.002+01:00</published><updated>2012-01-11T22:49:40.300+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Browser issues'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Image Slider Plugin</title><content type='html'>I'm currently working on a new plug-in based on the jQuery Plug-in &lt;a href="http://www.serie3.info/s3slider/demonstration.html" target="_blank"&gt;S3Slider&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;At the moment the plug-in is still under development: &lt;br /&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=65560:12"&gt;http://apex.oracle.com/pls/otn/f?p=65560:12&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It will be a region plug-in where you only set the selection and the options and it will create the nice slider solution on your APEX page. As template I use the &lt;a href="http://www.apex-plugin.com/oracle-apex-plugins/region-plugin/label-cloud-plugin_72.html" target="_blank"&gt;cloud plug-in&lt;/a&gt; from &lt;a href="http://sql-plsql-de.blogspot.com/" target="_blank"&gt;Carsten Czarski&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The plug-in will be used as an example for a magazine article I will write in the next days.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;About the hyphenation plug-in:&lt;/b&gt;&lt;br /&gt;A while ago I published a hyphenation plug-in for APEX which currently doesn't work. I'm still trying to solve this issue but can't fix it alone. Hope the original developer will take a look on it again.&lt;br /&gt;Call: &lt;a href="http://code.google.com/p/hyphenator/issues/detail?id=146"&gt;http://code.google.com/p/hyphenator/issues/detail?id=146&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tobias&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5968407952350011497?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5968407952350011497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5968407952350011497&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5968407952350011497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5968407952350011497'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2012/01/image-slider-plugin.html' title='Image Slider Plugin'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-9036967898133620141</id><published>2012-01-03T23:14:00.002+01:00</published><updated>2012-01-25T22:34:16.046+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>jExpand example</title><content type='html'>Another simple example to show how the jExpand report looks inside APEX:&lt;br /&gt;&lt;a href="http://apex.oracle.com/pls/apex/f?p=66002:1" target="_blank"&gt;http://apex.oracle.com/pls/apex/f?p=66002:1&lt;/a&gt;&lt;br /&gt;/* ------------------------------------------------------------------------------------------------------------------------------------ */&lt;br /&gt;Noch eine weitere kleine APEX Applikation, die die Nutzung des jQuery jExpand Reports zeigt: &lt;a href="http://apex.oracle.com/pls/apex/f?p=66002:1" target="_blank"&gt;http://apex.oracle.com/pls/apex/f?p=66002:1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bild:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Pg936_Cr1WA/TwN9V5aZ3vI/AAAAAAAAAcU/I1rRm6Iaei8/s1600/jExpand.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://4.bp.blogspot.com/-Pg936_Cr1WA/TwN9V5aZ3vI/AAAAAAAAAcU/I1rRm6Iaei8/s400/jExpand.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-9036967898133620141?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/9036967898133620141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=9036967898133620141&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9036967898133620141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9036967898133620141'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2012/01/jexpand-beispiel.html' title='jExpand example'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Pg936_Cr1WA/TwN9V5aZ3vI/AAAAAAAAAcU/I1rRm6Iaei8/s72-c/jExpand.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3303082931420186432</id><published>2012-01-03T22:46:00.001+01:00</published><updated>2012-01-25T22:34:25.422+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Navigation examples</title><content type='html'>After cleaning up my old APEX applications I found a nice example application about navigation solutions inside APEX. Have a look here: &lt;a href="http://apex.oracle.com/pls/apex/f?p=66001:1" target="_blank"&gt;http://apex.oracle.com/pls/apex/f?p=66001:1&lt;/a&gt;&lt;br /&gt;/* ------------------------------------------------------------------------------------------------------------------------------------ */&lt;br /&gt;Beim aufräumen von meinen alten APEX Applikationen, fand ich eine nette Beispielapplikation zum Thema "Navigation". Eine einfache APEX Anwendung, die die verschiedenen Techniken zur Navigation in APEX aufzeigt. Link zur Anwendung: &lt;a href="http://apex.oracle.com/pls/apex/f?p=66001:1"&gt;http://apex.oracle.com/pls/apex/f?p=66001:1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bild:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QwYrJcLQHSs/TwN1p6iG-hI/AAAAAAAAAb8/Jbi3r60yIrY/s1600/Beispiel_Navigation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-QwYrJcLQHSs/TwN1p6iG-hI/AAAAAAAAAb8/Jbi3r60yIrY/s640/Beispiel_Navigation.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Update: 04.01.2012:&lt;br /&gt;Die Anwendung wurde inhaltlich etwas überarbeitet. Ich habe auch zwei neue Beispiele integriert.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3303082931420186432?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3303082931420186432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3303082931420186432&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3303082931420186432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3303082931420186432'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2012/01/navigation-examples.html' title='Navigation examples'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-QwYrJcLQHSs/TwN1p6iG-hI/AAAAAAAAAb8/Jbi3r60yIrY/s72-c/Beispiel_Navigation.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8370418102582595553</id><published>2011-12-31T15:23:00.000+01:00</published><updated>2011-12-31T15:24:55.504+01:00</updated><title type='text'>Vorsätze fürs neue Jahr</title><content type='html'>Neben den zahlreichen Softwareprojekten, werde ich mich auch weiterhin mit neuen Spezialgebieten auseinandersetzen.&lt;br /&gt;&lt;br /&gt;Ganz oben auf der Liste steht die Integration von &lt;b&gt;mobilen APEX Applikationen&lt;/b&gt;. Details zum Vorhaben findet ihr hier: &lt;a href="http://www.apex-at-work.blogspot.com/2011/12/mobile-apex-applikationen-mit-jquery.html"&gt;http://www.apex-at-work.blogspot.com/2011/12/mobile-apex-applikationen-mit-jquery.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Außerdem habe ich vor &lt;b&gt;die Plugin App&lt;/b&gt; zu erweitern. Durch eine entsprechende Berechtigungsverwaltung wird der Zugriff individuell einstellbar sein. Das Ganze wird natürlich durch neue Plugins unterstützt.&lt;br /&gt;&lt;br /&gt;Als Letztes, will ich mich mit der &lt;b&gt;&lt;a href="http://raphaeljs.com/" target="_blank"&gt;raphaeljs&lt;/a&gt; Library &lt;/b&gt;auseinandersetzen. Ziel ist es, eine ähnliche Methode wie &lt;a href="http://blog.theapexfreelancer.com/2011/08/apex-plugin-body-chart/" target="_blank"&gt;Matt Nolan&lt;/a&gt; zu entwickeln, um in APEX Applikationen die visuelle Bearbeitung noch besser abbilden zu können.&lt;br /&gt;&lt;br /&gt;Ps.: Wie ihr sicher gesehen habt, habe ich noch etwas an dem Feinschliff meines Blogs gearbeitet. Ich hoffe das neue Design mit geänderten Inhalten kommt gut an. :)&lt;br /&gt;&lt;br /&gt;Das wärs für dieses Jahr. Guten Rutsch euch allen!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8370418102582595553?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8370418102582595553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8370418102582595553&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8370418102582595553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8370418102582595553'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/12/vorsatze-furs-neue-jahr.html' title='Vorsätze fürs neue Jahr'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-9198336039926249300</id><published>2011-12-21T00:58:00.003+01:00</published><updated>2011-12-21T00:58:32.866+01:00</updated><title type='text'>Kurze Info</title><content type='html'>&lt;b&gt;Blog Update&lt;/b&gt;&lt;br /&gt;Wie ihr sicher schon gesehen habt, habe ich mein Blog Layout überarbeitet. Ziel war es, die Inhalte besser darzustellen und unnötigen Ballast über Bord zuwerfen. Außerdem habe ich den Fokus jetzt mehr auf die deutschsprachige APEX Community gesetzt.&lt;br /&gt;Nur keine Angst, ich werde natürlich auch weiterhin ab und an Posts in Englisch erstellen.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;APEX Community Beitrag&lt;/b&gt;&lt;br /&gt;Die Plugin App hat einen netten Beitrag auf der APEX Community Seite erhalten:&lt;br /&gt;&lt;a href="http://www.oracle.com/webfolder/technetwork/de/community/apex/index.html"&gt;http://www.oracle.com/webfolder/technetwork/de/community/apex/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Präsentationen zum Thema Plugins&lt;/b&gt;&lt;br /&gt;Im März werde ich aller Voraussicht nach, jeweils in Dresden und in Mannheim einen Vortrag über die Plugin App halten. Ich hoffe die DOAG Regionalveranstaltungen werden wieder gut besucht sein. :) Wie immer gibt es einen kostenlosen Zugang zum Download der Anwendung.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Weihnachten&lt;/b&gt;&lt;br /&gt;Zum Schluss, wünsche ich allen ein besinnliches Weihnachtsfest und einen guten Rutsch ins neue Jahr!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-9198336039926249300?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/9198336039926249300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=9198336039926249300&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9198336039926249300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9198336039926249300'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/12/kurze-info.html' title='Kurze Info'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3810984295950158681</id><published>2011-12-06T21:48:00.001+01:00</published><updated>2011-12-18T20:26:17.018+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Mobile APEX Applikationen mit jQuery Mobile - Wichtige Links</title><content type='html'>Ich habe vor die Plugin App mit einer entsprechenden mobilen Version zu erweitern. Dazu benötige ich allerhand Hintergrundwissen und das trage ich in dem Blogpost hier zusammen. Starten tue ich mit den wichtigsten Links zur mobilen APEX Entwicklung.&lt;b&gt; &lt;/b&gt;Weitere Details werden folgen...&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Links zur Entwicklung von mobilen APEX Anwendungen mit jQuery Mobile &lt;/b&gt;&lt;br /&gt;M. Sewtz - &lt;a href="http://marcsewtz.blogspot.com/2011/11/getting-started-with-mobile-in-apex.html" target="_blank"&gt;Getting Started with Mobile in APEX - Part 1&amp;nbsp;&lt;/a&gt;&lt;br /&gt;M. Sewtz - &lt;a href="http://marcsewtz.blogspot.com/2011/11/getting-started-with-mobile-in-apex_17.html" target="_blank"&gt;Getting Started with Mobile in APEX - Part 2 &lt;/a&gt;&lt;br /&gt;APEX Community (P. Raganitsch) - &lt;a href="http://www.oracle.com/webfolder/technetwork/de/community/apex/tipps/peter-raganitsch-mobile/index.html" target="_blank"&gt;Oracle APEX für mobile Endgeräte&lt;/a&gt;&lt;br /&gt;T. Harsono - &lt;a href="http://www.youtube.com/watch?v=5rfuq-e-_Ws" target="_blank"&gt;Oracle APEX 4.1 on Android Phone (Youtube Video)&lt;/a&gt;&lt;br /&gt;B. Spendolini - &lt;a href="http://www.itworkedyesterday.com/blog/2011/11/15/a-few-thoughts-on-mobile-development.html" target="_blank"&gt;a few thoughts on mobile development....&lt;/a&gt;&lt;br /&gt;B. Spendolini - &lt;a href="http://btspendo.squarespace.com/storage/pdfs/MobileApex1.pdf" target="_blank"&gt;Build your first mobile app with APEX Presentation.&lt;/a&gt;&lt;br /&gt;All Things Oracle - &lt;a href="http://www.allthingsoracle.com/oracle-apex-on-your-smartphone/" target="_blank"&gt;Oracle APEX on your Smartphone&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;APEX Beispielapplikationen:&lt;/b&gt;&lt;br /&gt;Sujay - &lt;a href="http://www.philadelphiacricketleague.com/pls/htmldb/f?p=668:300" target="_blank"&gt;Businessbeispiele&lt;/a&gt;&lt;br /&gt;M. Sewtz -  &lt;a href="http://apex.oracle.com/pls/apex/f?p=59765:1" target="_blank"&gt;Simple Beispielanwendung&lt;/a&gt;&lt;br /&gt;P. Raganitsch -  &lt;a href="http://www.click-apex.at/apex/f?p=25425004:1" target="_blank"&gt;Komplexere Beispielanwendung&lt;/a&gt;&lt;br /&gt;Jaydip Bosamiya - &lt;a href="http://apex.oracle.com/pls/apex/f?p=43053:111"&gt;Komplexere Beispielanwendung&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Generelle Links:&lt;/b&gt;&lt;br /&gt;jQuery Mobile - &lt;a href="http://jquerymobile.com/" target="_blank"&gt;Offizielle Homepage&lt;/a&gt;&lt;br /&gt;Miami Coder - &lt;a href="http://miamicoder.com/2011/interesting-jquery-mobile-tutorials/" target="_blank"&gt;Interesting jQuery Mobile Tutorials&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3810984295950158681?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3810984295950158681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3810984295950158681&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3810984295950158681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3810984295950158681'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/12/mobile-apex-applikationen-mit-jquery.html' title='Mobile APEX Applikationen mit jQuery Mobile - Wichtige Links'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7618006806543921097</id><published>2011-12-05T19:30:00.000+01:00</published><updated>2011-12-05T19:43:11.972+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Advanced ways using the Authorization Schemes inside APEX</title><content type='html'>The standard way to check the authorization is to select the correct scheme inside the security area:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-o1q1-FUsRSw/TtxyKsFAMOI/AAAAAAAAAYc/S_i_o65UH_o/s1600/auth_scheme.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="64" src="http://3.bp.blogspot.com/-o1q1-FUsRSw/TtxyKsFAMOI/AAAAAAAAAYc/S_i_o65UH_o/s320/auth_scheme.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;What are authorization schemes and how do you create them?&lt;br /&gt;&lt;a href="http://docs.oracle.com/cd/E17556_01/doc/user.40/e15517/sec.htm#BABEDFGB"&gt;http://docs.oracle.com/cd/E17556_01/doc/user.40/e15517/sec.htm#BABEDFGB&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apps2fusion.com/at/64-kr/399-security-using-authorization-in-apex"&gt;http://apps2fusion.com/at/64-kr/399-security-using-authorization-in-apex&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are a couple of hidden ways to check the authorization schemes differently to the standard way.&lt;br /&gt;&lt;br /&gt;To check more then one authorization scheme with pl/sql use this hint from Denes Kubicek:&lt;br /&gt;&lt;a href="http://deneskubicek.blogspot.com/2009/05/checking-authorization-scheme-within.html"&gt;http://deneskubicek.blogspot.com/2009/05/checking-authorization-scheme-within.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To check authorization schemes inside SQL follow this solution:&lt;br /&gt;&lt;a href="http://www.oracle.com/webfolder/technetwork/de/community/apex/tipps/repo-2/index.html"&gt;http://www.oracle.com/webfolder/technetwork/de/community/apex/tipps/repo-2/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For those who do not understand German. Just create a simple function which let you use the authorization scheme function inside a sql statement:&lt;br /&gt;&lt;pre class="htmldb_community_code"&gt;&lt;span style="color: #804040;"&gt;&lt;b&gt;create&lt;/b&gt;&lt;/span&gt; &lt;span style="color: #804040;"&gt;&lt;b&gt;or&lt;/b&gt;&lt;/span&gt; replace &lt;span style="color: slateblue;"&gt;function&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="htmldb_community_code"&gt; my_check_auth(p_security_scheme &lt;span style="color: #804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;varchar2&lt;/b&gt;&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="htmldb_community_code"&gt; &lt;span style="color: slateblue;"&gt;return&lt;/span&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;number&lt;/b&gt;&lt;/span&gt; &lt;span style="color: slateblue;"&gt;is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: slateblue;"&gt;begin&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: slateblue;"&gt;if&lt;/span&gt; apex_util.public_check_authorization(p_security_scheme)&amp;nbsp;&lt;/pre&gt;&lt;pre class="htmldb_community_code"&gt;&lt;span style="color: slateblue;"&gt;  then&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: slateblue;"&gt;return&lt;/span&gt; &lt;span style="color: magenta;"&gt;1&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: slateblue;"&gt;else&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: slateblue;"&gt;return&lt;/span&gt; &lt;span style="color: magenta;"&gt;0&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: slateblue;"&gt;end&lt;/span&gt; &lt;span style="color: slateblue;"&gt;if&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: slateblue;"&gt;end&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="htmldb_community_code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="htmldb_community_code"&gt;&lt;/pre&gt;&lt;pre class="htmldb_community_code"&gt;&lt;span style="color: #804040;"&gt;&lt;b&gt;select&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;  'VALID_USER' as return_val&lt;br /&gt;&lt;span style="color: slateblue;"&gt;from&lt;/span&gt; my_table&lt;br /&gt;&lt;span style="color: slateblue;"&gt;where&lt;/span&gt; col1 = 'NEW'&lt;br /&gt;&lt;span style="color: #804040;"&gt;&lt;b&gt;and&lt;/b&gt;&lt;/span&gt; (my_check_auth('AUTH_VALID_USER') = 1 &lt;span style="color: #804040;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="htmldb_community_code"&gt;&lt;span style="color: #804040;"&gt;&lt;b&gt;     or&lt;/b&gt;&lt;/span&gt; my_check_auth('AUTH_NEW_USER')&lt;br /&gt;     )&lt;span style="color: slateblue;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7618006806543921097?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7618006806543921097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7618006806543921097&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7618006806543921097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7618006806543921097'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/12/advanced-ways-using-authorization.html' title='Advanced ways using the Authorization Schemes inside APEX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-o1q1-FUsRSw/TtxyKsFAMOI/AAAAAAAAAYc/S_i_o65UH_o/s72-c/auth_scheme.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-4321943113530165976</id><published>2011-12-04T23:06:00.001+01:00</published><updated>2011-12-04T23:17:02.130+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Plug-in Bookmark</title><content type='html'>A couple of days ago I released a new simple plug-in. A dynamic action plug-in which allows you to bookmark the current or any other page by running a generic javascript code which works with most common browsers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The plug-in can be downloaded here: &lt;/b&gt;&lt;br /&gt;&lt;a href="http://apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/bookmark_153.html"&gt;http://apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/bookmark_153.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Example page:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://apex.oracle.com/pls/apex/f?p=65560:9"&gt;http://apex.oracle.com/pls/apex/f?p=65560:9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to use it:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;- set up a new Dynamic Action&lt;br /&gt;&amp;nbsp;- Event: "Page Load"&lt;br /&gt;&amp;nbsp;- Action: Bookmark&lt;br /&gt;&amp;nbsp; - Set up the effected element by using the jQuery logic&lt;br /&gt;&amp;nbsp; &amp;nbsp; - ID: #P1_YOUR_BUTTON&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Class: .my_button&lt;br /&gt;&amp;nbsp; - URL Definition: "Current Page" or "Manually Defined URL"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - If "Manually Defined URL" then set the URL and the name of the new bookmark&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-4321943113530165976?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/4321943113530165976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=4321943113530165976&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4321943113530165976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4321943113530165976'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/12/plug-in-bookmark-released.html' title='Plug-in Bookmark'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-9134227027203101005</id><published>2011-11-30T20:30:00.000+01:00</published><updated>2011-12-06T22:12:35.986+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Freier Community Zugang für Die Plugin App</title><content type='html'>Nachdem die erste Präsentation sehr erfolgreich verlaufen ist und das Feedback sehr positiv war. Möchte ich nun die Anwendung für den Rest der APEX Community zum testen freischalten.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-N4qOcPLf9h4/TtKqrzo9ZEI/AAAAAAAAAYU/kYtcguWEkF0/s1600/logbuch_startseite.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://3.bp.blogspot.com/-N4qOcPLf9h4/TtKqrzo9ZEI/AAAAAAAAAYU/kYtcguWEkF0/s400/logbuch_startseite.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Zugang:&lt;/b&gt; &lt;a href="http://apex.oracle.com/pls/apex/f?p=65600"&gt;http://apex.oracle.com/pls/apex/f?p=65600&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Anmeldung:&lt;/b&gt; demo / demo&lt;br /&gt;&lt;br /&gt;Wer mehr über die Anwendung erfahren möchte kann direkt Kontakt zu mir aufnehmen oder verfolgt einfach die nächsten DOAG Regionaltreffen, ich werde dort noch einige ähnliche Vorträge zum Thema halten.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mir kamen auch schon einige neue Ideen für die nächste Version der Anwendung und werde bald mit der Entwicklung beginnen.&lt;br /&gt;&lt;br /&gt;Falls jemand ein paar Anmerkungen zum Logbuch selbst hat, bin ich gern für Erweiterungswünsche offen. Denn auch die&lt;b&gt; neuen&lt;/b&gt; Plugins müssen ja irgendwo ihren Platz finden. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-9134227027203101005?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/9134227027203101005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=9134227027203101005&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9134227027203101005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9134227027203101005'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/11/erinnerung-logbuch-die-plugin-app.html' title='Freier Community Zugang für Die Plugin App'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-N4qOcPLf9h4/TtKqrzo9ZEI/AAAAAAAAAYU/kYtcguWEkF0/s72-c/logbuch_startseite.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8850976817725341373</id><published>2011-11-27T21:40:00.001+01:00</published><updated>2011-11-27T21:49:59.010+01:00</updated><title type='text'>Simple generic SQL solutions</title><content type='html'>Just saw this nice script to generate INSERT statements by a function call:&lt;br /&gt;&lt;a href="http://www.xinotes.org/notes/note/597/"&gt;PL/SQL code to generate Oracle insert statements from existing table data&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another nice idea was just added by Carsten Czarski. He created a solution to make a drop or truncate more secure:&lt;br /&gt;&lt;a href="http://sql-plsql-de.blogspot.com/2011/11/drop-table-sind-sie-sicher.html"&gt;DROP TABLE .. Sind Sie sicher?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8850976817725341373?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8850976817725341373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8850976817725341373&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8850976817725341373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8850976817725341373'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/11/simple-generic-sql-solutions.html' title='Simple generic SQL solutions'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-9031489115599135524</id><published>2011-11-17T23:30:00.000+01:00</published><updated>2011-11-18T13:20:48.848+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Oracle Select: Compare two comma separated lists for matching words</title><content type='html'>This a simple solution to compare two comma separated lists inside a select where clause:&lt;pre class="sql" name="code"&gt;&lt;br /&gt;/* &lt;br /&gt;Table name: TBL_WITH_COMMA_LIST&lt;br /&gt;Columns:&lt;br /&gt;twc_id; twc_list&lt;br /&gt;1     ; 0815,9999,1212,1222,1111,9988&lt;br /&gt;2     ; 0815,8888,2121,2111,2222,8899&lt;br /&gt;3     ; 0110,9112,1211&lt;br /&gt;&lt;br /&gt;Parameter: :v_list&lt;br /&gt;0815,9988,1111&lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;select tw.twc_id, tw.twc_list, REGEXP_COUNT(tw.twc_list,REPLACE(:v_list,',','|')) ret_val&lt;br /&gt;from TBL_WITH_COMMA_LIST tw&lt;br /&gt;where REGEXP_COUNT(tw.twc_list,&lt;br /&gt;                   REPLACE(:v_list,',','|')&lt;br /&gt;                   ) &gt; 0;&lt;br /&gt;/*&lt;br /&gt;Result:&lt;br /&gt;twc_id; twc_list;                    ; ret_val&lt;br /&gt;1     ; 0815,9999,1212,1222,1111,9988; 3 &lt;br /&gt;2     ; 0815,8888,2121,2111,2222,8899; 1&lt;br /&gt;&lt;br /&gt;Info: v_list can only contain 512 bytes &lt;br /&gt;*/&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-9031489115599135524?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/9031489115599135524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=9031489115599135524&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9031489115599135524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9031489115599135524'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/11/compare-two-comma-separated-lists-for.html' title='Oracle Select: Compare two comma separated lists for matching words'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-698842347581625943</id><published>2011-11-14T19:09:00.001+01:00</published><updated>2011-12-06T22:12:35.979+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>"Die Plugin App" - Live Präsentation + Download Zugang am 29.11.2011</title><content type='html'>Leider kann ich nicht bei der diesjährigen DOAG Konferenz dabei sein. Ich hätte zwar liebend gern die vielen APEX Entwickler wieder getroffen, aber es soll nicht sein. :(&lt;br /&gt;&lt;br /&gt;Das kann nur heißen, nach vorne schauen und die nächsten Projekte in Angriff nehmen.&lt;br /&gt;&lt;br /&gt;Am 29.11.2011 halte ich in Wiesbaden bei dem regionalem DOAG Treffen der Rhein-Main Gruppe die erste DOAG Präsentation über die Plugin Applikation.Das bedeutet, das jeder der kommt die inzwischen auf 30 Plugins angewachsene Applikation sieht und vor allem einen Eindruck erhält, wie aktuelle APEX Plugins eine Anwendung verbessern können.&lt;br /&gt;&lt;br /&gt;Details zum Treffen:&lt;br /&gt;&lt;a href="http://www.doag.org/termine/termine.php?tid=418033#19:00"&gt;http://www.doag.org/termine/termine.php?tid=418033#19:00&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wichtig:&lt;/b&gt; Jeder Teilnehmer erhält einen Online Zugang, über den er sich die Applikation downloaden kann.&lt;br /&gt;&lt;br /&gt;Ich freue mich auf das Treffen und bin gespannt wie viele die Applikation wirklich sehen wollen. :)&lt;br /&gt;&lt;br /&gt;Wer die Plugin App noch nicht kennt, der sollte sich die entsprechenden Blog-Post's nochmal anschauen:&lt;br /&gt;Eigene URLs und Bilder im APEX Report abbilden: &lt;br /&gt;&lt;a href="http://apex-at-work.blogspot.com/2011/10/eigene-urls-im-report-mit-bilder.html"&gt;http://apex-at-work.blogspot.com/2011/10/eigene-urls-im-report-mit-bilder.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Die nächsten Plugins für "Die Pugin App":&lt;br /&gt;&lt;a href="http://apex-at-work.blogspot.com/2011/09/die-nachsten-plugins-fur-die-pugin-app.html"&gt;http://apex-at-work.blogspot.com/2011/09/die-nachsten-plugins-fur-die-pugin-app.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Logbuch mit neuem Plugin:&lt;br /&gt;&lt;a href="http://apex-at-work.blogspot.com/2011/09/logbuch-mit-neuem-plugin.html"&gt;http://apex-at-work.blogspot.com/2011/09/logbuch-mit-neuem-plugin.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Logbuch - Die Plugin App:&lt;br /&gt;&lt;a href="http://apex-at-work.blogspot.com/2011/09/logbuch.html"&gt;http://apex-at-work.blogspot.com/2011/09/logbuch.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-698842347581625943?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/698842347581625943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=698842347581625943&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/698842347581625943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/698842347581625943'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/11/die-plugin-app-live-prasentation.html' title='&quot;Die Plugin App&quot; - Live Präsentation + Download Zugang am 29.11.2011'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7257572673408443515</id><published>2011-11-13T00:00:00.000+01:00</published><updated>2011-11-14T15:12:06.603+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Loading Icon - Upgrade thoughts</title><content type='html'>During my development I was always troubled that the loading icon plug-in worked fine with before page submit events but never worked when you redirected the page immediately.For example if you used code like this:&lt;pre class="js" name="code"&gt;&lt;br /&gt;&amp;lt;a href="f?p=&amp;APP_ID.:3:&amp;SESSION.::NO::P2_EXAMPLE_ID:#EXAMPLE_ID#"&gt;&lt;br /&gt;&amp;lt;img alt="" src="/i/menu/pencil16x16.gif"&gt;&lt;br /&gt;&amp;lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;No loading icon would appear.As a manual solution use this code example:&lt;pre class="js" name="code"&gt;&lt;br /&gt;/* Template: */&lt;br /&gt;&amp;lt;img&lt;br /&gt;&amp;nbsp; src="#IMAGE_PREFIX#magnifying_glass_white_bg.gif" &lt;br /&gt;&amp;nbsp; alt="" &lt;br /&gt;&amp;nbsp; title="Show sample data"&lt;br /&gt;&amp;nbsp; style="cursor:pointer;"&lt;br /&gt;&amp;nbsp; onclick="&lt;br /&gt;&amp;nbsp;&amp;nbsp; fnc_startLoadIcon('...loading...','/i/my_loading_icon.gif',32,32,8,'#F26300',6);&lt;br /&gt;&amp;nbsp;&amp;nbsp; window.location='f?p=&amp;APP_ID.:1:&amp;SESSION.::::P2_EXAMPLE_ID:#EXAMPLE_ID#';&lt;br /&gt;&amp;nbsp;&amp;nbsp; return false;"&gt;&lt;br /&gt;&lt;/pre&gt;I'm thinking to integrate this as an option to the Loading Icon plug-in. I would capture the href element take the href source and transform it so that the loading icon would appear before the page reloads.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7257572673408443515?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7257572673408443515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7257572673408443515&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7257572673408443515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7257572673408443515'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/11/loading-icon-upgrade-thoughts.html' title='Loading Icon - Upgrade thoughts'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7851148577875911567</id><published>2011-11-09T23:30:00.000+01:00</published><updated>2011-11-10T11:16:03.710+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Disable CKEditor 3 (Rich Text Editor) inside APEX</title><content type='html'>If you want to disable the "Richt Text Editor" inside APEX and still show everything in the right HTML format.Just add this code snippet inside the "Page Footer Text":&lt;pre class="js" name="code"&gt;&lt;br /&gt;&amp;lt;script&gt;&lt;br /&gt;/* HowtTo: http://cksource.com/forums/viewtopic.php?t=15659 */&lt;br /&gt;$(document).ready( function() {&lt;br /&gt;( function()&lt;br /&gt;{&lt;br /&gt;   var cancelEvent = function( evt )&lt;br /&gt;      {&lt;br /&gt;         evt.cancel();&lt;br /&gt;      };&lt;br /&gt;&lt;br /&gt;   CKEDITOR.editor.prototype.readOnly = function( isReadOnly )&lt;br /&gt;   {&lt;br /&gt;      /* Turn off contentEditable. */&lt;br /&gt;      this.document.$.body.disabled = isReadOnly;&lt;br /&gt;      CKEDITOR.env.ie ? this.document.$.body.contentEditable = !isReadOnly&lt;br /&gt;      : this.document.$.designMode = isReadOnly ? "off" : "on";&lt;br /&gt;&lt;br /&gt;      /* Prevent key handling. */&lt;br /&gt;      this[ isReadOnly ? 'on' : 'removeListener' ]( 'key', cancelEvent, null, null, 0 );&lt;br /&gt;      this[ isReadOnly ? 'on' : 'removeListener' ]( 'selectionChange', cancelEvent, null, null, 0 );&lt;br /&gt;&lt;br /&gt;      /* Disable all commands in wysiwyg mode. */&lt;br /&gt;      var command,&lt;br /&gt;         commands = this._.commands,&lt;br /&gt;         mode = this.mode;&lt;br /&gt;&lt;br /&gt;      for ( var name in commands )&lt;br /&gt;      {&lt;br /&gt;         command = commands[ name ];&lt;br /&gt;         isReadOnly ? command.disable() : command[ command.modes[ mode ] ? 'enable' : 'disable' ]();&lt;br /&gt;         this[ isReadOnly ? 'on' : 'removeListener' ]( 'state', cancelEvent, null, null, 0 );&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;} )();&lt;br /&gt;setTimeout ('CKEDITOR.instances.&amp;lt;YOUR_APEX_ITEM&gt;.readOnly( true )',1000);&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;The result will look like this:&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-PqgfGKPdBuw/TrukANsYueI/AAAAAAAAAYM/wyEz03EhVjY/s1600/disabled_FCKEDITOR.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="234" width="301" src="http://2.bp.blogspot.com/-PqgfGKPdBuw/TrukANsYueI/AAAAAAAAAYM/wyEz03EhVjY/s400/disabled_FCKEDITOR.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7851148577875911567?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7851148577875911567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7851148577875911567&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7851148577875911567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7851148577875911567'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/11/disable-ckeditor-3-rich-text-editor.html' title='Disable CKEditor 3 (Rich Text Editor) inside APEX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-PqgfGKPdBuw/TrukANsYueI/AAAAAAAAAYM/wyEz03EhVjY/s72-c/disabled_FCKEDITOR.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-4185639225295242446</id><published>2011-10-18T23:07:00.000+02:00</published><updated>2011-12-06T22:12:35.976+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Eigene URLs und Bilder im APEX Report abbilden</title><content type='html'>Wie bereits Gestern erwähnt, bin ich in den letzten Zügen der Entwicklung für die "Plugin App".&lt;br /&gt;&lt;br /&gt;Heute wollte ich aus ein paar hässlichen Buttons ein paar schöne Icons machen.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Ausgangslage&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-CtNykjGTjf0/Tp3mzW6jxLI/AAAAAAAAAXg/rkDnkBdRm_0/s1600/button.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://4.bp.blogspot.com/-CtNykjGTjf0/Tp3mzW6jxLI/AAAAAAAAAXg/rkDnkBdRm_0/s320/button.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&amp;nbsp;Zieldarstellung&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-E-UkGSZPTFE/Tp3oUsQCDOI/AAAAAAAAAXo/GeqlHyuP6iQ/s1600/icons.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="http://2.bp.blogspot.com/-E-UkGSZPTFE/Tp3oUsQCDOI/AAAAAAAAAXo/GeqlHyuP6iQ/s320/icons.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Dazu habe ich mir einen simplen Report erstellt, der mir jeweils meine Icons mit sicheren URLs ausgibt:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;select img from (&lt;br /&gt; select&lt;br /&gt;  1 as ordby,&lt;br /&gt;  '&amp;lt;a href="' ||&lt;br /&gt;  APEX_UTIL.PREPARE_URL('f?p=' ||&lt;br /&gt;                        v('APP_ID') || &lt;br /&gt;                        ':1:' || &lt;br /&gt;                        v('APP_SESSION') || &lt;br /&gt;                        ':XLSX') ||&lt;br /&gt;  '"&amp;gt;&amp;lt;img src="#APP_IMAGES#download_xlsx.png" alt="" title="Download Excel XLSX"/&amp;gt;' as img&lt;br /&gt; from dual&lt;br /&gt; union&lt;br /&gt; select&lt;br /&gt;  2 as ordby,&lt;br /&gt;  '&amp;lt;a href="' ||&lt;br /&gt;  APEX_UTIL.PREPARE_URL('f?p=' ||&lt;br /&gt;                        v('APP_ID') || &lt;br /&gt;                        ':1:' || &lt;br /&gt;                        v('APP_SESSION') || &lt;br /&gt;                        ':EXCEL_XML') ||&lt;br /&gt;  '"&amp;gt;&amp;lt;img src="#APP_IMAGES#download_xml.png" alt="" title="Download Excel XML"/&amp;gt;' as img&lt;br /&gt; from dual&lt;br /&gt; union&lt;br /&gt; select&lt;br /&gt;  3 as ordby,&lt;br /&gt;  '&amp;lt;a href="' ||&lt;br /&gt;  APEX_UTIL.PREPARE_URL('f?p=' ||&lt;br /&gt;                        v('APP_ID') || &lt;br /&gt;                        ':11:' || &lt;br /&gt;                        v('APP_SESSION') || &lt;br /&gt;                        ':') ||&lt;br /&gt;  '"&amp;gt;&amp;lt;img src="#APP_IMAGES#download_pdf.png" alt="" title="Download PDF"/&amp;gt;' as img&lt;br /&gt; from dual&lt;br /&gt; )&lt;br /&gt;order by ordby&lt;br /&gt;&lt;/pre&gt;Mit &lt;b&gt;APEX_UTIL.PREPARE_URL&lt;/b&gt; definieren Sie in SQL und PL/SQL einfach eine sichere URL die Sie in Verbindung mit Session State Protection (SSO) benötigen.&lt;b&gt;#APP_IMAGES#&lt;/b&gt; referenziert auf mein hochgeladenes Bild. Da ich auf dem öffentlichen APEX Server arbeite, kann ich meine Bilddateien nicht auf einem Webserver ablegen. Dies wäre aber aus performance und caching Gründen zu bevorzugen. Auf der anderen Seite soll die Applikation später als Download zur Verfügung stehen, dann kann ich die Bilder einfach als Supporting Objects bei der Installation mit integrieren.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-4185639225295242446?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/4185639225295242446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=4185639225295242446&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4185639225295242446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4185639225295242446'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/10/eigene-urls-im-report-mit-bilder.html' title='Eigene URLs und Bilder im APEX Report abbilden'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-CtNykjGTjf0/Tp3mzW6jxLI/AAAAAAAAAXg/rkDnkBdRm_0/s72-c/button.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-299635423477874522</id><published>2011-10-17T22:29:00.001+02:00</published><updated>2011-12-06T22:12:35.970+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Kurs'/><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Erinnerung: APEX Workshop vom 24.10. bis 26.10.2011</title><content type='html'>&lt;b&gt;Nochmal die Erinnerung:&lt;/b&gt;&lt;br /&gt;Vom &lt;u&gt;24. bis zum 26.10.2011&lt;/u&gt; findet der "Oracle APEX: Knowhow aus der Praxis" Workshop in Bensheim statt. Ich halte am Montag einen Gastauftritt zu APEX Plugins und zeige Ihnen wie Sie das&lt;b&gt; jQuery Sparkline Plugin&lt;/b&gt; in ein APEX Plugin umwandeln können:&lt;br /&gt;&lt;div style="text-align: center;"&gt;Beispiel Sparklines &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZHwNa8lTJmQ/TpyJlt5ePeI/AAAAAAAAAXQ/poG2EVBgTBY/s1600/sparkline_examples.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="283" src="http://2.bp.blogspot.com/-ZHwNa8lTJmQ/TpyJlt5ePeI/AAAAAAAAAXQ/poG2EVBgTBY/s320/sparkline_examples.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&amp;nbsp;Das fertige Plugin in Aktion&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HPzbHcLHMFs/TpyJ_2bVGaI/AAAAAAAAAXY/cWxWOXs7iXM/s1600/sparkline_plugin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="119" src="http://4.bp.blogspot.com/-HPzbHcLHMFs/TpyJ_2bVGaI/AAAAAAAAAXY/cWxWOXs7iXM/s320/sparkline_plugin.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Details zum jQuery Plugin finden Sie übrigens hier: &lt;a href="http://omnipotent.net/jquery.sparkline/"&gt;http://omnipotent.net/jquery.sparkline/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Außerdem zeige ich zum ersten mal die &lt;b&gt;Plugin App Live&lt;/b&gt;. Die Anwendung liegt in den Endzügen der Entwicklung und bedarf nur noch kleinerer Anpassungen.&lt;br /&gt;Das letzte Plugin vor dem ersten Release habe ich heute integriert:&lt;br /&gt;Save Before Exit von Skillbuilders.&lt;br /&gt;Dieses Plugin verwende ich zum Beispiel in Kombination mit dem Iframe Plugin, um mehrere Tabular Forms auf einer Seite darstellen zu können die mit Standard APEX Prozessen verwendet werden.&lt;br /&gt;&amp;nbsp;Aktuell habe ich &lt;b&gt;29 Plugins&lt;/b&gt; in der Anwendung verwendet. Die Startseite verwendet die meisten Plugins : &lt;b&gt;"9"!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wem das noch nicht an Argumenten reicht, dem sei gesagt: Am dem Sonntag vor dem Kurs soll (so munkelt es) der &lt;b&gt;Formel 1 Weltmeister 2011&lt;/b&gt; seine Weltmeisterfeier im benachbarten Heppenheim haben. Heißt, frühes anreisen sorgt für gute Plätze! ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-299635423477874522?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/299635423477874522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=299635423477874522&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/299635423477874522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/299635423477874522'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/10/erinnerung-apex-workshop-vom-2410-bis.html' title='Erinnerung: APEX Workshop vom 24.10. bis 26.10.2011'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ZHwNa8lTJmQ/TpyJlt5ePeI/AAAAAAAAAXQ/poG2EVBgTBY/s72-c/sparkline_examples.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1956831957314434973</id><published>2011-10-17T21:07:00.000+02:00</published><updated>2011-10-17T21:08:15.167+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic Actions'/><category scheme='http://www.blogger.com/atom/ns#' term='UILayout'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Looking for UILayout plug-in beta tester (APEX 4.1 only)</title><content type='html'>I added some fixes to the UILayout plug-in in combination with APEX 4.1 and the Interactive Report appearance.&lt;br /&gt;&lt;br /&gt;I'm quite busy with the Plugin App and looking out for some testers. If there is anybody out there then please contact me.&lt;br /&gt;&lt;br /&gt;The following issues are fixed under APEX 4.1:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Format options position&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Jm11s_kwM2c/Tpx7x8NozXI/AAAAAAAAAXI/N5Pck0e7o3Q/s1600/uilayout_fix3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://3.bp.blogspot.com/-Jm11s_kwM2c/Tpx7x8NozXI/AAAAAAAAAXI/N5Pck0e7o3Q/s400/uilayout_fix3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Rows Per Page position&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bV98f8yyBNo/Tpx7xWRgR9I/AAAAAAAAAXA/yFOp-jHXAUw/s1600/uilayout_fix2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://3.bp.blogspot.com/-bV98f8yyBNo/Tpx7xWRgR9I/AAAAAAAAAXA/yFOp-jHXAUw/s400/uilayout_fix2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Column options&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-KpcI1FertiE/Tpx7w53jP1I/AAAAAAAAAW4/bECBDf3Xds0/s1600/uilayout_fix1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="205" src="http://3.bp.blogspot.com/-KpcI1FertiE/Tpx7w53jP1I/AAAAAAAAAW4/bECBDf3Xds0/s400/uilayout_fix1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I don't know if it works for all themes? If you know about more issues or even have some improvement ideas please inform me. I will fix it before the final release will come out.&lt;br /&gt;&lt;br /&gt;Tobias&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1956831957314434973?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1956831957314434973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1956831957314434973&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1956831957314434973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1956831957314434973'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/10/looking-for-uilayout-plug-in-beta.html' title='Looking for UILayout plug-in beta tester (APEX 4.1 only)'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Jm11s_kwM2c/Tpx7x8NozXI/AAAAAAAAAXI/N5Pck0e7o3Q/s72-c/uilayout_fix3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1304844406597158717</id><published>2011-09-25T10:43:00.000+02:00</published><updated>2011-12-06T22:12:35.968+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Die nächsten Plugins für "Die Pugin App"</title><content type='html'>Die Plugin App hat einen schon recht hohen Reifegrad erreicht. Da ich aber noch bis Ende Oktober Zeit habe, werde ich noch versuchen ein paar weitere Plugins zu integrieren:&lt;br /&gt;&lt;br /&gt;Diese Plugins sollen noch kommen:&lt;br /&gt;PicInsideEditBox:&lt;br /&gt;&lt;a href="http://apex-plugin.com/oracle-apex-plugins/item-plugin/picinsideeditbox_141.html"&gt;http://apex-plugin.com/oracle-apex-plugins/item-plugin/picinsideeditbox_141.html&lt;/a&gt;&lt;br /&gt;Reports 2 PDF:&lt;br /&gt;&lt;a href="http://apex-plugin.com/oracle-apex-plugins/process-type-plugin/reports-2-pdf_140.html"&gt;http://apex-plugin.com/oracle-apex-plugins/process-type-plugin/reports-2-pdf_140.html&lt;/a&gt;&lt;br /&gt;SkillBuilders Save Before Exit:&lt;br /&gt;&lt;a href="http://apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/skillbuilders-save-before-exit_43.html"&gt;http://apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/skillbuilders-save-before-exit_43.html&lt;/a&gt;&lt;br /&gt;Simple Checkbox:&lt;br /&gt;&lt;a href="http://apex.oracle.com/pls/apex/f?p=654321:206:0:::::"&gt;http://apex.oracle.com/pls/apex/f?p=654321:206:0:::::&amp;nbsp;&lt;/a&gt;&lt;br /&gt;Address(validate, display map) &lt;br /&gt;&lt;a href="http://apex-plugin.com/oracle-apex-plugins/item-plugin/addressvalidate-display-map_88.htmlresizeable%20"&gt;http://apex-plugin.com/oracle-apex-plugins/item-plugin/addressvalidate-display-map_88.htmlresizeable&amp;nbsp;&lt;/a&gt;&lt;br /&gt;Textarea (memory)&amp;nbsp; &lt;br /&gt;&lt;a href="http://apex-plugin.com/oracle-apex-plugins/item-plugin/resizeable-textarea_80.html"&gt;http://apex-plugin.com/oracle-apex-plugins/item-plugin/resizeable-textarea_80.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hier die Liste aller bisher verwendeten Plugins:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2f7kkbt9__E/Tn7onzRp4BI/AAAAAAAAAW0/V1tBjaNLOxY/s1600/Verwendete_Plugins_20110925.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://1.bp.blogspot.com/-2f7kkbt9__E/Tn7onzRp4BI/AAAAAAAAAW0/V1tBjaNLOxY/s400/Verwendete_Plugins_20110925.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Wenn jemand ein tolles Plugin kennt, das hier noch fehlt, dann meldet euch bitte bei mir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1304844406597158717?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1304844406597158717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1304844406597158717&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1304844406597158717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1304844406597158717'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/09/die-nachsten-plugins-fur-die-pugin-app.html' title='Die nächsten Plugins für &quot;Die Pugin App&quot;'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-2f7kkbt9__E/Tn7onzRp4BI/AAAAAAAAAW0/V1tBjaNLOxY/s72-c/Verwendete_Plugins_20110925.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-767403944803835360</id><published>2011-09-21T19:54:00.003+02:00</published><updated>2011-12-06T22:12:35.984+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Oracle APEX: Knowhow aus der Praxis</title><content type='html'>Es ist wieder soweit, zwischen dem 24. und dem 26.10.2011 findet der "Oracle APEX: Knowhow aus der Praxis" Workshop in Bensheim statt:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jI17lEYfB-I/TnoiS_uefSI/AAAAAAAAAWs/MfoGTrgF32Q/s1600/schulung_apex.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://2.bp.blogspot.com/-jI17lEYfB-I/TnoiS_uefSI/AAAAAAAAAWs/MfoGTrgF32Q/s400/schulung_apex.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Diesmal mit der Besonderheit, dass ich als Gastredner auftrete!&lt;br /&gt;Ich werde mich mit dem Thema Plugins befassen und Ihnen zeigen, wie Sie solch ein APEX Plugin erstellen und in Ihrer APEX Anwendung verwenden können.Falls jetzt die Frage aufkommt, um was für ein Typ Plugin es sich handelt?&lt;br /&gt;Dann schauen Sie doch einfach mal hier rein:&lt;br /&gt;&lt;a href="http://apex-at-work.blogspot.com/2011/09/logbuch-mit-neuem-plugin.html"&gt;http://apex-at-work.blogspot.com/2011/09/logbuch-mit-neuem-plugin.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Außerdem werde ich mein aktuelles Projekt "&lt;a href="http://apex-at-work.blogspot.com/2011/09/logbuch.html"&gt;Die Plugin App&lt;/a&gt;" das erste mal Live präsentieren.&lt;br /&gt;&lt;br /&gt;Also wir sehen uns beim Workshop!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-767403944803835360?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/767403944803835360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=767403944803835360&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/767403944803835360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/767403944803835360'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/09/oracle-apex-knowhow-aus-der-praxis.html' title='Oracle APEX: Knowhow aus der Praxis'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jI17lEYfB-I/TnoiS_uefSI/AAAAAAAAAWs/MfoGTrgF32Q/s72-c/schulung_apex.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2218688589337979021</id><published>2011-09-14T23:33:00.004+02:00</published><updated>2011-09-14T23:39:18.423+02:00</updated><title type='text'>What happens in 4 years</title><content type='html'>Since 2008 I write about APEX, Javascript and PL/SQL and still like it a lot. It seems that people think that I do right:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-jOu7MYxw_SY/TnEeFOn2EwI/AAAAAAAAAWc/CWlVylWvMEw/s1600/auswertung_201109.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 186px;" src="http://2.bp.blogspot.com/-jOu7MYxw_SY/TnEeFOn2EwI/AAAAAAAAAWc/CWlVylWvMEw/s400/auswertung_201109.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5652332082500080386" /&gt;&lt;/a&gt;&lt;br /&gt;If people around the world like it then i will not stop it!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-9UeXJtE4G60/TnEehv1zMxI/AAAAAAAAAWk/Y15-s-cMimw/s1600/auswertung_201109_country.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 169px;" src="http://1.bp.blogspot.com/-9UeXJtE4G60/TnEehv1zMxI/AAAAAAAAAWk/Y15-s-cMimw/s400/auswertung_201109_country.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5652332572453319442" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2218688589337979021?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2218688589337979021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2218688589337979021&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2218688589337979021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2218688589337979021'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/09/what-happens-in-4-years.html' title='What happens in 4 years'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jOu7MYxw_SY/TnEeFOn2EwI/AAAAAAAAAWc/CWlVylWvMEw/s72-c/auswertung_201109.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-4136473432062247417</id><published>2011-09-14T22:28:00.005+02:00</published><updated>2011-12-06T22:12:35.974+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sparkline'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Logbuch mit neuem Plugin</title><content type='html'>Bei der Entwicklung der Logbuchanwendung habe ich auch gleich ein kleines aber feines Plugin mit integriert, dass es so nicht als Download zu haben gibt.&lt;br /&gt;&lt;br /&gt;Es handelt es sich um das jQuery Sparkline Addon. Es dient zur Anzeige von kleinen Line- oder Bar-Charts direkt im Report. Ach seht einfach selbst:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-T-D4C0yX56o/TnEQAEzMTEI/AAAAAAAAAWU/Q2DtgwODAXs/s1600/sparkline_plugin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 172px;" src="http://4.bp.blogspot.com/-T-D4C0yX56o/TnEQAEzMTEI/AAAAAAAAAWU/Q2DtgwODAXs/s400/sparkline_plugin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5652316600801184834" /&gt;&lt;/a&gt;&lt;br /&gt;Wie man sieht ist die Anwendung noch nicht perfekt, aber auf dem richtigen Weg. :)&lt;br /&gt;&lt;br /&gt;Wenn jemand Interesse an dem Plugin, dann könnt ihr euch bei mir melden.&lt;br /&gt;&lt;br /&gt;Weitere Infos und Bilder folgen...&lt;br /&gt;&lt;br /&gt;Ps.:&lt;br /&gt;Die nächste Aufgabe ist die Integration des "Embedded PDF" Plugins zur Generierung von PDF's ohne BiPublisher oder Jasper Reports. Mal sehen was das Plugin so kann.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-4136473432062247417?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/4136473432062247417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=4136473432062247417&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4136473432062247417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4136473432062247417'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/09/logbuch-mit-neuem-plugin.html' title='Logbuch mit neuem Plugin'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-T-D4C0yX56o/TnEQAEzMTEI/AAAAAAAAAWU/Q2DtgwODAXs/s72-c/sparkline_plugin.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7090538912465376821</id><published>2011-09-11T22:38:00.005+02:00</published><updated>2011-12-06T22:12:35.981+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch'/><category scheme='http://www.blogger.com/atom/ns#' term='Logbuch - Die Plugin App'/><title type='text'>Logbuch - Die Plugin App</title><content type='html'>Ich arbeite mit ein paar Freunden derzeit an einer Applikation die sich Logbuch nennt und das Ziel hat, möglichst viele APEX Plugins in einer Business Applikation abzubilden.&lt;br /&gt;&lt;br /&gt;Ein paar Infos zur Anwendung:&lt;br /&gt;- Ziel der Anwendung ist es, Einträge über eigens definierte Kategorien zu erfassen.&lt;br /&gt;- Die komplette Applikation nutzt nur Standard APEX Funktionalität bei allen DML Prozessen.&lt;br /&gt;- Es werden im Moment über 10 Plugins verwendet und das Ziel ist 15 zu integrieren.&lt;br /&gt;- Neben der normalen Webapplikation für Standard-Workstations mit aktuellem Browser, wird auch eine mobile Variante integriert werden.&lt;br /&gt;&lt;br /&gt;Die Anwendung selber ist zu 75% fertig und soll als Beispiel auf regionalen DOAG Veranstaltungen die Nutzung von APEX Plugins näher bringen.&lt;br /&gt;&lt;br /&gt;Also haltet die Augen für die kommenden DOAG Events offen.&lt;br /&gt;&lt;br /&gt;Hier mal eine Seite in der Anwendung:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-IdJRzrCWN9o/Tm0ek8_qGZI/AAAAAAAAAWM/tZnHuvwHfAQ/s1600/Eintrag_bearbeiten.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5651206727617091986" src="http://1.bp.blogspot.com/-IdJRzrCWN9o/Tm0ek8_qGZI/AAAAAAAAAWM/tZnHuvwHfAQ/s400/Eintrag_bearbeiten.png" style="cursor: hand; cursor: pointer; display: block; height: 255px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7090538912465376821?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7090538912465376821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7090538912465376821&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7090538912465376821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7090538912465376821'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/09/logbuch.html' title='Logbuch - Die Plugin App'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-IdJRzrCWN9o/Tm0ek8_qGZI/AAAAAAAAAWM/tZnHuvwHfAQ/s72-c/Eintrag_bearbeiten.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6573340658353394544</id><published>2011-08-30T21:36:00.006+02:00</published><updated>2011-08-30T21:42:23.430+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>Automatic File Upload filename can't be null</title><content type='html'>I used the automatic file upload feature of APEX and got always an error that either filename or mimetype column of my file table can't be null.&lt;br /&gt;&lt;br /&gt;APEX probably saves first in FLOW_FILES and then updates my tables. If I take the column "NOT NULL" limitation away it works fine. &lt;br /&gt;&lt;br /&gt;If you want to know how you configure automatic file upload in APEX look here:&lt;br /&gt;&lt;a href="http://oraexplorer.com/2011/03/file-browser-in-apex-4-with-blob-column-specified-in-item-source-attribute/"&gt;File Browser in APEX 4 with BLOB column specified in item source attribute&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6573340658353394544?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6573340658353394544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6573340658353394544&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6573340658353394544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6573340658353394544'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/08/automatic-file-upload.html' title='Automatic File Upload filename can&apos;t be null'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2133023808147443127</id><published>2011-08-30T20:39:00.004+02:00</published><updated>2011-08-30T20:48:17.701+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Restore package source code</title><content type='html'>If you need to restore your changed or dropped package then use this select to retrieve the lost information:http://www.blogger.com/img/blank.gif&lt;br /&gt;select text&lt;br /&gt;&amp;nbsp;from &lt;span style="font-weight:bold;"&gt;dba_source&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-weight:bold;"&gt;as of timestamp systimestamp - interval '10' minute &lt;/span&gt;&lt;br /&gt;&amp;nbsp;where name='MY_PACKAGE'&lt;br /&gt;&amp;nbsp;order by line;&lt;br /&gt;&lt;br /&gt;For more information read this blog post of Uwe Hesse:&lt;br /&gt;&lt;a href="http://uhesse.wordpress.com/2009/06/03/retrieve-old-versions-of-procedures-with-flashback-query/"&gt;Retrieve old versions of procedures with Flashback Query&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Btw: Have you seen the great blog post from Matt how you can use your own interactive images in APEX: &lt;a href="http://blog.theapexfreelancer.com/2011/08/apex-plugin-body-chart/"&gt;APEX Plugin – Body Chart&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2133023808147443127?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2133023808147443127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2133023808147443127&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2133023808147443127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2133023808147443127'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/08/restore-package-source-code.html' title='Restore package source code'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7734066299849783584</id><published>2011-08-17T20:32:00.001+02:00</published><updated>2011-08-17T22:30:55.557+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UILayout'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>IRR: UILayout issue</title><content type='html'>If you use the UILayout plug-in for APEX with Interactive Reports you will see some issues inside the action menu. The "Rows Per Page" and the "Format" menu will be positioned above the main action menu.&lt;br /&gt;&lt;br /&gt;To fix this use the following js snippet with a dynamic action or add it inside your page header:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;$('.dhtmlSubMenuS').mouseover(function() {&lt;br /&gt;  $('#apexir_ROWS_PER_PAGE_MENU').css({&lt;br /&gt;    left: $('#apexir_ROWS_PER_PAGE_MENU').position().left + 200 + "px"&lt;br /&gt;  });&lt;br /&gt;  $('#apexir_FORMAT_MENU').css({&lt;br /&gt;    left: $('#apexir_FORMAT_MENU').position().left + 200 + "px"&lt;br /&gt;  });    &lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Create a Dynamic Action which fires on the refresh of your Interactive Report and executes the JS code. Run it also on page load.&lt;br /&gt;&lt;br /&gt;I will fix it in one of the next versions of the plug-in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7734066299849783584?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7734066299849783584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7734066299849783584&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7734066299849783584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7734066299849783584'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/08/irr-uilayout-issue.html' title='IRR: UILayout issue'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-4099194373263354702</id><published>2011-08-09T21:30:00.001+02:00</published><updated>2011-08-09T21:30:00.564+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>IRR: Remove single rule</title><content type='html'>If you want to remove easily a single rule inside your interactive report then use this javascript code snippet:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-hgZmPjGIByA/TkDuCISEXHI/AAAAAAAAAWE/vBfxEaEW4UE/s1600/irr_rule.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 308px; height: 84px;" src="http://3.bp.blogspot.com/-hgZmPjGIByA/TkDuCISEXHI/AAAAAAAAAWE/vBfxEaEW4UE/s400/irr_rule.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5638768453818276978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;$('a:contains(Vorname ist Null)').parent().parent().remove();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Customized IRR example:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;/* Remove Highlight rules */&lt;br /&gt;$('a:contains(MY_RULE1_BLUE)').parent().parent().remove();&lt;br /&gt;$('a:contains(MY_RULE2_GREEN)').parent().parent().remove();&lt;br /&gt;$('a:contains(MY_RULE3_ORANGE)').parent().parent().remove();&lt;br /&gt;/* remove filter */&lt;br /&gt;$('a:contains(My Column filter = \'FILTER\' )').parent().parent().remove();&lt;br /&gt;/* Remove named report */&lt;br /&gt;$('a:contains(Gespeicherter Bericht = \"My filtered report\")').parent().parent().remove();&lt;br /&gt;/* Remove group label text */&lt;br /&gt;$('#apexir_SAVED_REPORTS optgroup[label="Standard"]').attr("label","");&lt;br /&gt;$('#apexir_SAVED_REPORTS optgroup[label="Öffentlich"]').attr("label","");&lt;br /&gt;/* Remove Control Panel Control and make it always active */&lt;br /&gt;$('#apexir_CONTROLS_IMAGE').removeClass('pseudoButtonActive');&lt;br /&gt;$('#apexir_CONTROLS_IMAGE').addClass('pseudoButtonInactive');&lt;br /&gt;/* gReport.toggle_controls($x('apexir_CONTROL_PANEL_CONTROL')); */&lt;br /&gt;$('#apexir_CONTROL_PANEL_CONTROL').hide();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-4099194373263354702?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/4099194373263354702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=4099194373263354702&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4099194373263354702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4099194373263354702'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/08/irr-remove-single-rule.html' title='IRR: Remove single rule'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-hgZmPjGIByA/TkDuCISEXHI/AAAAAAAAAWE/vBfxEaEW4UE/s72-c/irr_rule.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-4546813657906916553</id><published>2011-08-06T16:15:00.000+02:00</published><updated>2011-08-06T16:15:01.541+02:00</updated><title type='text'>Check if part of a string has only number values</title><content type='html'>I had the requirement to find out if a part of a string includes only number values:&lt;br /&gt;&lt;br /&gt;Table: My_Test_String_Table&lt;br /&gt;Column: T_STR&lt;br /&gt;String 1: TIGER031STD&lt;br /&gt;String 2: TIGERTT1STD&lt;br /&gt;String 3: TIGER999STD&lt;br /&gt;&lt;br /&gt;Now I need to find all rows where position 6, 7 and 8 is a number value.&lt;br /&gt;&lt;br /&gt;Select:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;select * from My_Test_String_Table&lt;br /&gt;where &lt;br /&gt;decode(REGEXP_INSTR (substr(T_STR,6,3), '[^[:digit:]]'),0,'YES','NO') = 'YES';&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Returns String 1 and 3!&lt;br /&gt;&lt;br /&gt;Take a look into this forum post to find more examples:&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=371057"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=371057&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-4546813657906916553?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/4546813657906916553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=4546813657906916553&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4546813657906916553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4546813657906916553'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/08/check-if-part-of-string-has-only-number.html' title='Check if part of a string has only number values'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8061937884257280242</id><published>2011-08-06T10:57:00.002+02:00</published><updated>2011-08-06T11:04:09.194+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>IRR: Get current report selection</title><content type='html'>With Interactive Reports you are able to save several views of one report source.&lt;br /&gt;- Default&lt;br /&gt;- Public&lt;br /&gt;- Private&lt;br /&gt;&lt;br /&gt;Your end user can easily choose from those saved reports. &lt;br /&gt;If you need to know which the currently viewed report is then you can use this little js code snippet:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;alert(&lt;br /&gt;'ID: ' + &lt;br /&gt;$('#apexir_SAVED_REPORTS').val() + &lt;br /&gt;', Text: ' + &lt;br /&gt;$('#apexir_SAVED_REPORTS :selected').text()&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Try it inside a dynamic action!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8061937884257280242?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8061937884257280242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8061937884257280242&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8061937884257280242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8061937884257280242'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/08/irr-get-current-report-selection.html' title='IRR: Get current report selection'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8380181416079583002</id><published>2011-07-02T11:48:00.002+02:00</published><updated>2011-07-02T11:53:00.840+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>New Plug-in: Hyphenation for APEX</title><content type='html'>I just released a new plug-in called: Hyphenation for APEX&lt;br /&gt;&lt;br /&gt;Unfortunately at the moment it seems only to work with Firefox. I contacted the developers of the original plug-in to find the issue why it doesn't work with IE9 and the standard APEX theme?&lt;br /&gt;&lt;br /&gt;Check out this ticket for more information: &lt;a href="http://code.google.com/p/hyphenator/issues/detail?id=146"&gt;http://code.google.com/p/hyphenator/issues/detail?id=146&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will update the plug-in as soon as I have a solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8380181416079583002?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8380181416079583002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8380181416079583002&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8380181416079583002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8380181416079583002'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/07/new-plug-in-hyphenation-for-apex.html' title='New Plug-in: Hyphenation for APEX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1465286281733998925</id><published>2011-06-08T18:44:00.000+02:00</published><updated>2011-06-08T18:44:00.944+02:00</updated><title type='text'>How to find duplicate rows?</title><content type='html'>Basically with a single table you do like this:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;SELECT COLUMN_A, COLUMN_B, COUNT(*)&lt;br /&gt;FROM MY_TABLE&lt;br /&gt;GROUP BY COLUMN_A, COLUMN_B&lt;br /&gt;HAVING COUNT(*)&gt;1;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you have a special select and you need to find duplicate rows then do like this:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;select count(*), cust_no&lt;br /&gt;(&lt;br /&gt;select&lt;br /&gt;c.cust_no, c.cust_name, s.order_date, s.art_no, s.art_amount&lt;br /&gt;from table_sales s, table_customer c&lt;br /&gt;where c.cust_no = s.cust_no&lt;br /&gt;  and s.country_no = 49&lt;br /&gt;  and s.order_date = trunc(sysdate-1)&lt;br /&gt;group by&lt;br /&gt;order by 2,3&lt;br /&gt;) &lt;br /&gt;group by cust_no&lt;br /&gt;having count(*) &gt; 1&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1465286281733998925?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1465286281733998925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1465286281733998925&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1465286281733998925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1465286281733998925'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/06/how-to-find-duplicate-rows.html' title='How to find duplicate rows?'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6843411169319559692</id><published>2011-06-06T20:42:00.003+02:00</published><updated>2011-06-06T20:57:02.278+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Check ob Flash installiert ist</title><content type='html'>Ich habe vor ein paar Tagen ne interessante Frage gestellt bekommen:&lt;br /&gt;"Wie überprüft man in Apex, ob ein Flash Plugin installiert ist?"&lt;br /&gt;Antwort:&lt;br /&gt;Einen Standard-Check gibt es nicht.&lt;br /&gt;&lt;br /&gt;Lösungsansatz:&lt;br /&gt;Probiert folgende Erweiterung &lt;a href="http://www.featureblend.com/javascript-flash-detection-library.html"&gt;JavaScript Flash Detection Library (Flash Detect)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Die Datei "flash_detect_min.js" auf eurem Server laden und in den APEX Page Header einbetten.&lt;br /&gt;&lt;br /&gt;Auf eurer Startseite erstellt ihr ein Hidden Item: P1_FLASH&lt;br /&gt;&lt;br /&gt;Auf der gleichen Seite erstellt ihre eine Dynamic Action die nach dem "Page Load" startet.&lt;br /&gt;&lt;br /&gt;Erste TRUE Action: Execute Javascript Code&lt;br /&gt;if(!FlashDetect.installed){&lt;br /&gt;$s('P1_FLASH','TRUE');&lt;br /&gt;}else{&lt;br /&gt;$s('P1_FLASH','FALSE');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Zweite TRUE Action: Execute PL/SQL Code&lt;br /&gt;Code: null;&lt;br /&gt;Page Items to Submit: P1_FLASH&lt;br /&gt;&lt;br /&gt;Nun könnt ihr auf jeder Seite für die betroffenen Regionen Bedingungen integrieren:&lt;br /&gt;:P1_FLASH = 'TRUE'&lt;br /&gt;&lt;br /&gt;Das Ganze könnte auch ein schönes kleines Plug-in sein! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6843411169319559692?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6843411169319559692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6843411169319559692&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6843411169319559692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6843411169319559692'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/06/check-ob-flash-installiert-ist.html' title='Check ob Flash installiert ist'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5656793089195566645</id><published>2011-05-03T19:53:00.000+02:00</published><updated>2011-05-03T19:53:00.114+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Two ways using string to table in APEX selects</title><content type='html'>&lt;span style="font-weight:bold;"&gt;First way&lt;/span&gt;&lt;br /&gt;This example uses "REGULAR expressions" and the "connect by" clause. Perfect when you select on columns including lists.&lt;br /&gt;Forum entry: &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9494074"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=9494074&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;WITH TABLE1&lt;br /&gt;       AS (SELECT 1 my_id, '8092:7054:9237:4232:3333:4023:6781' my_list FROM DUAL&lt;br /&gt;           UNION&lt;br /&gt;           SELECT 2, '8765:2231:2242:3412:3453' FROM DUAL&lt;br /&gt;           UNION&lt;br /&gt;           SELECT 3, '2121' FROM DUAL&lt;br /&gt;           UNION&lt;br /&gt;           SELECT 4, '6565:9121' FROM DUAL)&lt;br /&gt;  SELECT my_id,REGEXP_SUBSTR ( my_list, '([^:]+)', 1, lvl)&lt;br /&gt;    FROM TABLE1,&lt;br /&gt;         (SELECT LEVEL lvl&lt;br /&gt;            FROM (SELECT MAX (LENGTH (REGEXP_REPLACE ( my_list || ':', '[^:]'))) mx&lt;br /&gt;                    FROM TABLE1)&lt;br /&gt;          CONNECT BY LEVEL &lt;= mx + 1)&lt;br /&gt;   WHERE lvl - 1 &lt;= LENGTH (REGEXP_REPLACE ( my_list || ':', '[^:]'))&lt;br /&gt;     AND REGEXP_SUBSTR ( my_list, '([^:]+)', 1, lvl) IS NOT NULL&lt;br /&gt;   ORDER BY my_id,lvl;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Second way&lt;/span&gt;&lt;br /&gt;This example is based on a nice XML solution. Only needs two lines of code. Easy to use in combination with variables.&lt;br /&gt;Forum entry; &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=2184251&amp;tstart=0&amp;messageID=9406487"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=2184251&amp;tstart=0&amp;messageID=9406487&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;:F_STRING := '8092:7054:9237:4232:3333:4023:6781'&lt;br /&gt;&lt;br /&gt;select upper(extractvalue(column_value,'e'))&lt;br /&gt;from table(xmlsequence(xmltype('&lt;e&gt;&lt;e&gt;' || replace(:F_STRING,':','&lt;/e&gt;&lt;e&gt;') || '&lt;/e&gt;&lt;/e&gt;').extract('e/*')));&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5656793089195566645?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5656793089195566645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5656793089195566645&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5656793089195566645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5656793089195566645'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/05/two-ways-using-string-to-table-in-apex.html' title='Two ways using string to table in APEX selects'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5621267454275955742</id><published>2011-04-13T18:12:00.001+02:00</published><updated>2011-04-13T18:12:00.560+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>ORA-00001, WWV_FLOW_DATA_IDX1, ERR-1029</title><content type='html'>Troubleshooting the following APEX error:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;ORA-00001: unique constraint (APEX_040000.WWV_FLOW_DATA_IDX1) violated&lt;br /&gt;ERR-1029 Speichern von Sessioninformationen nicht möglich. session=3642920897355064 item=9815904291046405 &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This issue often comes in combination with iFrames, item computations, different languages or collections.&lt;br /&gt;&lt;br /&gt;First you need to find which item is effected:&lt;br /&gt;&lt;br /&gt;Inside APEX Application Builder &gt; Application xxx &gt; Utilities &gt; Application Express Views &gt; APEX_APPLICATION_PAGE_ITEMS&lt;br /&gt;Columns: Select all columns&lt;br /&gt;Filter: Item_ID = 9815904291046405&lt;br /&gt;Copy the generated select and execute it inside your SQL Developer:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;select WORKSPACE,APPLICATION_ID,APPLICATION_NAME,PAGE_ID,PAGE_NAME,ITEM_NAME,DISPLAY_AS,DISPLAY_AS_CODE,ITEM_DATA_TYPE,IS_REQUIRED,STANDARD_VALIDATIONS,DISPLAY_SEQUENCE,REGION,REGION_ID,SOURCE_USED,ITEM_DEFAULT,ITEM_DEFAULT_TYPE,LABEL,PRE_ELEMENT_TEXT,POST_ELEMENT_TEXT,FORMAT_MASK,ITEM_LABEL_TEMPLATE,ITEM_LABEL_TEMPLATE_ID,ITEM_SOURCE,ITEM_SOURCE_TYPE,ENCRYPT_SESSION_STATE,SOURCE_POST_COMPUTATION,READ_ONLY_CONDITION_TYPE,READ_ONLY_CONDITION_EXP1,READ_ONLY_CONDITION_EXP2,READ_ONLY_DISPLAY_ATTR,LOV_NAMED_LOV,LOV_DEFINITION,LOV_DISPLAY_EXTRA,LOV_DISPLAY_NULL,LOV_NULL_TEXT,LOV_NULL_VALUE,LOV_QUERY_RESULT_TRANSLATED,LOV_CASCADE_PARENT_ITEMS,AJAX_ITEMS_TO_SUBMIT,AJAX_OPTIMIZE_REFRESH,ITEM_ELEMENT_WIDTH,ITEM_ELEMENT_MAX_LENGTH,ITEM_ELEMENT_HEIGHT,HTML_TABLE_CELL_ATTR_LABEL,HTML_TABLE_CELL_ATTR_ELEMENT,HTML_FORM_ELEMENT_ATTRIBUTES,FORM_ELEMENT_OPTION_ATTRIBUTES,ITEM_BUTTON_IMAGE,ITEM_BUTTON_IMAGE_ATTRIBUTES,BEGINS_ON_NEW_ROW,BEGINS_ON_NEW_CELL,COLUMN_SPAN,ROW_SPAN,LABEL_ALIGNMENT,ITEM_ALIGNMENT,SHOW_QUICK_PICKS,QUICK_PICK_LINK_ATTR,QUICK_PICK_LABEL_01,QUICK_PICK_VALUE_01,QUICK_PICK_LABEL_02,QUICK_PICK_VALUE_02,QUICK_PICK_LABEL_03,QUICK_PICK_VALUE_03,QUICK_PICK_LABEL_04,QUICK_PICK_VALUE_04,QUICK_PICK_LABEL_05,QUICK_PICK_VALUE_05,QUICK_PICK_LABEL_06,QUICK_PICK_VALUE_06,QUICK_PICK_LABEL_07,QUICK_PICK_VALUE_07,QUICK_PICK_LABEL_08,QUICK_PICK_VALUE_08,QUICK_PICK_LABEL_09,QUICK_PICK_VALUE_09,QUICK_PICK_LABEL_10,QUICK_PICK_VALUE_10,ATTRIBUTE_01,ATTRIBUTE_02,ATTRIBUTE_03,ATTRIBUTE_04,ATTRIBUTE_05,ATTRIBUTE_06,ATTRIBUTE_07,ATTRIBUTE_08,ATTRIBUTE_09,ATTRIBUTE_10,CONDITION_TYPE,CONDITION_EXPRESSION1,CONDITION_EXPRESSION2,MAINTAIN_SESSION_STATE,ITEM_PROTECTION_LEVEL,ESCAPE_ON_HTTP_OUTPUT,AUTHORIZATION_SCHEME,AUTHORIZATION_SCHEME_ID,BUILD_OPTION,BUILD_OPTION_ID,ITEM_HELP_TEXT,LAST_UPDATED_BY,LAST_UPDATED_ON,COMPONENT_COMMENT,ITEM_ID,COMPONENT_SIGNATURE&lt;br /&gt;from APEX_APPLICATION_PAGE_ITEMS&lt;br /&gt;where ITEM_ID = 9815904291046405&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Investigate the effected item... You may find strange connections to other APEX components?&lt;br /&gt;&lt;br /&gt;Forum entry: &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9365663"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=9365663&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5621267454275955742?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5621267454275955742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5621267454275955742&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5621267454275955742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5621267454275955742'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/04/ora-00001-wwvflowdataidx1-err-1029.html' title='ORA-00001, WWV_FLOW_DATA_IDX1, ERR-1029'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3960709462222985255</id><published>2011-04-03T14:54:00.006+02:00</published><updated>2011-04-03T15:07:27.031+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>Handling the 32k problem in APEX charts</title><content type='html'>How to handle more then 32k (32768) characters inside your APEX charts: &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9486436"&gt;AnyChart gantt with custom xml and more then 32k&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Workaround:&lt;/span&gt;&lt;br /&gt; - Create your own chart&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Info:&lt;/span&gt;&lt;br /&gt; - AnyChart documentation: &lt;a href="http://www.anychart.com/products/ahttp://www.blogger.com/img/blank.gifnygantt/docs/users-guide/SetXMLAsString.html#textarea"&gt;Set XML As String From TextArea&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;HTML Header:&lt;/span&gt;http://www.blogger.com/img/blank.gif&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;&amp;lt;script src="#APP_IMAGES#anychart_intkit.js" language="javascript"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;PL/SQL Region:&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;/* ... */&lt;br /&gt;  htp.p('&amp;lt;textarea cols="65" rows="17" id="rowData" style="display:none;"&gt;');&lt;br /&gt; &lt;br /&gt;  /* Write CLOB through a package function */&lt;br /&gt;  P_CLOB := MY_PACKAGE.F_APEX_GANTT_COMPLETE ( P_USER );&lt;br /&gt; &lt;br /&gt;  dbms_lob.open(P_CLOB, dbms_lob.lob_readonly); &lt;br /&gt; &lt;br /&gt;  P_LENGTH := dbms_lob.getlength (P_CLOB);&lt;br /&gt; &lt;br /&gt;  while P_LENGTH &gt; 0 loop&lt;br /&gt;  &lt;br /&gt;     /* Read 32000 characters from CLOB */&lt;br /&gt;     dbms_lob.read(P_CLOB, P_CLOB_BUFFER, P_POS, P_SET); &lt;br /&gt;          &lt;br /&gt;     /* Write code in APEX */&lt;br /&gt;     htp.prn(P_SET);&lt;br /&gt;     &lt;br /&gt;     /* Increase Counter */&lt;br /&gt;     P_POS := P_POS + P_CLOB_BUFFER;&lt;br /&gt;     P_LOOP := P_LOOP + 1;&lt;br /&gt;     &lt;br /&gt;     /* Resize CLOB length */&lt;br /&gt;     P_LENGTH := P_LENGTH - P_CLOB_BUFFER;&lt;br /&gt;     &lt;br /&gt;  end loop;&lt;br /&gt; &lt;br /&gt;  dbms_lob.close(P_CLOB); &lt;br /&gt; &lt;br /&gt;  htp.p('&amp;lt;/textarea&gt;');&lt;br /&gt;  htp.p('&amp;lt;div id="chartDiv"&gt;&amp;lt;/div&gt;');&lt;br /&gt; &lt;br /&gt;  htp.p(&lt;br /&gt;    '&amp;lt;script type="text/javascript" language="javascript"&gt;' || chr(10) ||&lt;br /&gt;    '/* Set default swf path */' || chr(10) ||&lt;br /&gt;     'AnyChart.swfFile = ''/i/flashchart/anygantt_4/swf/AnyGantt.swf'';' || chr(10) ||&lt;br /&gt;    '/* Create new gantt chart */' || chr(10) ||&lt;br /&gt;     'var chart = new AnyChart();' || chr(10) ||&lt;br /&gt;     'chart.width="2500";' || chr(10) ||&lt;br /&gt;     'chart.height="1400";' || chr(10) ||&lt;br /&gt;    '/* Get string data from text area */' || chr(10) ||&lt;br /&gt;     'var data = document.getElementById(''rowData'').value.toString();' || chr(10) ||&lt;br /&gt;    '/* Set data */' || chr(10) ||&lt;br /&gt;     'chart.setData(data);' || chr(10) ||&lt;br /&gt;    '/* Write chart to "chart" div */' || chr(10) ||&lt;br /&gt;     'chart.write("chartDiv");' || chr(10) ||&lt;br /&gt;    '&amp;lt;/script&gt;');&lt;br /&gt;/* ... */&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I created a region plug-in based on the above code to handle the huge charts! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3960709462222985255?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3960709462222985255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3960709462222985255&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3960709462222985255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3960709462222985255'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/04/handling-32k-problem-in-apex-charts.html' title='Handling the 32k problem in APEX charts'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6738787301344354073</id><published>2011-03-25T17:35:00.001+01:00</published><updated>2011-03-25T17:35:00.084+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Remove delete icon in SkillBuilders Super LOV</title><content type='html'>Do you like the Super LOV as much as I do? It is just a great plug-in.&lt;br /&gt;&lt;br /&gt;Some customers didn't like the delete button to erase the selected value. I could not find any setting to disable this icon.&lt;br /&gt;&lt;br /&gt;Workaround:&lt;br /&gt;Add a dynamic action "after page load" which executes some javascript with this little piece of code:&lt;br /&gt;$('.superlov-modal-delete').remove();&lt;br /&gt;&lt;br /&gt;That's it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6738787301344354073?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6738787301344354073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6738787301344354073&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6738787301344354073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6738787301344354073'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/remove-delete-icon-in-skillbuilders.html' title='Remove delete icon in SkillBuilders Super LOV'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2578509385001795828</id><published>2011-03-22T18:40:00.001+01:00</published><updated>2011-03-22T18:40:00.168+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Customize Interactive report header graphic</title><content type='html'>Create a new image called report_bg_red.gif:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-8iNMbUkAyOc/TYi8T4u5N6I/AAAAAAAAAV4/UnA8uaL5e3A/s1600/report_bg_red.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 1px; height: 25px;" src="http://3.bp.blogspot.com/-8iNMbUkAyOc/TYi8T4u5N6I/AAAAAAAAAV4/UnA8uaL5e3A/s400/report_bg_red.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5586922387585709986" /&gt;&lt;/a&gt;&lt;br /&gt;Add this inside your page header to exchange the IRR default image:&lt;br /&gt;&lt;pre name="code" class="css"&gt;&lt;br /&gt;.apexir_WORKSHEET_DATA th {&lt;br /&gt;    background: url("/i/my_images/ir_styles/report_bg_red.gif") repeat-x scroll 0 0 #AAAAAA;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Change "/i/my_images/" with your image directory.&lt;br /&gt;&lt;br /&gt;If you want to customize even more CSS watch this blog post of Shakeeb Rahman: &lt;a href="http://apex.shak.us/post/1145946801/fully-control-your-interactive-reports-toolbar"&gt;http://apex.shak.us/post/1145946801/fully-control-your-interactive-reports-toolbar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2578509385001795828?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2578509385001795828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2578509385001795828&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2578509385001795828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2578509385001795828'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/customize-interactive-report-header.html' title='Customize Interactive report header graphic'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-8iNMbUkAyOc/TYi8T4u5N6I/AAAAAAAAAV4/UnA8uaL5e3A/s72-c/report_bg_red.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5531035088222548380</id><published>2011-03-21T18:40:00.000+01:00</published><updated>2011-03-21T18:40:00.126+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>SQL: Count character in column or string</title><content type='html'>Use this sql select to count a special character inside a column or string:&lt;br /&gt;&lt;br /&gt;Column selection:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;select col, length(col)-length(replace(col,',','')) &lt;br /&gt;from&lt;br /&gt; (select 'col1,col2,col3,col4' as col from dual);&lt;br /&gt;&lt;br /&gt;COL                 LENGTH(COL)-LENGTH(REPLACE(COL,',',''))&lt;br /&gt;------------------- ---------------------------------------&lt;br /&gt;col1,col2,col3,col4                                       3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;String selection&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  :P1_STRING := 'col1,col2,col3,col4';&lt;br /&gt;&lt;br /&gt;  select length(:P1_STRING)-length(replace(:P1_STRING,',','')) into :P1_CHAR_CNT from dual;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Watch this thread on Ask Tom: &lt;a href="http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:55423584511523"&gt;http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:55423584511523&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5531035088222548380?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5531035088222548380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5531035088222548380&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5531035088222548380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5531035088222548380'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/sql-count-character-in-column-or-string.html' title='SQL: Count character in column or string'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6697048281196983341</id><published>2011-03-17T20:39:00.001+01:00</published><updated>2011-03-17T20:49:27.796+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>APEX bug with APEX_ITEM and POPUPKEY_FROM_LOV</title><content type='html'>Try to set two POPUPKEY_FROM_LOVs beside each other with the column ids: 2,3&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;select&lt;br /&gt;APEX_ITEM.CHECKBOX (1,ac.ac_id) as ac_id,&lt;br /&gt;APEX_ITEM.POPUPKEY_FROM_LOV(2,ac.application_key,'lov_apps',50) as application,&lt;br /&gt;APEX_ITEM.POPUPKEY_FROM_LOV(3,ac.system_key,'lov_systems',50)   as system&lt;br /&gt;from app_conf ac;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When you run the page then APEX automatically creates a hidden field for the return value of the "popup lov". &lt;br /&gt;&lt;br /&gt;The output looks like that:&lt;br /&gt;column "application": Return column id = 2, Display column id = 3&lt;br /&gt;column "system": Return column id = 3, Display column id = 4&lt;br /&gt;&lt;br /&gt;If you set a value for column "system" it saves the "return value" in the "display value"-field of column "application".&lt;br /&gt;&lt;br /&gt;Workaround: Use at least two numbers in between to avoid this behavior:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;select&lt;br /&gt;APEX_ITEM.CHECKBOX (1,ac.ac_id) as ac_id,&lt;br /&gt;APEX_ITEM.POPUPKEY_FROM_LOV(2,ac.application_key,'lov_apps',50) as application,&lt;br /&gt;APEX_ITEM.POPUPKEY_FROM_LOV(4,ac.system_key,'lov_systems',50)   as system&lt;br /&gt;from app_conf ac;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6697048281196983341?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6697048281196983341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6697048281196983341&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6697048281196983341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6697048281196983341'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/apex-bug-with-apexitem-and.html' title='APEX bug with APEX_ITEM and POPUPKEY_FROM_LOV'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6955758742525327198</id><published>2011-03-16T19:51:00.003+01:00</published><updated>2011-03-16T20:04:01.176+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>New plug-in "Add favorite"</title><content type='html'>Have you ever looked for a solution to create an "add favorite"-button which let the user bookmark your website. You probably found out that each browser uses an own solution for it. I put it all into a nice little dynamic action plug-in. It supports to load only the "add favorite"-function, bookmark the current APEX page, bookmark any other page you define through the plug-in.&lt;br /&gt;&lt;br /&gt;Supported browsers: MS Internet Explorer, Firefox, Opera&lt;br /&gt;&lt;br /&gt;Demo: &lt;a href="http://apex.oracle.com/pls/otn/f?p=65560:ADD_FAVORITE"&gt;http://apex.oracle.com/pls/otn/f?p=65560:ADD_FAVORITE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-_1-0JFEcpaQ/TYEJhjVLu1I/AAAAAAAAAVw/Q8DZ7sLcFV4/s1600/picture00069.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 215px;" src="http://1.bp.blogspot.com/-_1-0JFEcpaQ/TYEJhjVLu1I/AAAAAAAAAVw/Q8DZ7sLcFV4/s400/picture00069.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5584755484940548946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm still working on the demo and will release all new plug-ins in the next couple of weeks. For all who want those plug-ins before the release then refer to this post: &lt;a href="http://apex-at-work.blogspot.com/2011/03/how-can-we-help-japan.html"&gt;How can we help Japan?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tobias&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6955758742525327198?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6955758742525327198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6955758742525327198&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6955758742525327198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6955758742525327198'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/new-plug-in-add-favorite.html' title='New plug-in &quot;Add favorite&quot;'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-_1-0JFEcpaQ/TYEJhjVLu1I/AAAAAAAAAVw/Q8DZ7sLcFV4/s72-c/picture00069.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7877461357983431020</id><published>2011-03-15T14:09:00.001+01:00</published><updated>2011-03-15T14:11:06.416+01:00</updated><title type='text'>Nice button solutions</title><content type='html'>Just saw this nice compilation of HTML/CSS button solutions.&lt;br /&gt;&lt;br /&gt;speckyboy.com: &lt;a href="http://speckyboy.com/2009/05/27/22-css-button-styling-tutorials-and-techniques/"&gt;http://speckyboy.com/2009/05/27/22-css-button-styling-tutorials-and-techniques/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7877461357983431020?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7877461357983431020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7877461357983431020&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7877461357983431020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7877461357983431020'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/nice-button-solutions.html' title='Nice button solutions'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2288687213957216863</id><published>2011-03-12T23:41:00.009+01:00</published><updated>2011-03-15T13:26:24.036+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>How can we help Japan?</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;Plug-in example application: &lt;a href="http://apex.oracle.com/pls/otn/f?p=65560:DONATE_TO_JAPAN"&gt;http://apex.oracle.com/pls/otn/f?p=65560:DONATE_TO_JAPAN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The example application also includes the new &lt;a href="http://apex.oracle.com/pls/otn/f?p=65560:ICON_CHANGER"&gt;"Icon Loader" Plug-in&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The plug-in will soon be released.&lt;br /&gt;&lt;br /&gt;Info: The application can not be downloaded anymore from my workspace on apex.oracle.com&lt;br /&gt;&lt;br /&gt;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)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2288687213957216863?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2288687213957216863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2288687213957216863&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2288687213957216863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2288687213957216863'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/how-can-we-help-japan.html' title='How can we help Japan?'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5621773654182416531</id><published>2011-03-08T21:00:00.000+01:00</published><updated>2011-03-08T16:31:18.442+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>Range Slider Plug-in for APEX?</title><content type='html'>I'm a bit surprised that there is no range slider plug-in for APEX yet. At least I couldn't find one.&lt;br /&gt;&lt;br /&gt;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?&lt;br /&gt;&lt;br /&gt;I saw one blog entry from Paul Brookes: &lt;a href="http://peekbee.blogspot.com/2010/02/range-slider-plugin.html"&gt;http://peekbee.blogspot.com/2010/02/range-slider-plugin.html&lt;/a&gt;&lt;br /&gt;But the plug-in seems not to be released on: &lt;a href="http://www.apex-plugin.com/"&gt;http://www.apex-plugin.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;List of nice slider solutions:&lt;br /&gt;&lt;a href="http://www.paciellogroup.com/blog/misc/samples/aria/slider/doubleslider.html"&gt;http://www.paciellogroup.com/blog/misc/samples/aria/slider/doubleslider.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jqueryui.com/demos/slider/#range"&gt;http://jqueryui.com/demos/slider/#range&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.noupe.com/javascript/30-javascriptajax-techniques-for-sliders-scrollers-and-scrollbars.html"&gt;http://www.noupe.com/javascript/30-javascriptajax-techniques-for-sliders-scrollers-and-scrollbars.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I also started a forum entry about it:&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=2187679&amp;tstart=0"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=2187679&amp;tstart=0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will let you know if I here anything about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5621773654182416531?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5621773654182416531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5621773654182416531&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5621773654182416531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5621773654182416531'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/range-slider-plug-in-for-apex.html' title='Range Slider Plug-in for APEX?'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3294300647346220632</id><published>2011-03-07T17:45:00.002+01:00</published><updated>2011-03-07T19:29:53.204+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic Actions'/><title type='text'>Es sind die kleinen Dinge, die APEX 4 so viel besser machen</title><content type='html'>Ich habe heute eine Frage im APEX Forum beantwortet. Diese recht trivial klingt, aber in der Konstellation doch recht anspruchsvoll wurde.&lt;br /&gt;&lt;br /&gt;Ausgangslage:&lt;br /&gt;Ein Entwickler hat zwei Textfelder: P1_FIELD_A, P1_FIELD_B und beide Felder sind im DATE-Format.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Wie gesagt es klingt recht einfach, sofern Sie PL/SQL verwenden dürfen und APEX 4.0 im Einsatz haben!&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;Kreieren Sie eine Dynamic Action &gt; "Erweitert"  &gt; Event: "Lose Focus" &gt; Item: P1_FIELD_A&lt;br /&gt;&lt;br /&gt;TRUE Action: "Set Value" &gt; Set Type: "PL/SQL Expression" &gt;&lt;br /&gt;Code: to_char(add_months(to_date(:P1_FIELD_A,'DD.MM.YYYY'),12),'dd.mm.yyyy')&lt;br /&gt;Page Items to Submit: P1_FIELD_A&lt;br /&gt;&lt;br /&gt;Affected Elements: Items &gt; Item: P1_FIELD_B&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Mit APEX 3 sah das noch ganz anders aus!&lt;br /&gt;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.&lt;br /&gt;Ich habe die Aufgabe versucht mit Javascript zu lösen. Verdammt unschön und aufwendig so ganz ohne PL/SQL:&lt;br /&gt;&lt;br /&gt;Dazu müssen Sie dem Element P1_FIELD_A folgenden Code unter "HTML Form Element Attributes" zuweisen:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;onblur="javascript:fnc_field_b(this)"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Und im Page Header folgte dieser JS Code:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;script&gt;&lt;br /&gt;function fnc_field_b(v_field_a){&lt;br /&gt;/* Input: mm/dd/yyyy */&lt;br /&gt;/* Output: dd.mm.yyyy */&lt;br /&gt;/* Documentation: http://www.javascriptkata.com/2007/04/27/mastering-of-the-date-object-in-javascript/ */&lt;br /&gt;/*                http://programming.top54u.com/post/Javascript-Convert-String-to-Date.aspx            */&lt;br /&gt;&lt;br /&gt;/* Create date object */&lt;br /&gt;var myDate = new Date(v_field_a.value);&lt;br /&gt;&lt;br /&gt;/* Add 1 year */&lt;br /&gt;myDate.setDate(myDate.getDate() + 365);&lt;br /&gt;&lt;br /&gt;/* Create output string DD.MM.YYYY */&lt;br /&gt;/* Day */&lt;br /&gt;var myStr = (myDate.getDate() &lt; 10 ? "0" + myDate.getDate().toString() : myDate.getDate().toString()) +  ".";&lt;br /&gt;/* Month */&lt;br /&gt;    myStr = myStr + (myDate.getMonth()+1 &lt; 10 ? "0" + (myDate.getMonth()+1).toString() : (myDate.getMonth()+1).toString()) + ".";&lt;br /&gt;/* Year */&lt;br /&gt;    myStr = myStr + myDate.getFullYear().toString();&lt;br /&gt; &lt;br /&gt;/* Set value */&lt;br /&gt;$s('P1_FIELD_B',myStr);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dabei ist dieser Code noch nicht einmal inhaltlich vollständig. Javascript kann nur das Format mm/dd/yyyy direkt in Date umwandeln.&lt;br /&gt;Ok und diese:&lt;br /&gt;* MM-dd-yyyy&lt;br /&gt;* yyyy/MM/dd&lt;br /&gt;* MM/dd/yyyy&lt;br /&gt;* MMMM dd, yyyy&lt;br /&gt;* MMM dd, yyyy&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;Weshalb dieser Part recht einfach zu lösen war (&lt;a href="http://www.javascriptkata.com/2007/04/27/mastering-of-the-date-object-in-javascript/"&gt;http://www.javascriptkata.com/2007/04/27/mastering-of-the-date-object-in-javascript/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Nur zur Info: Die meisten anderen Web-Entwickler haben kennen keine Dynamic Action Logik bzw. kennen kein PL/SQL.&lt;br /&gt;&lt;br /&gt;Das zeigt nur im kleinem Beispiel warum die Entwicklung von APEX Anwendungen so schnell geht.&lt;br /&gt;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. &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Den Forum Beitrag finden Sie hier: &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=2186734&amp;amp;tstart=0"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=2186734&amp;amp;tstart=0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3294300647346220632?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3294300647346220632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3294300647346220632&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3294300647346220632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3294300647346220632'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/03/es-sind-die-kleinen-dinge-die-apex-4-so.html' title='Es sind die kleinen Dinge, die APEX 4 so viel besser machen'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3970991553422146115</id><published>2011-02-28T16:48:00.004+01:00</published><updated>2011-02-28T16:59:35.655+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Hide Interactive Report filter dynamically after page load</title><content type='html'>To hide IRR filters always after the page load just use this little JS code inside a dynamic action (event: "Page Load")&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;/* Hide IRR filter after page load*/&lt;br /&gt;if( $('#apexir_CONTROLS_IMAGE').attr("src") == '/i/minus.gif') {&lt;br /&gt;   gReport.toggle_controls($x('apexir_CONTROL_PANEL_CONTROL'));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-cbYnW9yjW1k/TWvGG9wseWI/AAAAAAAAAVo/i7VhOh-61FE/s1600/hide_irr_filter.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 373px; height: 74px;" src="http://1.bp.blogspot.com/-cbYnW9yjW1k/TWvGG9wseWI/AAAAAAAAAVo/i7VhOh-61FE/s400/hide_irr_filter.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5578770386388810082" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3970991553422146115?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3970991553422146115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3970991553422146115&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3970991553422146115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3970991553422146115'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/hide-interactive-report-filter.html' title='Hide Interactive Report filter dynamically after page load'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-cbYnW9yjW1k/TWvGG9wseWI/AAAAAAAAAVo/i7VhOh-61FE/s72-c/hide_irr_filter.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3856967202398313745</id><published>2011-02-28T16:20:00.002+01:00</published><updated>2011-02-28T16:23:03.557+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>Interactive Report Header problem with multiple lines</title><content type='html'>There is a bug/misbehavior inside the IRR column headers in APEX 4. When you create column names with linebreaks (using the &amp;lt;br&gt; tag) inside then the background color changes to a grey background on the second line.&lt;br /&gt;Workaround: Add this script to your IR region header:&lt;br /&gt;&lt;pre name="code" class="css"&gt;&lt;br /&gt;&amp;lt;style&gt;&lt;br /&gt;/* IRR Header Fix */&lt;br /&gt;.apexir_WORKSHEET_DATA th{background-color:#828282!important;}&lt;br /&gt;&amp;lt;/style&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Bug view:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-1mzPzCc1cQI/TWu9dYfAN3I/AAAAAAAAAVY/g8inTO7NOEI/s1600/ir_css_problem.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 390px; height: 112px;" src="http://3.bp.blogspot.com/-1mzPzCc1cQI/TWu9dYfAN3I/AAAAAAAAAVY/g8inTO7NOEI/s400/ir_css_problem.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5578760875914835826" /&gt;&lt;/a&gt;&lt;br /&gt;Fixed view:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-qxAxOl9pHdU/TWu9dnoji8I/AAAAAAAAAVg/ogLGylxKbQQ/s1600/ir_css_problem_fixed.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 384px; height: 112px;" src="http://3.bp.blogspot.com/-qxAxOl9pHdU/TWu9dnoji8I/AAAAAAAAAVg/ogLGylxKbQQ/s400/ir_css_problem_fixed.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5578760879981431746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is a forum entry as well: &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=1981024"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=1981024&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3856967202398313745?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3856967202398313745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3856967202398313745&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3856967202398313745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3856967202398313745'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/interactive-report-header-problem-with.html' title='Interactive Report Header problem with multiple lines'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-1mzPzCc1cQI/TWu9dYfAN3I/AAAAAAAAAVY/g8inTO7NOEI/s72-c/ir_css_problem.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5566143822278278014</id><published>2011-02-25T05:12:00.004+01:00</published><updated>2011-02-25T12:54:46.584+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>ORA-20503 im APEX Application Builder</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;Beispielfälle:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Wahrscheinlich haben Sie mehrere Sprachen in ihrer APEX Umgebung installiert. Beispielsweise: Englisch, Deutsch.&lt;br /&gt;&lt;br /&gt;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,&lt;br /&gt;obwohl unter "Home" Englisch als Sprache eingestellt ist. &lt;br /&gt;Der Grund des Problems liegt wohl an ihrer eingestellten "Browser Language", die für gewöhnlich auf Deutsch eingestellt ist.&lt;br /&gt;&lt;br /&gt;In diesem Zusammenhang kommt der ORA-20503 Fehler zustande. Ich denke das dies ein Bug in der aktuellen Version ist.&lt;br /&gt;Es ist recht einfach diesen Fehler zu beheben:&lt;br /&gt; - Melden Sie sich am APEX Application Builder an.&lt;br /&gt; - Unter "Home" Startseite (1000) können Sie am rechten Seitenrand die Sprache einstellen "Language"&lt;br /&gt; - Stellen Sie die Sprache auf "Deutsch" um&lt;br /&gt; - Gehen Sie in das Item (bzw. in den fehlerhaften Bereich) und speichern Sie dieses erneut ab.&lt;br /&gt; - Es sollte alles funktionieren!&lt;br /&gt; - Alternativ können Sie auch jederzeit mit einem alternativen Browser die Daten abspeichern, der Fehler bleibt aber in ihrem Standardbrowser existent.&lt;br /&gt; &lt;br /&gt;Bei mir trat dieser Fehler bisher nur im Firefox auf. Ich entwickle allerdings auch nur ausschließlich in diesem. :)&lt;br /&gt;&lt;br /&gt;Ich hoffe die Sprachsteuerung wird in APEX 4.1 etwas verbessert, so dass weder der ORA-20503 auftritt noch sich einfach die Umgebungssprache ändert.&lt;br /&gt;&lt;br /&gt;In den folgenden Forum Beiträgen finden Sie weitere Informationen zum Fehler:&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9299655"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=9299655&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9368275"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=9368275&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5566143822278278014?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5566143822278278014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5566143822278278014&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5566143822278278014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5566143822278278014'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/ora-20503-im-apex-application-builder.html' title='ORA-20503 im APEX Application Builder'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2720812916888304170</id><published>2011-02-24T16:32:00.000+01:00</published><updated>2011-02-24T16:42:49.265+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Clear the page cache with PL/SQL</title><content type='html'>I just stumbled into a problem where I needed to clear the page cache inside an APEX PL/SQL process.&lt;br /&gt;&lt;br /&gt;It is quite easy if you know how:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;APEX_UTIL.CLEAR_PAGE_CACHE (160);&lt;br /&gt;&lt;br /&gt;-- APEX_UTIL.CLEAR_PAGE_CACHE (&lt;br /&gt;--     p_page IN NUMBER DEFAULT NULL);&lt;br /&gt;-- Description: This procedure removes session state for a given page for the current session.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;There are two other similar functions:&lt;br /&gt;CLEAR_APP_CACHE, CLEAR_USER_CACHE&lt;br /&gt;&lt;br /&gt;For more information watch the documentation for APEX_UTIL:&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E10513_01/doc/apirefs.310/e12855/apex_util.htm#BABCIAFJ"&gt;http://download.oracle.com/docs/cd/E10513_01/doc/apirefs.310/e12855/apex_util.htm#BABCIAFJ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2720812916888304170?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2720812916888304170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2720812916888304170&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2720812916888304170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2720812916888304170'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/clear-page-cache-with-plsql.html' title='Clear the page cache with PL/SQL'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2582711630616732012</id><published>2011-02-23T09:44:00.001+01:00</published><updated>2011-02-23T09:47:37.183+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Freeze panes example</title><content type='html'>Just saw the nice looking freeze panes example of Andy (ATD) in the Oracle APEX forum.&lt;br /&gt;It is to good to not being mentioned. &lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=267:47"&gt;http://apex.oracle.com/pls/otn/f?p=267:47&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For more information about the implementation watch this forum post:&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=2180543"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=2180543&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2582711630616732012?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2582711630616732012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2582711630616732012&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2582711630616732012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2582711630616732012'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/freeze-panes-example.html' title='Freeze panes example'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-9027130866422994776</id><published>2011-02-15T18:40:00.012+01:00</published><updated>2011-02-21T17:41:00.762+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Kurs'/><title type='text'>Sichere URLs mit einem Application Process erstellen</title><content type='html'>Wenn Sie eine APEX Anwendung mit Session State Protection verwenden, dann muss jeder Request entsprechend ihrer Einstellungen mit einem sicheren Hash-Schlüssel versendet werden. Wie Sie dies während der Laufzeit mit einem Application Process erstellen können, beschreibt dieser Artikel:&lt;br /&gt;&lt;br /&gt;Was ist Session State Protection und für was brauch ich diese Funktion in APEX Anwendungen?&lt;br /&gt;SSP schützt vor dem manuellen ändern der Browser URL durch den Endbenutzer, so dass dieser nicht einfach eine falsche ID abfragen oder beliebige Page-/Applikations-Variablen während der Laufzeit ändern kann.&lt;br /&gt; - SSP muss explizit über Shared Components &gt; Session State Protection aktiviert werden.&lt;br /&gt; - SSP kann für jede Seite und jedes Item individuell definiert werden.&lt;br /&gt; - SSP macht die Entwicklung nicht einfacher aber wesentlich sicherer.&lt;br /&gt; - SSP schützt nicht automatisch vor allen feindlichen Attacken gegen eine APEX Anwendung.&lt;br /&gt;&lt;br /&gt;Alles wichtige rund um SSP finden Sie in der APEX Dokumentation:&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/sec.htm#HTMDB12002"&gt;http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/sec.htm#HTMDB12002&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ein paar nützliche Links zum Thema SSP und APEX Sicherheit allgemein:&lt;br /&gt;&lt;a href="http://www.oracle.com/global/de/community/tipps/securitytipps/index.html"&gt;http://www.oracle.com/global/de/community/tipps/securitytipps/index.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.talkapex.com/2009/05/apex-page-access-protection-and-session.html"&gt;http://www.talkapex.com/2009/05/apex-page-access-protection-and-session.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dgielis.blogspot.com/2007/03/session-state-protection-and-url.html"&gt;http://dgielis.blogspot.com/2007/03/session-state-protection-and-url.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apps2fusion.com/at/64-kr/400-preventing-url-tampering-using-apex-session-state-protection"&gt;http://apps2fusion.com/at/64-kr/400-preventing-url-tampering-using-apex-session-state-protection&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Im Normalfall generiert APEX sichere URL's automatisch, sobald SSP aktiviert wurde. Leider ist dies in Verbindung mit manuell erstelltem Code nicht der Fall. Um eigene sichere URL's zu definieren, müssen Sie die URL mit der PL/SQL Funktion &lt;a href="http://apex.oracle.com/i/doc/AEAPI/apex_util074.htm"&gt;apex_util.prepare_url&lt;/a&gt; validieren und Sie erhalten die sichere URL als Rückgabewert. Dies funktioniert exzellent bei dynamisch erstelltem PL/SQL Code. Wenn Sie dies über eine Javascript Funktion verwenden möchten, dann brauchen Sie entweder eine Dynamic Action oder einen Application Process Aufruf, der ihnen die sichere URL zurück liefert. Ein Beispielfall könnte ein dynamischer Javascript Baum sein, dieser zur Seiten-Navigation verwendet wird. Die Baum-Daten würden via AJAX dynamisch nachgeladen werden. Bsp: &lt;a href="http://apex.oracle.com/pls/otn/f?p=65555:1"&gt;ExtJS in APEX&lt;/a&gt;&lt;br /&gt;(Dieses Beispiel zeigt nur ein mögliches Szenario, es enthält kein SSP und kein AJAX.)&lt;br /&gt;&lt;br /&gt;Die Frage ist nun: Wie bauen Sie solch einen Prozess!?&lt;br /&gt;&lt;br /&gt;Fügen Sie diesen Code ihrem Javascript Prozess hinzu:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;/* Call Application Process um eine Secure URL zu erstellen */&lt;br /&gt;  v_no_sec_url = 'f?p=25500:8:3521997579041922::NO::P8_E_ID:131'&lt;br /&gt;  /* Statt der dargestellten URL wuerden Sie eine Javascript Variable verwenden, diese die URL enthaelt. */&lt;br /&gt;      &lt;br /&gt;  /* Aufruf eines Application Prozess ueber Javascript: http://www.packtpub.com/article/ajax-implementation-apex */&lt;br /&gt;  var v_get_sec_url = new htmldb_Get(null, $v('pFlowId'),'APPLICATION_PROCESS=AP_SECURE_URL', $v('pFlowStepId'));&lt;br /&gt;      &lt;br /&gt;  /* Uebergabe Parameter 1 und 2 definieren */&lt;br /&gt;  v_get_sec_url.addParam('x01',v_no_sec_url);&lt;br /&gt;  v_get_sec_url.addParam('x02','SESSION');&lt;br /&gt;      &lt;br /&gt;  v_sec_url = v_get_sec_url.get(); /* Uebergebe APEX Wert an Javascript Variable */&lt;br /&gt;  /* alert(v_sec_url); */&lt;br /&gt; &lt;br /&gt;  window.location.href = v_sec_url /* Seite mit neuem HREF aktualisieren */&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Nun definieren Sie den Application Process - AP_SECURE_URL:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;DECLARE&lt;br /&gt; v_part1 varchar2(100);&lt;br /&gt; v_part2 varchar2(1000);&lt;br /&gt; v_url   varchar2(1200);&lt;br /&gt;BEGIN&lt;br /&gt; /* Teile URL */&lt;br /&gt; v_part1 := substr(wwv_flow.g_x01,1,instr(wwv_flow.g_x01,'f?p')-1);&lt;br /&gt; v_part2 := substr(wwv_flow.g_x01,instr(wwv_flow.g_x01,'f?p'));&lt;br /&gt; &lt;br /&gt; /* Erstelle sichere URL */&lt;br /&gt; /* Hilfe: http://apex.oracle.com/i/doc/AEAPI/apex_util074.htm */&lt;br /&gt; v_url   := APEX_UTIL.PREPARE_URL(p_url =&gt; v_part2,&lt;br /&gt;                                  p_checksum_type =&gt; wwv_flow.g_x02);&lt;br /&gt; &lt;br /&gt; /* Return mit Teil 1 und Secure URL */&lt;br /&gt; htp.p(v_part1 || v_url);&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Die erstellte URL ist aber nur die halbe Miete. Für jeden AJAX Call (Bsp: Klick auf Baum Subeinträge) muss sichergestellt werden, dass der Endbenutzer die übergebenen Parameter auch wirklich verwenden darf.&lt;br /&gt;Deswegen müssen Sie ein oder mehrere Validierungs-Checks in die Prozedur integrieren:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;DECLARE&lt;br /&gt; v_part1   varchar2(100);&lt;br /&gt; v_part2   varchar2(1000);&lt;br /&gt; v_sec_url varchar2(1200);&lt;br /&gt; &lt;br /&gt; /* Parameter fuer eigene URL Validierung */&lt;br /&gt; v_url_validation number;&lt;br /&gt; v_url_parameter  varchar2(200);&lt;br /&gt; v_url_page       varchar2(10);&lt;br /&gt;BEGIN&lt;br /&gt; /* Teile URL */&lt;br /&gt; v_part1 := substr(wwv_flow.g_x01,1,instr(wwv_flow.g_x01,'f?p')-1);&lt;br /&gt; v_part2 := substr(wwv_flow.g_x01,instr(wwv_flow.g_x01,'f?p'));&lt;br /&gt; &lt;br /&gt; /* Wichtig: Individuelle URL Validierung fuer uebergebene Parameter        */&lt;br /&gt; /* ----------------------------------------------------------------------- */&lt;br /&gt; v_url_parameter := substr(v_part2,&lt;br /&gt;                           instr(v_part2,':',1,7)+1&lt;br /&gt;         );&lt;br /&gt; v_url_page      := substr(v_part2,&lt;br /&gt;                           instr(v_part2,':',1,1)+1,&lt;br /&gt;                           instr(v_part2,':',1,2)-instr(v_part2,':',1,1)-1&lt;br /&gt;         );&lt;br /&gt; &lt;br /&gt; if (v_url_parameter in (10,20,30,40,50)&lt;br /&gt;       and v_url_page = 10)&lt;br /&gt; or (v_url_parameter in (60,70,80,90,100) &lt;br /&gt;       and v_url_page = 10 &lt;br /&gt;    and :APP_USER = 'TARNHOLD') &lt;br /&gt; then&lt;br /&gt;   v_url_validation := 1;&lt;br /&gt; else &lt;br /&gt;   v_url_validation := 0;&lt;br /&gt; end if;&lt;br /&gt; /* ----------------------------------------------------------------------- */&lt;br /&gt; &lt;br /&gt; if v_url_validation = 1 then&lt;br /&gt;   /* Wenn OK, dann erstelle sichere URL */&lt;br /&gt;   /* Hilfe: http://apex.oracle.com/i/doc/AEAPI/apex_util074.htm */&lt;br /&gt;   v_sec_url := APEX_UTIL.PREPARE_URL(p_url =&gt; v_part2,&lt;br /&gt;                                      p_checksum_type =&gt; wwv_flow.g_x02);&lt;br /&gt; &lt;br /&gt;   /* Return mit Teil 1 und Secure URL */&lt;br /&gt;   htp.p(v_part1 || v_sec_url);&lt;br /&gt; else&lt;br /&gt;   /* Bei Validierungsfehlern (falsche Parameter) auf Anmeldeseite verlinken */&lt;br /&gt;   htp.p(v_part1 || 'f?p=' || :APP_ID || ':101');&lt;br /&gt; end if;&lt;br /&gt;EXCEPTION&lt;br /&gt;  WHEN OTHERS THEN&lt;br /&gt;    /* Bei unbekannten Fehler auf Anmeldeseite verlinken */&lt;br /&gt;    htp.p(v_part1 || 'f?p=' || :APP_ID || ':101');&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Solch eine Prozedur muss alle nicht erlaubten Fremdeingaben abfangen, um die Sicherheit in ihrer Anwendung zu gewährleisten.&lt;br /&gt;Deswegen zeige ich ihnen eine noch sicherere Beispiel-Prozedur, damit eine mögliche Risikominimierung für feindliche Attacken und der Aufwand dessen deutlich wird, der für eine solche Prozedur notwendig ist:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;DECLARE&lt;br /&gt; v_part1   varchar2(100);&lt;br /&gt; v_part2   varchar2(1000);&lt;br /&gt; v_sec_url varchar2(1200);&lt;br /&gt; &lt;br /&gt; /* Parameter fuer eigene URL Validierung */&lt;br /&gt; v_url_validation number;&lt;br /&gt; v_url_app        varchar2(100);&lt;br /&gt; v_url_page       varchar2(100);&lt;br /&gt; v_url_request    varchar2(100);&lt;br /&gt; v_url_debug      varchar2(3);&lt;br /&gt; v_url_clearcache varchar2(100);&lt;br /&gt; v_url_param_name varchar2(200);&lt;br /&gt; v_url_param_val  varchar2(200);&lt;br /&gt; -- v_url_printer    varchar2(200);&lt;br /&gt;BEGIN&lt;br /&gt; /* Teile URL */&lt;br /&gt; v_part1 := substr(wwv_flow.g_x01,1,instr(wwv_flow.g_x01,'f?p')-1);&lt;br /&gt; v_part2 := substr(wwv_flow.g_x01,instr(wwv_flow.g_x01,'f?p'));&lt;br /&gt; &lt;br /&gt; /* Wichtig: Individuelle URL Validierung fuer uebergebene Parameter        */&lt;br /&gt; /* ----------------------------------------------------------------------- */&lt;br /&gt; v_url_app        := substr(v_part2,&lt;br /&gt;                            instr(v_part2,'=',1,1)+1,&lt;br /&gt;                            instr(v_part2,':',1,1)-instr(v_part2,'=',1,1)-1&lt;br /&gt;         );&lt;br /&gt; v_url_page       := substr(v_part2,&lt;br /&gt;                            instr(v_part2,':',1,1)+1,&lt;br /&gt;                            instr(v_part2,':',1,2)-instr(v_part2,':',1,1)-1&lt;br /&gt;         );&lt;br /&gt; v_url_request    := substr(v_part2,&lt;br /&gt;                            instr(v_part2,':',1,3)+1,&lt;br /&gt;                            instr(v_part2,':',1,4)-instr(v_part2,':',1,3)-1&lt;br /&gt;         );&lt;br /&gt; v_url_debug      := substr(v_part2,&lt;br /&gt;                            instr(v_part2,':',1,4)+1,&lt;br /&gt;                            instr(v_part2,':',1,5)-instr(v_part2,':',1,4)-1&lt;br /&gt;         );&lt;br /&gt; v_url_clearcache := substr(v_part2,&lt;br /&gt;                            instr(v_part2,':',1,5)+1,&lt;br /&gt;                            instr(v_part2,':',1,6)-instr(v_part2,':',1,5)-1&lt;br /&gt;         );&lt;br /&gt; v_url_param_name := substr(v_part2,&lt;br /&gt;                            instr(v_part2,':',1,6)+1,&lt;br /&gt;                            instr(v_part2,':',1,7)-instr(v_part2,':',1,6)-1&lt;br /&gt;         );&lt;br /&gt; v_url_param_val  := substr(v_part2,&lt;br /&gt;                            instr(v_part2,':',1,7)+1&lt;br /&gt;         );&lt;br /&gt;/* TEST&lt;br /&gt;htp.p( 'v_url_app: ' || v_url_app || ' ,v_url_page: ' || v_url_page || ' ,v_url_request: ' || v_url_request &lt;br /&gt;    || ' ,v_url_debug: ' || v_url_debug || ' ,v_url_clearcache: ' || v_url_clearcache &lt;br /&gt;    || ' ,v_url_param_name: ' || v_url_param_name || ' ,v_url_param_val: ' || v_url_param_val&lt;br /&gt;    );&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt; if    v_url_app IN (:APP_ID,:APP_ALIAS) &lt;br /&gt;   AND v_url_request is null&lt;br /&gt;   AND v_url_debug = 'NO'&lt;br /&gt;   AND (&lt;br /&gt;            v_url_page IN ('1','2','3','4','5') &lt;br /&gt;            and v_url_param_name is null&lt;br /&gt;            and v_url_param_val is null&lt;br /&gt;        OR   v_url_page = '10' &lt;br /&gt;            and v_url_param_name IN ('P10_MFD_ID')&lt;br /&gt;            and v_url_param_val IN (1,14,15,16,17,19) /* Koennte auch ein Sub Select sein*/&lt;br /&gt;            and length(v_url_param_val)-length(replace(v_url_param_val,',','')) = 0&lt;br /&gt;        OR v_url_page = '20' &lt;br /&gt;            and v_url_clearcache = '20'&lt;br /&gt;            and v_url_param_name IN ('P20_KLT_ID') &lt;br /&gt;            and v_url_param_val IN (100,200,300,400,500,600) /* Koennte auch ein Sub Select sein*/&lt;br /&gt;            and length(v_url_param_val)-length(replace(v_url_param_val,',','')) = 0&lt;br /&gt;        OR v_url_page = '30' &lt;br /&gt;            and v_url_clearcache = '30'&lt;br /&gt;            and v_url_param_name IN ('P30_KLS_ID,P30_KLS_PAR1') &lt;br /&gt;            and substr(v_url_param_val,1,instr(v_url_param_val,',')-1) IN (1000,2000,3000,4000,5000,6000)&lt;br /&gt;            and length(v_url_param_val)-length(replace(v_url_param_val,',','')) = 1&lt;br /&gt;        )&lt;br /&gt; then&lt;br /&gt;   v_url_validation := 1;&lt;br /&gt; else &lt;br /&gt;   v_url_validation := 0;&lt;br /&gt; end if;&lt;br /&gt; /* ----------------------------------------------------------------------- */&lt;br /&gt; &lt;br /&gt; if v_url_validation = 1 then&lt;br /&gt;   /* Wenn OK, dann erstelle sichere URL */&lt;br /&gt;   /* Hilfe: http://apex.oracle.com/i/doc/AEAPI/apex_util074.htm */&lt;br /&gt;   /* Der Parameter: p_checksum_type sollte fest über die Prozedur gesteuert werden */&lt;br /&gt;   v_sec_url := APEX_UTIL.PREPARE_URL(p_url =&gt; v_part2,&lt;br /&gt;                                      p_checksum_type =&gt; 'SESSION');&lt;br /&gt; &lt;br /&gt;   /* Return mit Teil 1 und Secure URL */&lt;br /&gt;   htp.p(v_part1 || v_sec_url);&lt;br /&gt; else&lt;br /&gt;   /* Bei Validierungsfehlern (falsche Parameter) auf Anmeldeseite verlinken */&lt;br /&gt;   htp.p(v_part1 || v_part2);&lt;br /&gt;   -- htp.p(v_part1 || 'f?p=' || :APP_ID || ':101');&lt;br /&gt; end if;&lt;br /&gt;EXCEPTION&lt;br /&gt;  WHEN OTHERS THEN&lt;br /&gt;    /* Bei unbekannten Fehler auf Anmeldeseite verlinken */&lt;br /&gt;    htp.p(v_part1 || 'f?p=' || :APP_ID || ':101');&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Was schließt man daraus: Schönheit kann ganz schön teuer (aufwendig) werden. :) Wer hätte das gedacht.&lt;br /&gt;&lt;br /&gt;Fazit: Die Verwendung von SSP mit Standard APEX Funktionalität bietet ohne großes Wissen die meiste Sicherheit. Bei der Verwendung von eigenen Erweiterungen, muss auf die oben beschriebenen Sicherheitsaspekte Wert gelegt werden. Deswegen ist es auch von Vorteil solche Erweiterungen in Plug-Ins auszulagern. Mehr Infos dazu erhalten Sie in meinem letzten APEX Community Beitrag: &lt;a href="http://www.oracle.com/webfolder/technetwork/de/community/apex/tipps/HowToDynamicActionPlugin/index.html"&gt;HowTo: APEX 4.0 Dynamic Action Plugins&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wenn Sie Unterstützung bei APEX Security Themen benötigen, dann können Sie sich natürlich immer an &lt;a href="mailto:tobias-arnhold@hotmail.de"&gt;mich (Tobias Arnhold - tobias-arnhold@hotmail.de)&lt;/a&gt; wenden. Ein wahrer Kenner auf dem Gebiet "APEX Security" ist &lt;a href="http://deneskubicek.blogspot.com/"&gt;Denes Kubicek&lt;/a&gt;, dieser auch spezielle Schulungen zum Thema APEX anbietet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-9027130866422994776?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/9027130866422994776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=9027130866422994776&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9027130866422994776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9027130866422994776'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/sichere-urls-mit-einem-application.html' title='Sichere URLs mit einem Application Process erstellen'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-4786512889228387469</id><published>2011-02-14T22:20:00.003+01:00</published><updated>2011-02-14T22:47:24.883+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='UILayout'/><title type='text'>UILayout: Hide half loaded elements</title><content type='html'>One of the problems of an layout extension is the initialization time.&lt;br /&gt;Normally the UILayout needs a couple of seconds to initialize (1-3). Depending on your server connection, your client hardware and your browser (IE6 is slow, FF 3.6 is fast).&lt;br /&gt;&lt;br /&gt;To show a similar loading frame like the ExtJS Loading Icon &lt;a href="http://apex.oracle.com/pls/apex/f?p=65555:1"&gt;http://apex.oracle.com/pls/apex/f?p=65555:1&lt;/a&gt; use this trick:&lt;br /&gt;&lt;br /&gt;Add the following code to the beginning of your Page Template Body or add a new HTML region (No template) on page 0:&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;div style="width: 100%; height: 100%; position: absolute; left: 0pt; top: 0pt; background-color: rgb(255, 255, 255); z-index: 4000; opacity: 0.8; display: block;" id="loadingBackground"&gt;&lt;br /&gt;&amp;lt;div style="height: auto;left: 50%;position: absolute;top: 50%;text-align: center; color: #555555;font-size: 18px;font-family:Arial,Helvetica,Geneva,sans-serif;padding:8px;42px;"&gt; ... Loading ... &amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After the initialization of the UILaoyut plug-in use the LoadingIcon plug-in with the option "Stop LoadingIcon"&lt;br /&gt;&lt;br /&gt;The initialization feels much smoother now.&lt;br /&gt;&lt;br /&gt;Example: &lt;a href="http://apex.oracle.com/pls/apex/f?p=AAW_PLUGINS:UILAYOUT_PLUGIN"&gt;http://apex.oracle.com/pls/apex/f?p=AAW_PLUGINS:UILAYOUT_PLUGIN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-4786512889228387469?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/4786512889228387469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=4786512889228387469&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4786512889228387469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4786512889228387469'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/uilayout-hide-half-loaded-elements.html' title='UILayout: Hide half loaded elements'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3673020370221180833</id><published>2011-02-02T19:32:00.006+01:00</published><updated>2011-02-06T00:30:46.890+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Hide/Show APEX items and labels with jQuery</title><content type='html'>To hide or show items and labels with jQuery use this syntax:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;  $('#P1_NAME').hide();&lt;br /&gt;  $('#P1_NAME').parent().hide();&lt;br /&gt;  $('#P1_COMPANY').show();&lt;br /&gt;  $('#P1_COMPANY').parent().show(); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 06.02.2011:&lt;/span&gt;&lt;br /&gt;Peter mentioned right that this example only works when your item label is set to &lt;span style="font-weight:bold;"&gt;above&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Short way:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;  $('#P1_NAME').hide().parent().hide();&lt;br /&gt;  $('#P1_COMPANY').show().parent().show(); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;@Jaydip&lt;br /&gt;"I want to remove those hidden item space. Is it possible by using your method?" - No&lt;br /&gt;I guess you would need to move these hidden items to another place and move them back when they are not hidden. With jQuery you could use appendTo(). I don't know if it works or not? But you would need ID's for your regions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3673020370221180833?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3673020370221180833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3673020370221180833&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3673020370221180833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3673020370221180833'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/02/hideshow-apex-items-and-labels-with.html' title='Hide/Show APEX items and labels with jQuery'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8341672602938064851</id><published>2011-01-30T00:50:00.005+01:00</published><updated>2011-02-09T19:43:29.268+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UILayout'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>UILayout plug-in for APEX updated to version 1.2</title><content type='html'>What's new:&lt;br /&gt; - New plug-in for the styling of the UILayout. Styling is now completely supported by either the plug-in or your own CSS files.&lt;br /&gt; - Bug fixes and small improvements inside the initialization plug-in.&lt;br /&gt;&lt;br /&gt;Example application: &lt;a href="http://apex.oracle.com/pls/apex/f?p=65560:1"&gt;http://apex.oracle.com/pls/apex/f?p=65560:1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the complete documentation:&lt;br /&gt;&lt;div style="width:477px" id="__ss_6748144"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/TobiasArnhold/uilayout-plugin-for-apex" title="UILayout plug-in for APEX"&gt;UILayout plug-in for APEX&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse6748144" width="477" height="510"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/doc_player.swf?doc=documentationen-110129174931-phpapp02&amp;stripped_title=uilayout-plugin-for-apex&amp;userName=TobiasArnhold" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse6748144" src="http://static.slidesharecdn.com/swf/doc_player.swf?doc=documentationen-110129174931-phpapp02&amp;stripped_title=uilayout-plugin-for-apex&amp;userName=TobiasArnhold" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="477" height="510"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a href="http://www.slideshare.net/TobiasArnhold"&gt;TobiasArnhold&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 09.02.2011:&lt;/span&gt;&lt;br /&gt;Just released version 1.2.1 which includes some bug fixes for the initialization part.&lt;br /&gt; - APEX had some issues because the div elements were out of the form element. &lt;br /&gt; - Radio button just moved to next then icon when you refreshed the page. Without changing the radio item.&lt;br /&gt;&lt;br /&gt;You can download the current version here: &lt;a href="http://www.apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/uilayout-part-1-initialize_77.html"&gt;UILayout plug-in for APEX 1.2.1 - www.apex-plugin.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8341672602938064851?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8341672602938064851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8341672602938064851&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8341672602938064851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8341672602938064851'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/01/uilayout-plug-in-for-apex-updated-to.html' title='UILayout plug-in for APEX updated to version 1.2'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7322934560102417097</id><published>2011-01-22T00:48:00.002+01:00</published><updated>2011-01-22T00:51:45.264+01:00</updated><title type='text'>UILayout Plug-in update is online</title><content type='html'>A new version of the UILayout plug-in for APEX is online on www.apex-plugin.com: &lt;a href="http://www.apex-plugin.com/index.php?option=com_sobi2&amp;sobi2Task=sobi2Details&amp;sobi2Id=77&amp;Itemid=1&amp;Itemid=1"&gt;UILayout 1.1 - Update&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I added a couple of features. Like sizing, disabling of areas, Dynamic actions during runtime, IR Bug - Solution,...&lt;br /&gt;&lt;br /&gt;Hope for some feedback.&lt;br /&gt;&lt;br /&gt;Tobias&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7322934560102417097?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7322934560102417097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7322934560102417097&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7322934560102417097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7322934560102417097'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/01/uilayout-plug-in-update-is-online.html' title='UILayout Plug-in update is online'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6135908427974639920</id><published>2011-01-09T21:44:00.004+01:00</published><updated>2011-01-09T22:08:12.231+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>UILayout Plugin Design Issues</title><content type='html'>I finished the first part of the UILayout Plug-in. For me it is the first plug-in as well. Any feedback is much appreciated.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7ko33pi4F4/TSojqcDFmCI/AAAAAAAAAVI/3ArtIU7iMaE/s1600/Example1New.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 165px;" src="http://3.bp.blogspot.com/_A7ko33pi4F4/TSojqcDFmCI/AAAAAAAAAVI/3ArtIU7iMaE/s400/Example1New.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5560295901932918818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It handles the initialization of the UILayout and the moving of the APEX template ID's/Classes to the UILayout areas by the plug-in or by the template.&lt;br /&gt;&lt;br /&gt;Now I'm thinking about the second part. It will handle the sizing of each area: NORTH, SOUTH, WEST and EAST.&lt;br /&gt;&lt;br /&gt;There are 7 settings for each area:&lt;br /&gt; - Display: Yes/No&lt;br /&gt; - Closable: Yes/No&lt;br /&gt; - Resizable: Yes/No&lt;br /&gt; - Slidable: Yes/No&lt;br /&gt; - Size: (Number value like "250" as px)&lt;br /&gt; - Min-Size: (Number value like "150" as px)&lt;br /&gt; - Max-Size: (Number value like "350" as px)&lt;br /&gt;&lt;br /&gt;I could either create one plug-in for all areas with comma separated values or create 4 plug-ins for each area one plug-in.&lt;br /&gt;&lt;br /&gt;What is more troubling for the end user?&lt;br /&gt;&lt;br /&gt;Version 1 - One Plug-in:&lt;br /&gt;Example based on the following logic: NORTH,SOUTH,WEST,EAST&lt;br /&gt; - Display: yes,yes,yes,no&lt;br /&gt; - Closable: no,no,yes,no&lt;br /&gt; - Resizable: no,no,yes,no&lt;br /&gt; - Slidable: no,no,yes,no&lt;br /&gt; - Size: 150,100,400,0&lt;br /&gt; - Min-Size: 0,0,300,0&lt;br /&gt; - Max-Size: 0,0,800,0&lt;br /&gt;&lt;br /&gt;For me it looks quite difficult making the correct settings!&lt;br /&gt;&lt;br /&gt;Version 2 - Four Plug-ins:&lt;br /&gt;Example based on the NORTH area:&lt;br /&gt; - Display: yes&lt;br /&gt; - Closable: no&lt;br /&gt; - Resizable: no&lt;br /&gt; - Size: 150&lt;br /&gt;&lt;br /&gt;Example based on the WEST area:&lt;br /&gt; - Display: yes&lt;br /&gt; - Closable: yes&lt;br /&gt; - Resizable: yes&lt;br /&gt; - Slidable: yes&lt;br /&gt; - Size: 400&lt;br /&gt; - Min-Size: 300&lt;br /&gt; - Max-Size: 800&lt;br /&gt;&lt;br /&gt;For me it looks much easier to set it correctly. But the end user would need to install all 4 plug-ins.&lt;br /&gt;&lt;br /&gt;What do you think?&lt;br /&gt;&lt;br /&gt;By the way you can try the first plug-in here: &lt;a href="http://apex.oracle.com/pls/otn/f?p=65560:1"&gt;http://apex.oracle.com/pls/otn/f?p=65560:1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can download it from apex-plugin.com: &lt;a href="http://www.apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/uilayout-part-1-initialize_77.html"&gt;http://www.apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/uilayout-part-1-initialize_77.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If nobody answers I will probably create 4 similar plug-ins for each area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6135908427974639920?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6135908427974639920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6135908427974639920&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6135908427974639920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6135908427974639920'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2011/01/uilayout-plugin-design-issues.html' title='UILayout Plugin Design Issues'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7ko33pi4F4/TSojqcDFmCI/AAAAAAAAAVI/3ArtIU7iMaE/s72-c/Example1New.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5123792192274204529</id><published>2010-12-20T22:53:00.006+01:00</published><updated>2010-12-30T12:24:25.893+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX Plugin'/><title type='text'>First impressions of developing an APEX plugin</title><content type='html'>After spending a couple of hours in building my first plugin. I came to the conclusion to create a plug-in which uses the UILayout technology. My first idea was to build my own solution. After studying the documentation of UILayout I only thought that's the tool I want to work with! :)&lt;br /&gt;&lt;br /&gt;Now after I created a working template I thought of how to include this into a plug-in?&lt;br /&gt;&lt;br /&gt;First idea: Don't change anything on the page template if you have a similar organization of your page (North, West, South, East, Center)!&lt;br /&gt;You say what you want in what area of the UILayout (West, North, Center...) inside the plug-in. To achieve that you take ID's or Classes of the main elements of your page template.&lt;br /&gt;Part of the standard page template:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7ko33pi4F4/TQ_VTmtV6hI/AAAAAAAAAUw/hjZ8BKhiL9A/s1600/template_example.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 213px;" src="http://1.bp.blogspot.com/_A7ko33pi4F4/TQ_VTmtV6hI/AAAAAAAAAUw/hjZ8BKhiL9A/s400/template_example.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5552891398356068882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plugin settings:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7ko33pi4F4/TQ_Um0E_7_I/AAAAAAAAAUo/1z-5VN7hJ2g/s1600/plugin_settings.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 177px;" src="http://4.bp.blogspot.com/_A7ko33pi4F4/TQ_Um0E_7_I/AAAAAAAAAUo/1z-5VN7hJ2g/s400/plugin_settings.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5552890628850839538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you see I almost only use the standard ID's. Only the west div is not part of the original template.&lt;br /&gt;&lt;br /&gt;After I created a first easy solution. I thought about the source code and the available attributes in the APEX plugin (max. 10)! 10 Attributes would only be enough for the sizing of the areas and would never be enough for all settings I need.&lt;br /&gt;&lt;br /&gt;Second idea: I will build several modular plug-ins where everyone creates a special part of the layout.&lt;br /&gt; 1. Layout creation and region assigning&lt;br /&gt; 2. Area sizing (Size, Min-Size, Max-Size, No area at all)&lt;br /&gt; 3. Look and Feel (background-color,border-color,...)&lt;br /&gt; 4. Place for more ideas like Dynamic Layout Add-ons&lt;br /&gt;&lt;br /&gt;What do you think? Developing a plug-in like that makes it maybe more complicated to configure. On the other side I would need comma separated lists if I only would use one plug-in!&lt;br /&gt;&lt;br /&gt;Your opinion is appreciated.&lt;br /&gt;&lt;br /&gt;Anyway I wish everybody a Merry Christmas and a successful APEX year 2011!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5123792192274204529?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5123792192274204529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5123792192274204529&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5123792192274204529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5123792192274204529'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/12/first-impressions-of-developing-apex.html' title='First impressions of developing an APEX plugin'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7ko33pi4F4/TQ_VTmtV6hI/AAAAAAAAAUw/hjZ8BKhiL9A/s72-c/template_example.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3980933806505733439</id><published>2010-12-20T18:56:00.003+01:00</published><updated>2010-12-20T19:03:11.206+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>Problem refreshing Interactive Report with Dynamic Action</title><content type='html'>It happened now two times that I wanted to update an IRR by a Dynamic Action. It just did not worked! The Dynamic Action fired (I saw that by debugging with Firebug and APEX) but the Report did not update. Finding the solution costs me some minutes/hours!&lt;br /&gt;&lt;br /&gt;Reason: I assigned no Region template to the IRR (User Interface &gt; Template : No Template)&lt;br /&gt;&lt;br /&gt;Solution: I created a new empty region template and used that instead of "No Template".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3980933806505733439?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3980933806505733439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3980933806505733439&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3980933806505733439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3980933806505733439'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/12/problem-refreshing-interactive-report.html' title='Problem refreshing Interactive Report with Dynamic Action'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-9024155691568858149</id><published>2010-12-15T20:11:00.009+01:00</published><updated>2010-12-16T07:48:30.575+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>Ein paar nützliche Informationen zum APEX Autocomplete Item</title><content type='html'>&lt;b&gt;1.&lt;/b&gt; Das Item basiert auf dem JQuery Plugin: &lt;a href="http://docs.jquery.com/Plugins/autocomplete"&gt;Autocomplete&lt;/a&gt;. Wenn Sie nähere Informationen zur Funktionsweise suchen, dann schauen Sie auf dieser Seite nach.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&lt;/b&gt; Tyler Muth erstellte unter APEX 3 eine Erweiterung für APEX: &lt;a href="http://tylermuth.wordpress.com/2010/03/16/jquery-autocomplete-for-apex/"&gt;jquery-autocomplete-for-apex&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.&lt;/b&gt; Seit APEX 4 ist es ein Standard Item Type&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.&lt;/b&gt; Innerhalb des APEX Items können Sie spezielle Einstellungen für diesen Item Type vornehmen. Die wichtigste Einstellung ist die "Search"-Einstellung, Sie beinhaltet "Exact" oder "Contains" zur Auswahl.&lt;br /&gt;Der entscheidende Unterschied ist die Art der Suche! &lt;br /&gt;Bei dem Exact Verfahren wird ein Select ähnlich diesem während der Laufzeit aufgebaut:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;-- Exact&lt;br /&gt;SELECT a.*&lt;br /&gt;FROM (SELECT DISTINCT CITY AS RV&lt;br /&gt;      FROM  address_data ad&lt;br /&gt;      WHERE ad.country = :P1_COUNTRY &lt;br /&gt;      ORDER BY 1) a&lt;br /&gt;WHERE "RV" LIKE :p$_search_string || '%' AND ROWNUM &lt;= :p$_max_rows;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Wobei bei dem Contains Verfahren die INSTR Funktion verwendet wird:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;SELECT   a.*&lt;br /&gt;  FROM   (  SELECT   DISTINCT CITY AS RV&lt;br /&gt;              FROM   address_data ad&lt;br /&gt;             WHERE   country_id = :P1_COUNTRY&lt;br /&gt;          ORDER BY   1) a&lt;br /&gt; WHERE   INSTR ("RV", :p$_search_string) &gt; 0 AND ROWNUM &lt;= :p$_max_rows;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bei der Verwendung von Indizes kann diese Info von entscheidenden Vorteil sein.&lt;/span&gt;&lt;br /&gt;Ich habe zu diesem Thema vor kurzem auch eine Forum Anfrage gestartet: &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9208942"&gt;Problem with Textfield autocomplete --&gt; only uses the INSTR function&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt; Speichern Sie Werte nach jeder Eingabe durch eine Dynamic Action in der APEX Session &lt;span style="font-style:italic;"&gt;*&lt;/span&gt;:&lt;br /&gt;Event: Lose Focus&lt;br /&gt;Selection Type: Item(s)&lt;br /&gt;Item(s): P1_CITY&lt;br /&gt;TRUE Action: Execute PL/SQL Code&lt;br /&gt;PL/SQL Code: null;&lt;br /&gt;Page Items To Submit: P1_CITY&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6.&lt;/b&gt; Löschen Sie den Cache der Autocomplete Ergebnisliste durch eine Dynamic Action &lt;span style="font-style:italic;"&gt;*&lt;/span&gt;:&lt;br /&gt;Event: Lose Focus&lt;br /&gt;Selection Type: Item(s)&lt;br /&gt;Item(s): P1_CITY&lt;br /&gt;TRUE Action: Execute Javascript Code&lt;br /&gt;Code: $('#P1_STREET').flushCache(); $('#P1_ZIP').flushCache();&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7.&lt;/b&gt; Sie können durch ein wenig Aufwand auch direkt durch TAB in das nächstes Input Item springen (Achtung: Item zurück SHIFT-TAB ist in der Lösung nicht möglich!)&lt;br /&gt;Event: &lt;span style="font-weight:bold;"&gt;Key Release&lt;/span&gt;&lt;br /&gt;Selection Type: Item(s)&lt;br /&gt;Item(s): P1_CITY&lt;br /&gt;TRUE Action: Execute Javascript Code&lt;br /&gt;Code:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;var vEvent  = this.browserEvent.keyCode;&lt;br /&gt;var vEl     = this.triggeringElement;&lt;br /&gt;var vName   = this.triggeringElement.id;&lt;br /&gt;var vButton = "9"; /* TAB Key */&lt;br /&gt;&lt;br /&gt;/* Check ob Event TAB Press ist */&lt;br /&gt;if (vEvent == vButton){&lt;br /&gt;&lt;br /&gt;  if (vName == 'P1_CITY'){&lt;br /&gt;    /* Flush Cache aller anderen Autocomplete Items */&lt;br /&gt;    $('#P1_ZIP').flushCache(); $('#P1_STREET').flushCache();&lt;br /&gt;    /* Sprung in naechstes Item - manuelle Vorgabe */&lt;br /&gt;    setTimeout(function() {$('#P1_STREET').focus();}, 1);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if (vName == 'P1_STREET'){&lt;br /&gt;    $('#P1_ZIP').flushCache(); $('#P1_CITY').flushCache();&lt;br /&gt;    setTimeout(function() {$('#P1_STREET_NO').focus();}, 1);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8.&lt;/b&gt; Aktuell fehlt noch das Lade-Icon das während der Suche im Item angezeigt wird. Dieses Problem wird in APEX 4.1 behoben sein. Workaround: &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9195972"&gt;APEX Page item Text Field with autocomplete doesn't show load icon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;*&lt;/span&gt; Wichtig bei der Verwendung mehrerer Autocomplete Items auf einer Seite, da sonst der Such-Wert fehlen könnte!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-9024155691568858149?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/9024155691568858149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=9024155691568858149&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9024155691568858149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9024155691568858149'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/12/ein-paar-nutzliche-informationen-zum.html' title='Ein paar nützliche Informationen zum APEX Autocomplete Item'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6065886865022143302</id><published>2010-12-12T22:46:00.004+01:00</published><updated>2010-12-12T23:06:03.097+01:00</updated><title type='text'>Working on my first APEX Plugin</title><content type='html'>It gets time to start developing my first APEX Plugin. I thought first to develop an addon with the JQuery UI.Layout for APEX.&lt;br /&gt;&lt;br /&gt;Layout manager like ExtJS or UI.Layout are nice but hard to integrate. Especially for the different APEX templates and there specific design.&lt;br /&gt;&lt;br /&gt;Instead of using one of these plugins I develop my own one. Which only uses a dynamic left area (west) and makes the center area (body) depended on the left area.&lt;br /&gt;&lt;br /&gt;My goal is that the new plugin runs nice with the new standard APEX templates. Older templates should easily be migrate able.&lt;br /&gt;&lt;br /&gt;First pictures:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7ko33pi4F4/TQVGmoflBFI/AAAAAAAAAUg/yX_LPbvJEUE/s1600/nav_description.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 156px;" src="http://3.bp.blogspot.com/_A7ko33pi4F4/TQVGmoflBFI/AAAAAAAAAUg/yX_LPbvJEUE/s400/nav_description.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5549919745322845266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7ko33pi4F4/TQVGmqDJemI/AAAAAAAAAUY/zR_Ir-x_Rw4/s1600/nav_1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 155px;" src="http://3.bp.blogspot.com/_A7ko33pi4F4/TQVGmqDJemI/AAAAAAAAAUY/zR_Ir-x_Rw4/s400/nav_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5549919745740470882" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6065886865022143302?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6065886865022143302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6065886865022143302&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6065886865022143302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6065886865022143302'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/12/working-on-my-first-apex-plugin.html' title='Working on my first APEX Plugin'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7ko33pi4F4/TQVGmoflBFI/AAAAAAAAAUg/yX_LPbvJEUE/s72-c/nav_description.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2248057001869712583</id><published>2010-12-11T00:04:00.003+01:00</published><updated>2010-12-11T01:04:23.741+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Preload images in APEX</title><content type='html'>Sometimes images doesn't appear immediately (for example loading icons called before onSubmit processes). Especially new users who doesn't have these images inside there browser cache could be happy to see them. :)&lt;br /&gt;&lt;br /&gt;The workaround is quite easy. Just create a Dynamic Action like below:&lt;br /&gt;&lt;br /&gt;Create Dynamic Action: preload_images&lt;br /&gt;Event: Page Load&lt;br /&gt;Action: Execute JavaScript Code&lt;br /&gt;Code:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;var a_imgList = new Array();&lt;br /&gt;// Your images&lt;br /&gt;a_imgList[0] = "/i/company/loading1.gif";&lt;br /&gt;a_imgList[1] = "/i/company/loading2.gif";&lt;br /&gt;a_imgList[2] = "/i/company/button1.gif";&lt;br /&gt;a_imgList[3] = "/i/company/button2.gif";&lt;br /&gt;&lt;br /&gt;var a_images = new Array()&lt;br /&gt;&lt;br /&gt;for (i = 0; i &lt; a_imgList.length; i++) {&lt;br /&gt;    a_images[i] = new Image();&lt;br /&gt;    a_images[i].src = a_imgList[i];&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Create Dynamic Action&lt;br /&gt;&lt;br /&gt;That's it! You probably would add this event on your login page 101.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2248057001869712583?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2248057001869712583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2248057001869712583&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2248057001869712583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2248057001869712583'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/12/preload-images-in-apex.html' title='Preload images in APEX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1872331250770025390</id><published>2010-11-20T23:30:00.005+01:00</published><updated>2010-11-21T00:18:52.097+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='Development tools'/><category scheme='http://www.blogger.com/atom/ns#' term='DE'/><title type='text'>Troubleshooting in der Firefox Entwicklung</title><content type='html'>In der Entwicklung von APEX Anwendungen verwende ich ausschließlich den Firefox (FF) Browser. Zum abschließenden Test kommt dann der entsprechende Standard-Browser zum Einsatz. Für gewöhnlich ist das der IE und leider ist dieser nicht so gut für die Entwicklung geeignet wie der FF.&lt;br /&gt;Manchmal kann es vorkommend das unter bestimmten Situationen der FF nicht das darstellt was er soll. Dies kann leicht mit einem anderen Browser gegen geprüft werden. In so einem Fall können folgende 3 Optionen angepasst werden, um den Fehler auf die Spur zukommen.&lt;br /&gt;&lt;br /&gt;1. Starten Sie ihre Seite ohne den Zugriff auf Cache-Informationen&lt;br /&gt; - Nutzen Sie für die temporäre Nutzung den Privat-Modus&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/TOhUgP1zE_I/AAAAAAAAATo/y6qFMEMilM0/s1600/private_mode.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 334px; height: 371px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/TOhUgP1zE_I/AAAAAAAAATo/y6qFMEMilM0/s400/private_mode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5541772254464119794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; - Oder für die ständige Nutzung die entsprechende Einstellung in den Firefox Einstellungen&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/TOhUgsy9-MI/AAAAAAAAATw/XWarOEHgSyc/s1600/Kein_logging.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 363px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/TOhUgsy9-MI/AAAAAAAAATw/XWarOEHgSyc/s400/Kein_logging.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5541772262236879042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Schauen Sie ob die Proxy-Einstellungen korrekt sind und ihr APEX Server über die Proxy-Ausnahmen definiert ist&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/TOhUg6VwZsI/AAAAAAAAAT4/uEdeibgtsrA/s1600/Proxy-Einstellungen.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 377px; height: 400px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/TOhUg6VwZsI/AAAAAAAAAT4/uEdeibgtsrA/s400/Proxy-Einstellungen.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5541772265872451266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Unter umständen verwenden Sie unterschiedliche Sprachen, manchmal kann es helfen die Original-Sprache der Anwendung bzw. der Daten zu definieren&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7ko33pi4F4/TOhUhORNrPI/AAAAAAAAAUA/ktlI2ng9VR8/s1600/Sprachen.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 363px;" src="http://4.bp.blogspot.com/_A7ko33pi4F4/TOhUhORNrPI/AAAAAAAAAUA/ktlI2ng9VR8/s400/Sprachen.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5541772271222107378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7ko33pi4F4/TOhUhXFRs-I/AAAAAAAAAUI/94pctnJKntQ/s1600/Sprachen_details.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://1.bp.blogspot.com/_A7ko33pi4F4/TOhUhXFRs-I/AAAAAAAAAUI/94pctnJKntQ/s400/Sprachen_details.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5541772273587958754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fehler dieser Sorte treten meist zu Beginn der Anwendungsentwicklung auf und sind während der Entwicklung &lt;span style="font-weight:bold;"&gt;sehr selten&lt;/span&gt; anzutreffen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1872331250770025390?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1872331250770025390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1872331250770025390&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1872331250770025390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1872331250770025390'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/11/troubleshooting-in-der-firefox.html' title='Troubleshooting in der Firefox Entwicklung'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7ko33pi4F4/TOhUgP1zE_I/AAAAAAAAATo/y6qFMEMilM0/s72-c/private_mode.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5791780190207918955</id><published>2010-11-19T23:05:00.005+01:00</published><updated>2010-11-19T23:18:00.532+01:00</updated><title type='text'>Select current APEX version and user schema</title><content type='html'>If you didn't know how you can easily select the current APEX version or the current APEX database user APEX_xxxxx. You can use these selects:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;-- Select current APEX user over all_users/dba_users&lt;br /&gt;select max(u1.username) as current_apex_user &lt;br /&gt; from all_users u1 &lt;br /&gt; where u1.username like 'APEX%' &lt;br /&gt; and REGEXP_LIKE (substr(u1.username,'6',1), '^[0-9]*$');&lt;br /&gt;&lt;br /&gt;-- CURRENT_APEX_USER&lt;br /&gt;---------------------&lt;br /&gt;-- APEX_040000&lt;br /&gt;&lt;br /&gt;-- Select current version over dba_registry&lt;br /&gt;select comp_name, version from dba_registry&lt;br /&gt; where comp_name = 'Oracle Application Express';&lt;br /&gt;&lt;br /&gt;-- COMP_NAME                    VERSION_NO&lt;br /&gt;-------------------------------------------&lt;br /&gt;-- Oracle Application Express   4.0.1.00.03  &lt;br /&gt;&lt;br /&gt;-- Select current version over apex_release&lt;br /&gt;select * from apex_release;&lt;br /&gt;&lt;br /&gt;-- VERSION_NO     API_COMPATIBILITY    PATCH_APPLIED&lt;br /&gt;----------------------------------------------------&lt;br /&gt;-- 4.0.1.00.03    2010.05.13           null    &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5791780190207918955?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5791780190207918955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5791780190207918955&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5791780190207918955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5791780190207918955'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/11/select-current-apex-version-and-user.html' title='Select current APEX version and user schema'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6764307313143395037</id><published>2010-11-18T18:50:00.005+01:00</published><updated>2010-11-18T20:01:00.161+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DOAG'/><title type='text'>DOAG 2010 Eindrücke vom ersten Tag (16.11)</title><content type='html'>Nach einer echt teuflischen Anreise die aus Stau, Baustellen und jeder menge Regen bestand, konnte der eigentliche DOAG Tag nur besser werden.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Den ersten Vortrag hielt &lt;a href="http://sueharper.blogspot.com/"&gt;Sue Harper&lt;/a&gt; zum Thema SQL Developer 3.0: New Features:&lt;/span&gt;&lt;br /&gt;Dem SQL Developer wurden wirklich Interessante neue Features integriert. Das für mich bisher beste neue Feature ist der Migrations-Assistent der fast komplett neu geschrieben wurde und auch schon in der EA1 fast anstandslos läuft. Online Migration vom MS SQL Server klappte schon recht gut in Version EA1 und die Migration von MS Access lief ja auch schon unter Version 2 sehr gut. Andere vorgestellte Features wurden der bisherigen Version EA1, noch nicht beigefügt oder sind noch etwas fehleranfällig. Ich rate auf den nächsten Release Kandidaten zu warten. Eventuell wird auch der Data Modeller in der neuen Version vollständig integriert sein.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Der anschließende Vortag handelte sich um APEX 4.0 Kollaboration mit Websheets &amp; Team-Development von &lt;a href="http://marcsewtz.blogspot.com/"&gt;Marc Sewtz&lt;/a&gt;:&lt;/span&gt;&lt;br /&gt;Endlich habe ich mal tiefere Einblicke in die wirklichen Hintergründe und die unterschiedlichen Funktionsweisen der neuen APEX Features nehmen können. Ein gelungener Vortrag mit einigen Neuigkeiten rund um Websheets und Team-Development.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Weiter ging es zum Raum Seoul: BMW ConnectedDrive auf Basis von Oracle Spatial (&lt;a href="http://sql-plsql-de.blogspot.com/"&gt;Carsten Czarski&lt;/a&gt; und Christian Hüls):&lt;/span&gt;&lt;br /&gt;Einer der besten Vorträge an diesem Tag, der zeigte was mit heutiger Technik praktisch möglich ist. Diese Features würden mich glatt dazu bekräftigen mir einen BMW zuzulegen, aber mein Leasing läuft noch ne Weile! :) Egal... Super Vortrag von beiden Vortragenden!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Danach gab es ne praktische Session von Marc Sewtz und &lt;a href="http://www.inside-oracle-apex.com/"&gt;Patrick Wolf&lt;/a&gt; zu neuen APEX 4.0 Features:&lt;/span&gt;&lt;br /&gt;Die meisten Dinge kannte ich bereits, allerdings gab es eine Neuigkeit die mir wirklich weiterhilft. Wie Update ich einen Report mit Dynamic Actions der auf dynamisch geänderten APEX Items in einer WHERE-Klausel reagieren soll: &lt;a href="http://anthonyrayner.blogspot.com/2010/07/report-filtering-with-apex-40-dynamic.html"&gt;Report filtering with APEX 4.0, dynamic action style &lt;/a&gt;&lt;br /&gt;Vielen Dank nochmal Patrick für den tollen Tipp. Die Session war klasse!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://asktom.oracle.com/pls/apex/f?p=100:1:0"&gt;Tom Kyte&lt;/a&gt; mit dem Thema: Was machen wir noch immer falsch zum Thema (Man glaubt es kaum) PL/SQL!&lt;/span&gt;&lt;br /&gt;Klasse Beispiele die einmal mehr aufzeigten wie wichtig es ist, erst einmal die Probleme richtig zu durchdenken und dann mit programmieren anzufangen. Dies gilt im übrigen auch für APEX Projekte! :)&lt;br /&gt;&lt;br /&gt;Die nächsten Session musste ich für einige Interessante Gespräche ausfallen lassen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Die letzte Session ging um APEX und Reporting mit BIRT (Michael Pergande): &lt;/span&gt;Interessante Lösung die aber leider kaum Doku in Verbindung mit APEX bietet. Ich denke im Moment ist als kostenlose Alternative, Jasper Reports die beste Lösung.&lt;br /&gt;&lt;br /&gt;Eine tolle Veranstaltung die leider viel zu kurz war...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6764307313143395037?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6764307313143395037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6764307313143395037&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6764307313143395037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6764307313143395037'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/11/doag-2010-eindrucke-vom-ersten-tag-1611.html' title='DOAG 2010 Eindrücke vom ersten Tag (16.11)'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1726871595588718292</id><published>2010-11-12T23:19:00.006+01:00</published><updated>2010-11-13T16:33:00.451+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DE'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Kurs'/><title type='text'>News rund um APEX</title><content type='html'>&lt;span style="font-weight:bold;"&gt;APEX Patch 4.0.2&lt;/span&gt;&lt;br /&gt;Laut &lt;a href="http://joelkallman.blogspot.com/2010/11/application-express-402-applied-to.html"&gt;Joel Kallman&lt;/a&gt; wurde die APEX Testinstanz apex.oracle.com auf Version 4.0.2 umgestellt. Das bedeutet das in wenigen Tagen/Wochen das APEX Update freigegeben wird. Neuerung: 2 Neue Themes &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update des APEX Blog Aggregators:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://dgielis.blogspot.com/"&gt;Dimitri Gielis&lt;/a&gt; hat eine neue Version des APEX Blog Aggregators entwickelt. Dieser wird in den nächsten Tagen released. Er hat die Anwendung komplett neu in APEX 4.0 aufgesetzt und den Synchronisations-Mechanismus geändert. Schaut einfach mal rein: &lt;a href="http://apexblogs.info"&gt;http://apexblogs.info&lt;/a&gt;&lt;br /&gt;Meines Erachtens trägt dieser Blog-Aggregator entscheidend zur schnellen Verbreitung von APEX bei. Danke Dimitri für deine Mühen!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;APEX 4.0 New Features - Wiederholung&lt;/span&gt;&lt;br /&gt;Denes Kubicek und Dietmar Aust wiederholen ihr APEX 4.0 Training. Das Training findet vom 24-25.01.2010 statt. Weitere Infos unter: &lt;a href="http://www.opal-consulting.de/apex/f?p=107:1"&gt;http://www.opal-consulting.de&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DOAG 2010&lt;/span&gt;&lt;br /&gt;Ich selber halte dieses Jahr keinen Vortrag auf der DOAG, aber vielleicht sieht man ja den einen oder anderen (am Dienstag den 16.11) zwischen all den APEX Vorträgen. Ich dachte ich könnte im Raum NRW oder Sachsen nen Vortrag zu APEX Navigationskonzepten halten. Mal sehen ob das die Zeit her gibt! ;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Neuer APEX Blogger:&lt;/span&gt;&lt;br /&gt;Es gibt auch einen neuen (Ok ist schon ein paar Tage her) Deutsch/Englisch sprachigen APEX Blog: Linh Dinh - &lt;a href="http://www.dinh.de/wordpress/"&gt;http://www.dinh.de/wordpress/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Kleine Linksammlung rund um APEX Themen&lt;/span&gt; (damit ich nicht immer Google befragen muss!)&lt;br /&gt;&lt;br /&gt;Tipps zu sicheren APEX Anwendungen/Session State Protection:&lt;br /&gt;http://www.oracle.com/global/de/community/tipps/securitytipps/index.html&lt;br /&gt;http://download.oracle.com/docs/cd/E14373_01/appdev.32/e11838/sec.htm&lt;br /&gt;http://www.talkapex.com/2009/05/apex-page-access-protection-and-session.html&lt;br /&gt;http://dgielis.blogspot.com/2007/03/session-state-protection-and-url.html&lt;br /&gt;http://apps2fusion.com/at/64-kr/400-preventing-url-tampering-using-apex-session-state-protection&lt;br /&gt;&lt;br /&gt;Einmalige APEX Anmeldung:&lt;br /&gt;http://www.oracle.com/global/de/community/tipps/apex-mini-sso/index.html&lt;br /&gt;http://dgielis.blogspot.com/2007/07/oracle-apex-behind-scenes-logout.html&lt;br /&gt;&lt;br /&gt;APEX Private Interactive Reports:&lt;br /&gt;http://dpeake.blogspot.com/2009/01/preserving-user-saved-interactive.html&lt;br /&gt;http://www.talkapex.com/2009/10/saving-saved-interactive-reports-when.html&lt;br /&gt;&lt;br /&gt;APEX schönere URL's:&lt;br /&gt;http://www.inside-oracle-apex.com/nicer-url-for-an-oracle-apex-application/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1726871595588718292?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1726871595588718292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1726871595588718292&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1726871595588718292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1726871595588718292'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/11/news-rund-um-apex.html' title='News rund um APEX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8993712467249295558</id><published>2010-11-02T19:29:00.004+01:00</published><updated>2010-11-02T19:39:18.235+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Ne einfache Lösung für Oracle's Hochkomma Problem</title><content type='html'>Wer kennt es nicht:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;DECLARE&lt;br /&gt;   v_text VARCHAR2 (2000);&lt;br /&gt;BEGIN&lt;br /&gt;   v_text := 'insert into my_table (my_column) values (''Einfach zu ''''unübersichtlich''''!'')';&lt;br /&gt;   EXECUTE IMMEDIATE v_text;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Die Lösung beschreibt Christian Rokitta in seinem Blog:&lt;br /&gt;&lt;a href="http://rokitta.blogspot.com/2010/11/its-little-things-in-life.html"&gt;http://rokitta.blogspot.com/2010/11/its-little-things-in-life.html&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;DECLARE&lt;br /&gt;   v_text VARCHAR2 (2000);&lt;br /&gt;BEGIN&lt;br /&gt;   v_text := q'[insert into my_table (my_column) values (q'&amp;lt;Einfach zu 'unübersichtlich'!&gt;')]';&lt;br /&gt;   EXECUTE IMMEDIATE v_text;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Danke Christian!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8993712467249295558?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8993712467249295558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8993712467249295558&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8993712467249295558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8993712467249295558'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/11/ne-einfache-losung-fur-oracles.html' title='Ne einfache Lösung für Oracle&apos;s Hochkomma Problem'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1752786112060418339</id><published>2010-11-01T21:09:00.002+01:00</published><updated>2010-11-01T21:11:56.152+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OHS'/><title type='text'>Oracle HTTP Server - OHS (Part of the Oracle Web Tier Utilities)</title><content type='html'>For all those who hasn't noticed and those who are watching out for the current version of the Oracle HTTP Server. It is now part of the Oracle Web Tier Utilities and can be downloaded at:&lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/middleware/downloads/fmw-11-download-092893.html"&gt;http://www.oracle.com/technetwork/middleware/downloads/fmw-11-download-092893.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The 10g version is part of the Oracle 10gR3 Companion CD and is available at:&lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/middleware/ias/downloads/index.html"&gt;http://www.oracle.com/technetwork/middleware/ias/downloads/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oracle Web Tier contains the following primary components:&lt;br /&gt; - Oracle HTTP Server (OHS)&lt;br /&gt; - Oracle Web Cache&lt;br /&gt; - Oracle Process Manager and Notification Server (OPMN)&lt;br /&gt;&lt;br /&gt;More information about the HTTP Server can be found at:&lt;br /&gt;&lt;a href="http://www.orafaq.com/wiki/HTTP_Server_FAQ"&gt;http://www.orafaq.com/wiki/HTTP_Server_FAQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Install guide:&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14260/toc.htm"&gt;http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14260/toc.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A nice install guide with pictures was made by Sandeep Bafna and can be found at:&lt;br /&gt;&lt;a href="http://orafusionmiddleware.blogspot.com/2010/01/installation-of-web-tier-utilites-11g.html"&gt;http://orafusionmiddleware.blogspot.com/2010/01/installation-of-web-tier-utilites-11g.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;HR&gt;&lt;br /&gt;German version:&lt;br /&gt;&lt;br /&gt;Für all die, die noch nicht wissen wo Sie die aktuelle Version des Oracle HTTP Server finden können bzw. sich fragen was damit passiert ist. Es ist jetzt Teil der Oracle Web Tier Utilities (11g) und kann hier runtergeladen werden:&lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/middleware/downloads/fmw-11-download-092893.html"&gt;http://www.oracle.com/technetwork/middleware/downloads/fmw-11-download-092893.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Die 10g Version ist Teil der Oracle 10gR3 Companion CD und kann hier runtergeladen werden:&lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/middleware/ias/downloads/index.html"&gt;http://www.oracle.com/technetwork/middleware/ias/downloads/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oracle Web Tier Utilities beinhalten die folgenden Kernkomponenten:&lt;br /&gt; - Oracle HTTP Server (OHS)&lt;br /&gt; - Oracle Web Cache&lt;br /&gt; - Oracle Process Manager und Notification Server (OPMN)&lt;br /&gt;&lt;br /&gt;Wenn Sie Informationen über die Funktionsweise des Oracle HTTP Server benötigen, dann schauen Sie doch mal hier rein:&lt;br /&gt;&lt;a href="http://www.orafaq.com/wiki/HTTP_Server_FAQ"&gt;http://www.orafaq.com/wiki/HTTP_Server_FAQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Installationsanleitung:&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14260/toc.htm"&gt;http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14260/toc.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eine weitere Installationsanleitung mit Bildern kann hier angeschaut werden (Die Anleitung stammt von Sandeep Bafna und ist kein offizielles Dokument):&lt;br /&gt;&lt;a href="http://orafusionmiddleware.blogspot.com/2010/01/installation-of-web-tier-utilites-11g.html"&gt;http://orafusionmiddleware.blogspot.com/2010/01/installation-of-web-tier-utilites-11g.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1752786112060418339?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1752786112060418339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1752786112060418339&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1752786112060418339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1752786112060418339'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/11/oracle-http-server-ohs-part-of-oracle.html' title='Oracle HTTP Server - OHS (Part of the Oracle Web Tier Utilities)'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7479061562487830096</id><published>2010-10-27T19:52:00.003+02:00</published><updated>2010-10-27T20:04:37.219+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>Restore APEX Report Region Selects</title><content type='html'>Maybe you came in the situation when you created an APEX report and during your development you unfortunately saved it with the wrong selection.&lt;br /&gt;&lt;br /&gt;It happened a couple of times to me...&lt;br /&gt;&lt;br /&gt;I found a way how you can restore such a lost selection easily within a SQL statement:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;select PAGE_ID,&lt;br /&gt;       PAGE_NAME,&lt;br /&gt;       REGION_NAME,&lt;br /&gt;       TEMPLATE,&lt;br /&gt;       STATIC_ID,&lt;br /&gt;       REGION_SOURCE,&lt;br /&gt;       SOURCE_TYPE&lt;br /&gt;  from APEX_APPLICATION_PAGE_REGIONS&lt;br /&gt;    as of timestamp sysdate - 100 / (24 * 60) &lt;br /&gt;  -- Minus 100 Minutes&lt;br /&gt; where APPLICATION_ID = '100'&lt;br /&gt;   and PAGE_ID = 100;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Just use the Oracle flashback feature inside the APEX View "APEX_APPLICATION_PAGE_REGIONS" and restore it from your redolog files. Column &lt;span style="font-weight:bold;"&gt;REGION_SOURCE&lt;/span&gt; includes the original selection.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/TMhpNGvDpvI/AAAAAAAAASA/L1Z-T9-PcrQ/s1600/restore_selection.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 197px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/TMhpNGvDpvI/AAAAAAAAASA/L1Z-T9-PcrQ/s400/restore_selection.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5532787816091854578" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7479061562487830096?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7479061562487830096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7479061562487830096&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7479061562487830096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7479061562487830096'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/10/restore-apex-report-region-selects.html' title='Restore APEX Report Region Selects'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7ko33pi4F4/TMhpNGvDpvI/AAAAAAAAASA/L1Z-T9-PcrQ/s72-c/restore_selection.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7550007436920699572</id><published>2010-10-23T12:28:00.005+02:00</published><updated>2010-10-23T13:23:53.121+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Tooltip'/><title type='text'>Tooltip der Extraklasse</title><content type='html'>Ich hatte ja vor nicht allzu langer Zeit schon erwähnt das ich ne Tooltip Anwendung erstellen wollte. Leider hat es die Zeit nicht ganz zugelassen.&lt;br /&gt;&lt;br /&gt;Seit APEX 4.0 sind die Tooltips ja eh dynamisch und eigentlich brauch jetzt niemand mehr ne Speziallösung! Eigentlich...&lt;br /&gt;&lt;br /&gt;Es gibt eine Tooltip Art die APEX noch nicht von Haus aus unterstützt: &lt;span style="font-weight:bold;"&gt;Moveover-Tooltips&lt;/span&gt;&lt;br /&gt;Anzeige einer Infobox wenn ich mich über dem Item befinde.&lt;br /&gt;&lt;br /&gt;Beispiel: &lt;a href="http://www.ta-it-consulting.de/tooltip_example.html"&gt;http://www.ta-it-consulting.de/tooltip_example.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Die Lösung basiert auf dem Quellcode von Swazz mit ihrem Tooltip Plugin: &lt;span style="font-weight:bold;"&gt;Boxover&lt;/span&gt;. &lt;br /&gt;Paulo Vale schrieb bereits über die Integration dieses Tooltips. Damit auch die Deutsche Community dran teilhaben darf, dachte ich mir, ich erweitere die Anleitung  und zeige was alles möglich ist.&lt;br /&gt;Leider ist die offizielle Beispielseite nicht mehr Online. Die Javascript Datei könnt ihr hier runterladen: &lt;a href="http://ta-it-consulting.de/boxover_tooltip.js"&gt;http://ta-it-consulting.de/boxover_tooltip.js&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Installation - HTML Header:&lt;/span&gt; &lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;!-- TOOLTIP START --&gt;&lt;br /&gt;// Source code&lt;br /&gt;&amp;lt;script type="text/javascript" src="#APP_IMAGES#boxover_tooltip.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;// Erweitertes Layout&lt;br /&gt;&amp;lt;style type="text/css"&gt;&lt;br /&gt;.hlpHeader{font-weight:bold;width:320px;font-family:arial;border:1px solid #6F6F6F;padding:3;fontsize:11;&lt;br /&gt;color:#FFFFFF;background:#8F8F8F;filter:alpha(opacity=85);opacity:0.85;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.hlpBody{width:320px;font-family:arial;border-bottom:1px solid #6F6F6F;border-left:1px solid #6F6F6F;&lt;br /&gt;border-right:1px solid #6F6F6F;padding:3;fontsize:11;color:#FFFFFF;background:#BFBFBF;filter:alpha(opacity=85);&lt;br /&gt;opacity:0.85;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&gt;&lt;br /&gt;&amp;lt;!-- TOOLTIP END     --&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Konfiguration - Item &gt; HTML Form Element Attributes:&lt;/span&gt; &lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;Beispiel 1:&lt;br /&gt;TITLE="header=[Information] body=[Hilfetext fuer dieses Item]"&lt;br /&gt;&lt;br /&gt;Beispiel 2:&lt;br /&gt;TITLE="cssbody=[hlpBody] cssheader=[hlpHeader] header=[Information] body=[Hilfetext]"&lt;br /&gt;&lt;br /&gt;Beispiel 3:&lt;br /&gt;TITLE="fixedrelx=[1] fixedrely=[-56] header=[Information] body=[Hilfetext]"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Anleitung:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://opatia.com/js/BoxOverParameters.htm"&gt;http://opatia.com/js/BoxOverParameters.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Einstellungsmöglichkeiten:&lt;/span&gt;&lt;br /&gt;&lt;table cellpadding="5" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight:bold;"&gt;Parameter&lt;/td&gt;&lt;br /&gt;&lt;td style="font-weight:bold;"&gt;Mögliche Werte&lt;/td&gt;&lt;br /&gt;&lt;td style="font-weight:bold;"&gt;Default &lt;/td&gt;&lt;br /&gt;&lt;td style="font-weight:bold;"&gt;Beschreibung&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;header&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any character&lt;/td&gt;&lt;br /&gt;&lt;td&gt;blank&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies the header text of the caption&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;body&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any character&lt;/td&gt;&lt;br /&gt;&lt;td&gt;blank&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies the body text of the caption&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;fixedrelx&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any integer&lt;/td&gt;&lt;br /&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Forces the X-coordinate of the caption to stay fixed (offset is relative to the annotated HTML element)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;fixedrely&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any integer&lt;/td&gt;&lt;br /&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Forces the Y-coordinate of the caption to stay fixed (offset is relative to the annotated HTML element)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;fixedabsx&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any integer&lt;/td&gt;&lt;br /&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Forces the X-coordinate of the caption to stay fixed (X is an offset relative to the body of the HTML document)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;fixedabsy&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any integer&lt;/td&gt;&lt;br /&gt;&lt;td&gt;N/A&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Forces the Y-coordinate of the caption to stay fixed (Y is an offset relative to the body of the HTML document)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;windowlock&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On / Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Make caption stick to side of the window if user moves close to the side of the screen.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;cssbody&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any defined style class&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Built in styles&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies CSS class for styles to be used on caption body.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;cssheader&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any defined style class&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Built in styles&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies CSS class for styles to be used on caption header.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;offsetx&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any integer&lt;/td&gt;&lt;br /&gt;&lt;td&gt;10&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Horizontal offset, in pixels, of the caption relative to the mouse cursor.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;offsety&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any integer&lt;/td&gt;&lt;br /&gt;&lt;td&gt;10&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Vertical offset, in pixels, of the caption relative to the mouse cursor.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;doubleclickstop&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On / Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies whether to halt the caption when the user double clicks on the HTML element with the caption.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;singleclickstop&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On / Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies whether to halt the caption when the user single clicks on the HTML element with the caption.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 11px;"&gt;- if both singleclickstop and doubleclickstop are set to "on", singleslclickstop takes preference.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;requireclick&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On / Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies whether the user must first click the element before a&lt;br /&gt;tooltip appears. Intended for use on links so that information appears&lt;br /&gt;while the link is followed.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;hideselects&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On / Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies whether to hide all SELECT boxes on page when popup is activated.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;fade&lt;/td&gt;&lt;br /&gt;&lt;td&gt;On / Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Off&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies whether to fade tooltip into visibility.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;fadespeed&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Number between 0 and 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;0.04&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies how fast to fade in tooltip.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;delay&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Any integer&lt;/td&gt;&lt;br /&gt;&lt;td&gt;0&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Specifies delay in milliseconds before tooltip displays.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7550007436920699572?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7550007436920699572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7550007436920699572&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7550007436920699572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7550007436920699572'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/10/tooltip-der-extraklasse.html' title='Tooltip der Extraklasse'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8508383327195455100</id><published>2010-10-10T13:15:00.004+02:00</published><updated>2010-10-10T13:53:09.583+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic Actions'/><title type='text'>Dynamic Actions Beispiel</title><content type='html'>Vor einer Weile wurde eine super Anleitung für die Verwendung von &lt;span style="font-weight:bold;"&gt;Dynamic Actions &lt;/span&gt;in APEX 4.0 auf der deutschen APEX Community Seite erstellt. &lt;a href="http://www.oracle.com/global/de/community/tipps/apex40-dynamicactions/index.html"&gt;http://www.oracle.com/global/de/community/tipps/apex40-dynamicactions/index.html&lt;/a&gt;&lt;br /&gt;Damit auch der letzte die Vorteile von Dynamic Actions versteht, habe ich auf dieser Anleitung basierend eine kleine Anwendung erstellt.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7ko33pi4F4/TLGnSIGUIoI/AAAAAAAAARw/uNtFIf2njco/s1600/trigger_example.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 148px;" src="http://4.bp.blogspot.com/_A7ko33pi4F4/TLGnSIGUIoI/AAAAAAAAARw/uNtFIf2njco/s400/trigger_example.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5526382147613762178" /&gt;&lt;/a&gt;&lt;br /&gt;Beispiel: &lt;a href="http://ta-it-consulting.de/trigger_example.html"&gt;http://ta-it-consulting.de/trigger_example.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wer Interesse am Code hat oder nähere Infos zu APEX 4.0 bzw. Dynamic Actions benötigt. Kann mich unter tobias-arnhold@hotmail.de einfach anmailen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8508383327195455100?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8508383327195455100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8508383327195455100&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8508383327195455100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8508383327195455100'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/10/dynamic-actions-beispiel.html' title='Dynamic Actions Beispiel'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7ko33pi4F4/TLGnSIGUIoI/AAAAAAAAARw/uNtFIf2njco/s72-c/trigger_example.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-942945099883148984</id><published>2010-09-01T22:38:00.004+02:00</published><updated>2010-09-01T23:09:47.520+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='DE'/><title type='text'>Die nächsten Tutorials warten bereits...</title><content type='html'>In den nächsten Wochen und Monaten habe ich vor ein paar wirklich nützliche APEX Erweiterungen vorzustellen. In Form von Anleitungen und Beispielapplikationen soll jeder in die Lage versetzt werden, professionelle Anwendungen mit den neuesten Techniken zu entwickeln.&lt;br /&gt;&lt;br /&gt;Die folgenden Themen stehen derzeit auf meiner Agenda:&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;Tooltip Applikation:&lt;/span&gt; Viele Tooltip/Infobox Beispiele für APEX gibt es im Netz, nur keiner hat einen wirklichen Überblick darüber. Diese Applikation soll Abhilfe schaffen. Ein alter Post zeigt ein paar Möglichkeiten auf: &lt;a href="http://apex-at-work.blogspot.com/2010/06/all-about-tooltips.html"&gt;All about Tooltips&lt;/a&gt;&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;jExpand Report:&lt;/span&gt; Eine geniale Reportlösung mit der es möglich ist, Reports mit vielen Spalten auch auf kleinen Raum unter zu bekommen! Eine Implementierung als APEX Template wird das Ziel sein. &lt;a href="http://www.jankoatwarpspeed.com/examples/expandable-rows/"&gt;Beispiel mit Testdaten&lt;/a&gt;&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;JQuery Layouts:&lt;/span&gt; Ähnlich ExtJS ist es möglich bewegliche Seitenbereiche auch mit JQuery umzusetzen. Ein Ansatz der bisher kaum Gehör bei den APEX Entwicklern fand und endlich auch mit OpenSource Mitteln umgesetzt werden kann. &lt;a href="http://fabrizioballiano.net/jquery-border-layout/"&gt;http://fabrizioballiano.net/jquery-border-layout/&lt;/a&gt; und &lt;a href="http://layout.jquery-dev.net/"&gt;http://layout.jquery-dev.net/&lt;/a&gt; Bis dahin schaut doch mal in meine ExtJS Lösung rein: &lt;a href="http://apex.oracle.com/pls/otn/f?p=65555:1"&gt;APEX-AT-WORK Developer Competition 2009 Edition&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Ich denke das sind Themen die viele APEX Entwickler interessieren könnten. Deswegen gebt doch einfach mal ein kurzes Feedback zu meinen Ideen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-942945099883148984?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/942945099883148984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=942945099883148984&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/942945099883148984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/942945099883148984'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/09/die-nachsten-tutorials-warten-bereits.html' title='Die nächsten Tutorials warten bereits...'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-1128523332091649203</id><published>2010-08-21T18:29:00.006+02:00</published><updated>2010-09-01T23:10:44.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DE'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX Kurs'/><title type='text'>APEX 4.0 New Feature Training in Deutschland</title><content type='html'>Falls ihr es noch nicht gehört habt, im Oktober 2010 geben &lt;a href="http://deneskubicek.blogspot.com/"&gt;Denes&lt;/a&gt; und &lt;a href="http://daust.blogspot.com/"&gt;Dietmar&lt;/a&gt; einen Oracle APEX 4.0 New Feature Kurs. Für alle die mehr Erfahren wollen, schaut doch einfach mal rein: &lt;a href="http://www.opal-consulting.de/apex/f?p=107:7"&gt;OPAL-Consulting - Oracle APEX 4.0: New Features&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-1128523332091649203?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/1128523332091649203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=1128523332091649203&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1128523332091649203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/1128523332091649203'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/08/apex-40-new-feature-training-in.html' title='APEX 4.0 New Feature Training in Deutschland'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7986983099663367338</id><published>2010-08-20T23:33:00.012+02:00</published><updated>2010-09-01T23:10:44.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='DE'/><title type='text'>Silbentrennung (Hyphenation) in APEX (GER)</title><content type='html'>Viele Entwickler in APEX kennen das Problem professionelle gut strukturierte Reports zu entwickeln, deren Spaltenbreiten nicht über die gewünschten maximalen Breiten hinausragen.&lt;br /&gt;Folgende Bedingungen erschweren die einfache Entwicklung von Reports:&lt;br /&gt; - Bildschirmauflösung ist eingeschränkt (1024x768)&lt;br /&gt; - Zu lange Texte in Reports (Spaltennamen, Spaltenwerte)&lt;br /&gt; - Nutzung verschiedener Browser (Firefox, Internet Explorer 6, 7 und 8,Safari,...)&lt;br /&gt; - Übersetzung in verschiedene Sprachen notwendig&lt;br /&gt; - Nutzung unterschiedlicher Layouts mit verschiedenen CSS Eigenschaften&lt;br /&gt;&lt;br /&gt;Vor einer Weile habe ich einen Tipp beschrieben der die Problematik ein wenig verbessern kann: &lt;a href="http://apex-at-work.blogspot.com/2010/03/automatic-linebreak-if-word-breaks-out.html"&gt;Automatic linebreak if word breaks out of table element&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Nun habe ich eine wirklich gut Lösung gefunden die mit ein paar einfachen Anpassungen erstaunliche Wirkungen in ihren APEX Reports hervorrufen kann. Das Zauberwort heißt Silbentrennung (Engl.: Hyphenation). Die Lösung besteht darin den dargestellten Text durch ein Javascript Plugin entsprechend der maximalen Feldbreite zu begrenzen.&lt;br /&gt;&lt;br /&gt;Dazu wird nach jeder Aktualisierung eine Funktion gestartet, die die Felder entsprechend anpasst.&lt;br /&gt;Die Anwendung heißt Hyphenator, kann in allen gängigen Sprachen dynamisch verwendet werden, ist ein Javascript Plugin und ist hier zu finden &lt;a href="http://code.google.com/p/hyphenator/"&gt;http://code.google.com/p/hyphenator/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ein weiterer Entwickler hat ein passendes Jquery Plugin geschrieben: &lt;a href="http://bitbucket.org/webvariants/jquery-hyphenator/wiki/Home"&gt;http://bitbucket.org/webvariants/jquery-hyphenator/wiki/Home&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In dieser Kombination ist die Verwendung in APEX 3.2 oder 4.0 denkbar einfach.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;font-style:italic;"&gt;Anleitung:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Datei downloaden&lt;/span&gt;&lt;br /&gt;Downloaden Sie die aktuell stabile Version von hier &lt;a href="http://hyphenator.googlecode.com/files/Hyphenator%202.5.0.zip"&gt;http://hyphenator.googlecode.com/files/Hyphenator%202.5.0.zip&lt;/a&gt; und hier &lt;a href="http://bitbucket.org/webvariants/jquery-hyphenator/get/v1.1.0.zip"&gt;http://bitbucket.org/webvariants/jquery-hyphenator/get/v1.1.0.zip&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Kopieren Sie das Jquery Plugin auf ihren Webspace (APEX /i/ Verzeichnis)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/i/Hyphenator/Hyphenator.js (Umbennen von hyphenator.min.js)&lt;br /&gt;&amp;nbsp;&amp;nbsp;/i/Hyphenator/jquery.hyphenator.min.js"&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Kopieren Sie den Ordner patterns aus dem Hyphenator Download in ihr Verz.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/i/Hyphenator/patterns/de.js&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Definieren des Plugins in ihrem APEX HTML Header&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;!-- START: Hyphenator Plugin --&gt;&lt;br /&gt;&amp;lt;style type="text/css"&gt;&lt;br /&gt;.hyph {&lt;br /&gt;   /* WIDTH Parameter wird erst ueber Spalte definiert */&lt;br /&gt;   display:block;&lt;br /&gt;   /* DISPLAY:BLOCK ist immer zwingend erforderlich */&lt;br /&gt;   overflow:hidden; float:left;&lt;br /&gt;   /* Schneidet alles Sichtbare über der max. Groesse ab, dadurch entstehen keine Fehler beim verkleinern, IE6 Fehlverhalten */&lt;br /&gt;   white-space:normal;&lt;br /&gt;   /* Darf niemals: white-space:nowrap als Einstellung in einer Tabelle haben */&lt;br /&gt;   word-wrap: break-word;z-index:999; &lt;br /&gt;   /* Fuer IE6 */&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/i/Hyphenator/Hyphenator.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/i/Hyphenator/jquery.hyphenator.min.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;!-- ENDE: Hyphenator Plugin --&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Deaktivieren Sie in ihrem APEX Report Template folgenden CSS Einstellung&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;white-space:nowrap mit white-space:normal;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;!-- Column Heading Template --&gt;&lt;br /&gt;&amp;lt;th ... style="white-space:normal;z-index:999;word-wrap: break-word;"&gt;#COLUMN_HEADER#&amp;lt;/th&gt;&lt;br&gt;&lt;br /&gt;&amp;lt;!-- Column Template 1 --&gt;&lt;br /&gt;&amp;lt;td ... style="white-space:normal;z-index:999;word-wrap: break-word;"&gt;#COLUMN_VALUE#&amp;lt;/td&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;6. Report Spalten Anpassen&lt;/b&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;!-- Column Heading: --&gt;&lt;br /&gt;&amp;lt;span class="hyph" style="width:50px;text-decoration: underline;"&gt;Anwendungsname&amp;lt;/span&gt;&lt;br&gt;&lt;br /&gt;&amp;lt;!-- HTML Expression --&gt;&lt;br /&gt;&amp;lt;span class="hyph" style="width:50px;"&gt;#NAME#&amp;lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Info:&lt;/b&gt; Hier definieren Sie die maximale Breite und die Option Hyphenation zu verwenden.&lt;br&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7. APEX Dynamic Action für Report anlegen&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After Report Refresh Trigger mit javascript Ausführung: &lt;span style="font-weight:bold;"&gt;$('.hyph').hyphenate();&lt;/span&gt;&lt;br /&gt;Im Idealfall sollte sollte ein ähnlicher Report wie in meiner Beispielanwendung herauskommen:&lt;br /&gt;&lt;a href="http://ta-it-consulting.de/hyphenation.html"&gt;http://ta-it-consulting.de/hyphenation.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Info 1:&lt;/span&gt; Die LANG Option im HTML Tag definiert die Übersetzungssprache &amp;lt;html lang="de"&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Info 2:&lt;/span&gt; Das Plugin kann auch in APEX 3.2 verwendet werden, außerdem ist der IE6 ohne Probleme verwendbar.&lt;br /&gt;&lt;br /&gt;Das Ergebnis ist eine universelle Lösung die all ihre Reportprobleme lösen könnte.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7ko33pi4F4/THACARYALzI/AAAAAAAAARg/9g6ZBfaUplQ/s1600/hyphenation_in_action.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 272px;" src="http://4.bp.blogspot.com/_A7ko33pi4F4/THACARYALzI/AAAAAAAAARg/9g6ZBfaUplQ/s400/hyphenation_in_action.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5507904547961450290" /&gt;&lt;/a&gt;&lt;br /&gt;Der einzige Haken ist eine erhöhte CPU Auslastung auf der Clientebene. Also Vorsicht vor verschwenderischer Übersetzung.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Mal was anderes:&lt;/span&gt; Inzwischen ist auch der AAW-DBMON ONLINE: &lt;a href="http://ta-it-consulting.de/dbmon.html"&gt;http://ta-it-consulting.de/dbmon.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7986983099663367338?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7986983099663367338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7986983099663367338&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7986983099663367338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7986983099663367338'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/08/silbentrennung-hyphenation-in-apex-ger.html' title='Silbentrennung (Hyphenation) in APEX (GER)'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7ko33pi4F4/THACARYALzI/AAAAAAAAARg/9g6ZBfaUplQ/s72-c/hyphenation_in_action.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7887763981570422114</id><published>2010-08-12T23:05:00.005+02:00</published><updated>2010-08-12T23:19:24.842+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Debugging hint for your APEX pl/sql processes</title><content type='html'>Often I use to much pl/sql code inside my APEX processes. As we all know it is just better using complex code inside packages. In case you got trouble with your APEX code and you can't find a fast way debugging it. Just use some javascript popup boxes:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;-- Test Box&lt;br /&gt;htp.prn('&amp;lt;script&gt;alert("TEST");&amp;lt;/script&gt;');&lt;br /&gt;&lt;br /&gt;-- Box with item values showing an IF validation:&lt;br /&gt;htp.prn('&amp;lt;script&gt;alert("'||:P1_TEST1 || ' = ' || :P1_TEST2 || '");&amp;lt;/script&gt;'); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Summer is coming to an end and it becomes time to blog some more. Right now I'm developing a new small APEX application which describes a way how you can easily use hyphenation inside your application. In that combination I also found a trick how you can prevent the misbehavior of IE6 with fixed column width inside your Reports.  &lt;br /&gt;&lt;br /&gt;Tobias&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7887763981570422114?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7887763981570422114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7887763981570422114&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7887763981570422114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7887763981570422114'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/08/debugging-hint-for-your-apex-plsql.html' title='Debugging hint for your APEX pl/sql processes'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7421000966804804650</id><published>2010-06-09T22:48:00.004+02:00</published><updated>2010-06-19T23:07:07.080+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>All about tooltips</title><content type='html'>There a couple of tooltip examples/HowTos for APEX available and it becomes time to get them all together: &lt;br /&gt;Paulo Vale's solution: &lt;a href="http://apex.oracle.com/pls/otn/f?p=25110:5"&gt;http://apex.oracle.com/pls/otn/f?p=25110:5&lt;/a&gt;&lt;br /&gt;HowTo: &lt;a href="http://apex-notes.blogspot.com/2008/01/javascript-tootip-integration.html"&gt;http://apex-notes.blogspot.com/2008/01/javascript-tootip-integration.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dan McGhan's solution: &lt;a href="http://apex.shellprompt.net/pls/apex/f?p=apex_demo:3"&gt;http://apex.shellprompt.net/pls/apex/f?p=apex_demo:3&lt;/a&gt;&lt;br /&gt;HowTo: &lt;a href="http://www.danielmcghan.us/2008/06/ajax-item-help.html"&gt;http://www.danielmcghan.us/2008/06/ajax-item-help.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Patrick Wolf's solution: &lt;a href="http://www.inside-oracle-apex.com/using-tooltips-in-oracle-apex-applications/"&gt;http://www.inside-oracle-apex.com/using-tooltips-in-oracle-apex-applications/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Martin Giffy D'Souza solution: &lt;a href="http://apex.oracle.com/pls/otn/f?p=20195"&gt;http://apex.oracle.com/pls/otn/f?p=20195&lt;/a&gt;&lt;br /&gt;HowTo: &lt;br /&gt;&lt;a href="http://www.talkapex.com/2009/09/tooltip-help-in-apex-alternative-to.html"&gt;http://www.talkapex.com/2009/09/tooltip-help-in-apex-alternative-to.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;eDBA solution: &lt;a href="http://application-express-blog.e-dba.com/?p=281"&gt;http://application-express-blog.e-dba.com/?p=281&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Flavio Casetta's solution: &lt;a href="http://apex.oracle.com/pls/otn/f?p=38250:11:0"&gt;http://apex.oracle.com/pls/otn/f?p=38250:11:0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Carsten Cerni's solution: &lt;a href="http://www.cc13.com/wordpress_21/2009/03/12/apex-jquery-und-cluetip/"&gt;http://www.cc13.com/wordpress_21/2009/03/12/apex-jquery-und-cluetip/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hmm I wonder what nice APEX Plug-ins can be build for functionality like that. :D&lt;br /&gt;&lt;br /&gt;Post if there are more solutions available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7421000966804804650?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7421000966804804650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7421000966804804650&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7421000966804804650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7421000966804804650'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/06/all-about-tooltips.html' title='All about tooltips'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2622793465703697173</id><published>2010-06-02T23:46:00.004+02:00</published><updated>2010-06-02T23:56:11.722+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Access inner HTML/child elements</title><content type='html'>Sometimes when I worked with Reports and special HTML objects I came across the problem to access different in-line html elements by javascript.&lt;br /&gt;&lt;br /&gt;This link provides really useful know how about the access of DOM elements:&lt;br /&gt;&lt;a href="http://www.javascriptkit.com/javatutors/dom2.shtml"&gt;&lt;br /&gt;http://www.javascriptkit.com/javatutors/dom2.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some javascript alertbox examples:&lt;br /&gt;alert(document.getElementById(col_rownum).childNodes[1].value);&lt;br /&gt;alert(document.getElementById(col_rownum).firstChild.innerHTML);&lt;br /&gt;&lt;br /&gt;If one of you know even better documentation. Just add a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2622793465703697173?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2622793465703697173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2622793465703697173&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2622793465703697173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2622793465703697173'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/06/access-each-html-element-within-your.html' title='Access inner HTML/child elements'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8841833190097724112</id><published>2010-05-24T17:13:00.005+02:00</published><updated>2010-06-01T23:16:43.355+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Button with changing icon</title><content type='html'>A while ago I wrote how to create your own Javascript buttons inside a region: &lt;br /&gt;&lt;a href="http://apex-at-work.blogspot.com/2009/05/building-your-own-button-in-apex-region.html"&gt;http://apex-at-work.blogspot.com/2009/05/building-your-own-button-in-apex-region.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here the example about how to change the icon "on mouse over" event:&lt;br /&gt;&lt;a href="http://www.webdevelopersnotes.com/tutorials/javascript/changing_images_on_mouseover_mouseout_javascript.php3"&gt;Changing Images on Mouseover Using JavaScript&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;img&lt;br /&gt; id="#CURRENT_ITEM_ID#_btn"&lt;br /&gt; src="/i/unpressed-icon.gif"&lt;br /&gt; alt="Search"&lt;br /&gt; onclick="javascript:doSubmit('SEARCH')"&lt;br /&gt; style="cursor: pointer"&lt;br /&gt; title="Search"&lt;br /&gt; onmouseover="document.#CURRENT_ITEM_ID#_btn.src='/i/pressed-icon.gif'"&lt;br /&gt; onmouseout="document.#CURRENT_ITEM_ID#_btn.src='/i/unpressed-icon.gif'"&lt;br /&gt;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 01.06.2010:&lt;/span&gt;&lt;br /&gt;In case you want to use it inside your report then use this code snippet:&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;SELECT...&lt;br /&gt;  '&amp;lt;img src="/i/bilder/icon-unpressed.gif"'&lt;br /&gt;  || ' id="btn_ID' || rownum || '" style="cursor: pointer"'&lt;br /&gt;  || ' title="Save changes!" alt="Save changes!"'&lt;br /&gt;  || ' onmouseover="document.btn_ID' || rownum || '.src=''/i/bilder/icon-is-pressed.gif''"' &lt;br /&gt;  || ' onmouseout="document.btn_ID' || rownum || '.src=''/i/bilder/icon-unpressed.gif''" /&gt;' as BTN_PRESS&lt;br /&gt;FROM ...&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8841833190097724112?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8841833190097724112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8841833190097724112&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8841833190097724112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8841833190097724112'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/05/button-with-changing-icon.html' title='Button with changing icon'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2524300073719091201</id><published>2010-05-15T16:53:00.004+02:00</published><updated>2010-09-01T23:10:44.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DE'/><category scheme='http://www.blogger.com/atom/ns#' term='AaW - DBMON'/><title type='text'>AAW-DBMON geht in erster Beta Version unter APEX 4 EA3 ONLINE</title><content type='html'>The following post is targeted towards a German audience, thus it is in German:&lt;br /&gt;&lt;br /&gt;Wie vor einer ganzen Weile versprochen habe ich es endlich geschafft ein erstes Beta Release der AAW-DBMON Anwendung Online zu bringen! Das Release läuft schon unter APEX 4.0! Also schaut es euch mal an. Es können aus administrativen Gründen keine Daten dynamisch generiert werden. Also gebt GROßE Zeiträume bei den Charts an.&lt;br /&gt;&lt;a href="http://tryapexnow.com/apex/f?p=2508:1::::::"&gt;AAW-DBMON - http://tryapexnow.com/apex/f?p=2508:1:&lt;/a&gt;&lt;br /&gt;Account: &lt;br /&gt;Admin, Password: admin&lt;br /&gt;Monitoring, Passwort: monitoring&lt;br /&gt;&lt;br /&gt;Die Beta-Tester erhalten in den nächsten Tagen das aktuelle Release + Anleitung.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2524300073719091201?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2524300073719091201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2524300073719091201&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2524300073719091201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2524300073719091201'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/05/aaw-dbmon-geht-in-erster-beta-version.html' title='AAW-DBMON geht in erster Beta Version unter APEX 4 EA3 ONLINE'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6847288124384054353</id><published>2010-05-14T19:07:00.005+02:00</published><updated>2010-05-14T23:20:59.505+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Call Javascript function from APEX report column link</title><content type='html'>I know it is not really new but it is always good to have an example just for the case you don't have all code in your head! :D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Column-Link:&lt;/span&gt;&lt;br /&gt;Link Text: &lt;span style="font-weight:bold;"&gt;&amp;lt;img src="/i/my_icons/small_icon.png" alt="Short preview"&gt;&lt;/span&gt;&lt;br /&gt;Link Attribute: &lt;span style="font-weight:bold;"&gt;title="Short preview"&lt;/span&gt;&lt;br /&gt;Target: &lt;span style="font-weight:bold;"&gt;URL&lt;/span&gt;&lt;br /&gt;URL: &lt;span style="font-weight:bold;"&gt;javascript:fnc_preview('111',#ID#);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/S-298kL4XFI/AAAAAAAAARY/1wOTCgRtA6k/s1600/column_link.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 184px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/S-298kL4XFI/AAAAAAAAARY/1wOTCgRtA6k/s400/column_link.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5471237970528328786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tip: GIF's with empty background can be displayed by IE6. PNG files can be displayed by IE6.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6847288124384054353?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6847288124384054353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6847288124384054353&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6847288124384054353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6847288124384054353'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/05/call-javascript-function-from-apex.html' title='Call Javascript function from APEX report column link'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7ko33pi4F4/S-298kL4XFI/AAAAAAAAARY/1wOTCgRtA6k/s72-c/column_link.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6073460400624934160</id><published>2010-05-14T01:03:00.001+02:00</published><updated>2010-05-14T23:04:25.122+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EXTJS'/><title type='text'>onClick event over whole EXTJS tree node</title><content type='html'>I while ago I had an issue with the ExtJS tree. Somebody mentioned that not all parts of an ext tree node (for example the icons or the empty area) get called by an onClick event. There are just two line of code you need to add to your tree:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;tree.on('click', function(node){ // tree is the created ExtJS tree object&lt;br /&gt;   fnc_openWindow(node.id); //this is the javascript function I call&lt;br /&gt;}); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Watch the whole post in the ExtJS forum to get more information about it:&lt;br /&gt;&lt;a href="http://www.extjs.com/forum/showthread.php?95597-Ext-tree-href-event-on-whole-div-element"&gt;http://www.extjs.com/forum/showthread.php?95597-Ext-tree-href-event-on-whole-div-element&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6073460400624934160?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6073460400624934160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6073460400624934160&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6073460400624934160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6073460400624934160'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/05/onclick-event-over-whole-extjs-tree.html' title='onClick event over whole EXTJS tree node'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2996674660040761451</id><published>2010-05-13T23:44:00.003+02:00</published><updated>2010-05-13T23:53:43.773+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Highlight last inserted rows inside a standard report</title><content type='html'>To show last updated rows inside a report isn't as hard as it sounds.&lt;br /&gt;All you need is a time column which saves the insert date and some changes on your report template!&lt;br /&gt;&lt;br /&gt;Go into your report template and change it like this:&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;Column Template 1: &lt;br /&gt;&amp;lt;td class="new_css_class_with_different_color" #ALIGNMENT# id="#COLUMN_HEADER#_#COLNUM#_#ROWNUM#"&gt;#COLUMN_VALUE#&amp;lt;/td&gt;&lt;br /&gt;PL/SQL Condition:&lt;br /&gt;to_date('#DATE_COLUMN#','DD.MM.YYYY HH24:MI:SS') &gt; (SYSDATE - INTERVAL  '10' MINUTE)&lt;br /&gt;&lt;br /&gt;Column Template 2: &lt;br /&gt;&amp;lt;td class="old_css_class" #ALIGNMENT# id="#COLUMN_HEADER#_#COLNUM#_#ROWNUM#"&gt;#COLUMN_VALUE#&amp;lt;/td&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this example all rows which are younger than 10 minutes will be shown with a different background color. Which is defined inside the CSS class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2996674660040761451?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2996674660040761451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2996674660040761451&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2996674660040761451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2996674660040761451'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/05/highlight-last-inserted-rows-inside.html' title='Highlight last inserted rows inside a standard report'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-9019149466129234555</id><published>2010-05-13T23:16:00.004+02:00</published><updated>2010-05-13T23:43:22.555+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Get radio button value with javascript</title><content type='html'>Most of you know how to get an HTML session value inside APEX:&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;$x('P1_NAME').value&lt;/b&gt;&lt;br /&gt;To get the current value from a radio button use this APEX function:&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;$f_ReturnChecked('P1_DEPARTMENT')&lt;/b&gt; &lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;// 1. Item: HTML Form Element Attributes:&lt;br /&gt;onChange="javascript:fnc_setRadioItem('P1_DEPARTMENT')";&lt;br /&gt;&lt;br /&gt;// 2. Page: HTML Header&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;function fnc_setRadioItem(v_radioItem)&lt;br /&gt;{ &lt;br /&gt;  // Create AJAX request object with JavaScript class "htmldb_Get"&lt;br /&gt;  // 1. Parameter: Appointed for 'Partial Page Refresh', not needed&lt;br /&gt;  // 2. Parameter: Determined the actual application ID &lt;br /&gt;  // 3. Parameter: Defines the application process, I use a dummy value&lt;br /&gt;  // 4. Parameter: For 'Partial Page Refresh': not needed&lt;br /&gt;  var get = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=v_dummy',0);&lt;br /&gt;  get.add(v_radioItem,$f_ReturnChecked(v_radioItem))&lt;br /&gt;  gReturn = get.get();&lt;br /&gt;  //html_GetElement(v_radioItem).value = v_radioItem;&lt;br /&gt;  get = null; &lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can find even more functions inside the APEX documentation: &lt;a href="http://download.oracle.com/docs/cd/E14373_01/apirefs.32/e13369/javascript_api.htm"&gt;API Reference - 9  JavaScript APIs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tip für die deutsche Community: &lt;a href="http://www.oracle.com/global/de/community/tipps/ajax-jquery-01/index.html"&gt;APEX AJAX und JQuery HowTo Beispiel&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-9019149466129234555?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/9019149466129234555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=9019149466129234555&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9019149466129234555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/9019149466129234555'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/05/get-radio-button-value-with-javascript.html' title='Get radio button value with javascript'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-503882761103990268</id><published>2010-04-23T08:40:00.005+02:00</published><updated>2010-04-23T10:46:57.541+02:00</updated><title type='text'>Run an executable file from your browser</title><content type='html'>Internet Explorer is the only browser which can run executable files. I don't know any other browser which supports this feature. Of course there are common reason why! With IE you need to use &lt;a href="http://en.wikipedia.org/wiki/VBScript"&gt;VBScript&lt;/a&gt;. As we all know it is not secure way of developing web application. So be careful in creating security rules inside your Internet Explorer.&lt;br /&gt;&lt;br /&gt;This code shows two examples:&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;HTML&gt;&lt;br /&gt;  &amp;lt;HEAD&gt;&lt;br /&gt;  &amp;lt;/HEAD&gt;&lt;br /&gt;  &amp;lt;BODY&gt; &lt;br /&gt; &lt;br /&gt; &amp;lt;SCRIPT language = "vbscript"&gt;&lt;br /&gt; 'define application&lt;br /&gt; dim v_prog&lt;br /&gt; &lt;br /&gt; 'set command&lt;br /&gt; v_prog = "C:\Programme\7-Zip\7zFM.exe"&lt;br /&gt; &lt;br /&gt; 'create a shell&lt;br /&gt; set v_shell = createobject("wscript.shell")&lt;br /&gt;&lt;br /&gt;        'run application &lt;br /&gt; v_shell.run(v_prog)&lt;br /&gt; &amp;lt;/SCRIPT&gt;&lt;br /&gt;    &lt;br /&gt; &amp;lt;SCRIPT language = "vbscript"&gt;&lt;br /&gt;  'set variables&lt;br /&gt;  dim v_shell&lt;br /&gt;  dim v_return&lt;br /&gt;  dim v_prog&lt;br /&gt;  &lt;br /&gt;  'set command&lt;br /&gt;  v_prog = "%SystemRoot%\system32\ping 192.168.0.1"&lt;br /&gt;  &lt;br /&gt;  'create a shell&lt;br /&gt;  set v_shell = CreateObject("WScript.Shell")&lt;br /&gt;  &lt;br /&gt;  'run application&lt;br /&gt;  v_return = v_shell.Run(v_prog,1,TRUE)&lt;br /&gt;  &lt;br /&gt;  'check return value&lt;br /&gt;  if v_return = 0 then&lt;br /&gt;   MsgBox "Server is up",64,"Server status"&lt;br /&gt;  else&lt;br /&gt;   MsgBox "Server is down",64,"Server status"&lt;br /&gt;  end if&lt;br /&gt; &amp;lt;/SCRIPT&gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;/BODY&gt;&lt;br /&gt;&amp;lt;/HTML&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;How to: Visual Basic Scripting - &lt;a href="http://msdn.microsoft.com/en-us/library/t0aew7h6%28v=VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/t0aew7h6%28v=VS.85%29.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-503882761103990268?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/503882761103990268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=503882761103990268&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/503882761103990268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/503882761103990268'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/04/run-executable-file-from-your-browser.html' title='Run an executable file from your browser'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-7154284743876305144</id><published>2010-04-20T16:58:00.008+02:00</published><updated>2010-05-15T16:36:27.102+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>More interesting blog posts about common APEX issues</title><content type='html'>Warning a user that the form has changed. - &lt;a href="http://www.sumneva.com/apex/f?p=15000:1310:0::NO::P1310_TIP_ID:121"&gt;http://www.sumneva.com/apex/f?p=15000:1310:0::NO::P1310_TIP_ID:121&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Increasing the speed of APEX Collections - &lt;a href="http://jes.blogs.shellprompt.net/2010/02/24/increasing-the-speed-of-apex-collections/"&gt;http://jes.blogs.shellprompt.net/2010/02/24/increasing-the-speed-of-apex-collections/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;APEX A-Z Knowledgebase - &lt;a href="http://www.ruleworks.co.uk/cgi-bin/TUaz.exe?Guide=Apex"&gt;http://www.ruleworks.co.uk/cgi-bin/TUaz.exe?Guide=Apex&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A Locking Mechanism in Oracle 10g for Web Applications - &lt;a href="http://husnusensoy.wordpress.com/2007/07/28/a-locking-mechanism-in-oracle-10g-for-web-applications/"&gt;http://husnusensoy.wordpress.com/2007/07/28/a-locking-mechanism-in-oracle-10g-for-web-applications/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ajax Region Pull - &lt;a href="http://apex.oracle.com/pls/otn/f?p=11933:48"&gt;http://apex.oracle.com/pls/otn/f?p=11933:48&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create INSERT Statement from table data: &lt;a href="http://www.xinotes.org/notes/note/597/"&gt;http://www.xinotes.org/notes/note/597/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-7154284743876305144?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/7154284743876305144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=7154284743876305144&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7154284743876305144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/7154284743876305144'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/04/more-interesting-blog-posts-about.html' title='More interesting blog posts about common APEX issues'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6284494241242467364</id><published>2010-04-19T19:48:00.005+02:00</published><updated>2010-04-19T21:06:43.461+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Get current url string</title><content type='html'>There are a couple of ways getting the url within javascript:&lt;br /&gt;&lt;a href="http://www.netlobo.com/url_query_string_javascript.html"&gt;Netlobo.com - Get URL Parameters Using Javascript&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mattwhite.me/11tmr.nsf/D6Plinks/MWHE-695L9Z"&gt;mattwhite.me - Get URL Parameter in Javascript&lt;/a&gt;&lt;br /&gt;It's all about this function: &lt;span style="font-weight:bold;"&gt;document.location.href&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To get the url with APEX features just follow these posts:&lt;br /&gt;&lt;a href="http://apex-notes.blogspot.com/2008/09/get-server-url-in-apex.html"&gt;Oracle Apex Notebook - Get server URL in Apex&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=4065310"&gt;APEX forum - Display current URL on page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=1573742"&gt;APEX forum - How to get the Current page's URL to an Item?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=3485129"&gt;APEX forum - How to get Current URL in Apex?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6284494241242467364?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6284494241242467364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6284494241242467364&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6284494241242467364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6284494241242467364'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/04/get-current-url-string.html' title='Get current url string'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-4052673175586975020</id><published>2010-04-14T19:57:00.005+02:00</published><updated>2010-04-14T22:42:35.774+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Fill select results with blank rows</title><content type='html'>To fill selects to a specific amount of rows with blank rows. Just use the &lt;a href="http://www.adp-gmbh.ch/ora/sql/examples/generate_rows.html"&gt;rownum connect by trick&lt;/a&gt;:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;-- select template&lt;br /&gt;SELECT *&lt;br /&gt;FROM (SELECT rownum, test_col&lt;br /&gt;      FROM test_table t&lt;br /&gt;      UNION ALL&lt;br /&gt;      SELECT *&lt;br /&gt;      FROM (SELECT rownum AS er, 'empty' &lt;br /&gt;            FROM dual CONNECT BY rownum &lt;= 99) e&lt;br /&gt;      WHERE e.er &gt; (SELECT MAX(rownum) FROM test_table));&lt;br /&gt;&lt;br /&gt;-- emp table example for 20 rows&lt;br /&gt;SELECT *&lt;br /&gt;FROM (SELECT rownum, ename, job&lt;br /&gt;      FROM emp em&lt;br /&gt;      UNION ALL&lt;br /&gt;      SELECT *&lt;br /&gt;      FROM (SELECT rownum AS er, '-' as er1, '-' as er2 &lt;br /&gt;            FROM dual CONNECT BY rownum &lt;= 20) e&lt;br /&gt;      WHERE e.er &gt; (SELECT MAX(rownum) FROM emp));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I tried the select inside the APEX SQL Workshop:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/S8YEwXD8M7I/AAAAAAAAARA/IP15DuFG2ek/s1600/select1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 125px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/S8YEwXD8M7I/AAAAAAAAARA/IP15DuFG2ek/s400/select1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5460056827104080818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7ko33pi4F4/S8YEwu-E62I/AAAAAAAAARI/ikaN_dghtOI/s1600/result1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 181px; height: 400px;" src="http://3.bp.blogspot.com/_A7ko33pi4F4/S8YEwu-E62I/AAAAAAAAARI/ikaN_dghtOI/s400/result1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5460056833521937250" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-4052673175586975020?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/4052673175586975020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=4052673175586975020&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4052673175586975020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/4052673175586975020'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/04/fill-select-with-blank-values.html' title='Fill select results with blank rows'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7ko33pi4F4/S8YEwXD8M7I/AAAAAAAAARA/IP15DuFG2ek/s72-c/select1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6348033220748848917</id><published>2010-04-12T18:17:00.005+02:00</published><updated>2010-04-13T17:11:21.243+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Open Windows directory with APEX (IE only)</title><content type='html'>All you need to open a MS file system folder with APEX is this little javascript:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Header part&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;function fnc_window()  {w = open('C:\\Users', "winLov","scrollbars=yes,resizable=no,width=600,height=400");&lt;br /&gt;if (w.opener == null)&lt;br /&gt;w.opener = self;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Open window on page load&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;body onload="javascript:fnc_window()"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;About a comment from Carsten&lt;/span&gt;&lt;br /&gt;Dies ist das richtige Select:&lt;br /&gt;SELECT '\\apc' || pcnummer || '\c$' as LINK FROM table....;&lt;br /&gt;Interessante Idee!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6348033220748848917?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6348033220748848917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6348033220748848917&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6348033220748848917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6348033220748848917'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/04/open-windows-directory-with-apex-ie.html' title='Open Windows directory with APEX (IE only)'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6047898302486577536</id><published>2010-04-07T18:40:00.005+02:00</published><updated>2010-04-07T19:51:02.715+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Open your browser window in fullscreen mode</title><content type='html'>I answered a question in the &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=1054406"&gt;APEX forum&lt;/a&gt; about an automatic full screen mode for your APEX application.&lt;br /&gt;&lt;br /&gt;There are a couple of ways how you can achieve this. Anyway there is no simple solution and each way has some bad sides too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Solution 1:&lt;/span&gt; Use a temporary HTML page to open your application window&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;HTML&gt;&lt;br /&gt;  &amp;lt;HEAD&gt;&lt;br /&gt;    &amp;lt;TITLE&gt;Test&amp;lt;/TITLE&gt;&lt;br /&gt;  &amp;lt;/HEAD&gt;&lt;br /&gt;  &amp;lt;BODY&gt;&lt;br /&gt;  &amp;lt;script type="text/javascript"&gt;&lt;br /&gt;   window.opener=self;&lt;br /&gt;   // fullscreen only &lt;br /&gt;   window.open('http://YOUR_URL','','fullscreen=yes');&lt;br /&gt;   // fullscreen with no bars inside your browser&lt;br /&gt;   window.open('http://YOUR_URL','','fullscreen=yes,menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes');&lt;br /&gt; window.close();&lt;br /&gt;  &amp;lt;/script&gt;&lt;br /&gt;  &amp;lt;/BODY&gt;&lt;br /&gt;&amp;lt;/HTML&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Solution 2:&lt;/span&gt; Use ActiveX (IE only)&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;HTML&gt;&lt;br /&gt; &amp;lt;HEAD&gt;&lt;br /&gt; &amp;lt;script type="text/javascript"&gt;&lt;br /&gt;  function fnc_fullscreen()&lt;br /&gt;  {&lt;br /&gt;  var obj = new ActiveXObject("Wscript.shell");&lt;br /&gt;  obj.SendKeys("{f11}");&lt;br /&gt;  }&lt;br /&gt; &amp;lt;/script&gt;&lt;br /&gt; &amp;lt;/HEAD&gt;&lt;br /&gt; &amp;lt;BODY onload="javascript:fnc_fullscreen()"&gt; &lt;br /&gt; &lt;br /&gt; &amp;lt;/BODY&gt;&lt;br /&gt;&amp;lt;/HTML&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Solution 3:&lt;/span&gt; Set size after max screen size (not good for two screens, not tested yet)&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;HTML&gt;&lt;br /&gt; &amp;lt;HEAD&gt;&lt;br /&gt; &amp;lt;script type="text/javascript"&gt;&lt;br /&gt; function fnc_fullscreen()&lt;br /&gt;  {&lt;br /&gt;  window.moveTo(0,0);&lt;br /&gt;  window.resizeTo(screen.availWidth,screen.availHeight);&lt;br /&gt;  }&lt;br /&gt; &amp;lt;/script&gt;&lt;br /&gt; &amp;lt;/HEAD&gt;&lt;br /&gt; &amp;lt;BODY onload="javascript:fnc_fullscreen()"&gt; &lt;br /&gt; &lt;br /&gt; &amp;lt;/BODY&gt;&lt;br /&gt;&amp;lt;/HTML&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Source: &lt;a href="http://www.webmasterworld.com/webmaster/3792262.htm"&gt;http://www.webmasterworld.com/webmaster/3792262.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you found a better way fixing this issue. I would really like to hear it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6047898302486577536?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6047898302486577536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6047898302486577536&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6047898302486577536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6047898302486577536'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/04/open-your-browser-window-in-fullscreen.html' title='Open your browser window in fullscreen mode'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2821563422683746890</id><published>2010-03-17T19:29:00.007+01:00</published><updated>2010-03-17T20:02:43.466+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Building IR filters with AJAX - not solved yet</title><content type='html'>I got stuck on a problem with Interactive Reports.&lt;br /&gt;I wanted to build filters during the application runtime with AJAX. These filters should be created if an user makes changes with select lists or trees similar to my old example:&lt;br /&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=65555:28"&gt;IR with dynamic rules&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What I need now are exact filters on hidden or visible fields:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/S6EglzsHW2I/AAAAAAAAAQY/rE29RooGbdg/s1600-h/how.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 397px; height: 161px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/S6EglzsHW2I/AAAAAAAAAQY/rE29RooGbdg/s400/how.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5449672857997499234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My idea was to use the apex_util.ir_filter procedure:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;apex_util.ir_filter(&lt;br /&gt;p_page_id in number, -- Page that contains an Interactive Report&lt;br /&gt;p_report_column in varchar2, -- Name of the report SQL column to be filtered&lt;br /&gt;p_operator_abbr in varchar2 default null, -- Filter type&lt;br /&gt;p_filter_value in varchar2); -- Value of filter, not used for N and NN&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With an application process:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;-- application process AP_GET_CAT&lt;br /&gt;declare&lt;br /&gt;  V_CAT varchar2(100);&lt;br /&gt;begin&lt;br /&gt; select c.cat_name into V_CAT from categories where c_id = :P1_C_ID;&lt;br /&gt;&lt;br /&gt; apex_util.ir_filter(&lt;br /&gt;  p_page_id=&gt;1,&lt;br /&gt;  p_report_column=&gt;'CAT_NAME',&lt;br /&gt;  p_operator_abbr=&gt;'EQ',&lt;br /&gt;  p_filter_value=&gt;V_CAT);&lt;br /&gt;&lt;br /&gt; htp.prn(V_CAT);&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and some javascript:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;// js get cat data&lt;br /&gt;function set_cat(v_id) {&lt;br /&gt;  var get = new htmldb_Get(null,&amp;APP_ID.,'APPLICATION_PROCESS=AP_GET_CAT',0);&lt;br /&gt;  get.add('P1_C_ID',v_id)&lt;br /&gt;  $x('P1_C_ID').value = v_id;&lt;br /&gt;  gReturn = get.get();&lt;br /&gt;  get = null; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The functionality itself worked well but a submit is required for the APEX procedure apex_util.ir_filter.&lt;br /&gt;&lt;br /&gt;My other idea was to imitate the user actions with javascript only:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;// js code: set IR filter&lt;br /&gt;$x('apexir_COLUMN_NAME').value = 'CAT_NAME';&lt;br /&gt;$x('apexir_STRING_OPT').value = '=';&lt;br /&gt;$x('apexir_EXPR').value = $x('P1_CAT_NAME').value;&lt;br /&gt;gReport.column.filter();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Unfortunately it doesn't work this way... But it feels close to a solution.&lt;br /&gt;&lt;br /&gt;It works if I use a sql where clause for my IR like this:&lt;br /&gt;SELECT s_id, sales, sales_info&lt;br /&gt;FROM sales, categories&lt;br /&gt;WHERE s_c_id = c_id&lt;br /&gt;AND s_c_id = :P1_C_ID;&lt;br /&gt;&lt;br /&gt;and some javascript:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;// not tested&lt;br /&gt;var get = new htmldb_Get(null,&amp;APP_ID.,'APPLICATION_PROCESS=AP_GET_CAT',0);&lt;br /&gt;get.add('P1_C_ID',v_id)&lt;br /&gt;$x('P1_C_ID').value = v_id;&lt;br /&gt;gReturn = get.get();&lt;br /&gt;init_gReport();gReport.reset();gReport.pull();&lt;br /&gt;get = null; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Maybe one of you guys did already solve this task and could help me out here.&lt;br /&gt;&lt;br /&gt;Forum entry: &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=4167521"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=4167521&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tobias&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2821563422683746890?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2821563422683746890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2821563422683746890&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2821563422683746890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2821563422683746890'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/03/building-ir-filters-with-ajax-not.html' title='Building IR filters with AJAX - not solved yet'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7ko33pi4F4/S6EglzsHW2I/AAAAAAAAAQY/rE29RooGbdg/s72-c/how.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8098211799162554244</id><published>2010-03-11T22:00:00.009+01:00</published><updated>2010-05-07T15:42:14.233+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE issues'/><title type='text'>Automatic linebreak if word breaks out of table element</title><content type='html'>I found a great source how to prevent word break outs in &amp;lt;th&gt; and &amp;lt;td&gt; elements:&lt;br /&gt;&lt;a href="http://petesbloggerama.blogspot.com/2007/02/firefox-ie-word-wrap-word-break-tables.html"&gt;Peter Bromberg's: FIREFOX / IE Word-Wrap, Word-Break, TABLES FIX &lt;/a&gt;&lt;br /&gt;How does the break out looks like:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7ko33pi4F4/S5liXBJBesI/AAAAAAAAAQQ/4Hu0lgRgYeo/s1600-h/break_out_issue.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 329px; height: 144px;" src="http://1.bp.blogspot.com/_A7ko33pi4F4/S5liXBJBesI/AAAAAAAAAQQ/4Hu0lgRgYeo/s400/break_out_issue.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5447493371864120002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CSS code to prevent this issue:&lt;br /&gt;&lt;pre name="code" class="css"&gt;&lt;br /&gt;.prevent_breakout&lt;br /&gt;{&lt;br /&gt;width: 250px;&lt;br /&gt;white-space: pre-wrap; /* css-3 */&lt;br /&gt;white-space: -moz-pre-wrap; /* Mozilla, since 1999 */&lt;br /&gt;white-space: -pre-wrap; /* Opera 4-6 */&lt;br /&gt;white-space: -o-pre-wrap; /* Opera 7 */&lt;br /&gt;word-wrap: break-word; /* Internet Explorer 5.5+ */&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With javascript it could look like this:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt; function set_lb(v_val, v_max_width){&lt;br /&gt;  var v_browser=navigator.appName; &lt;br /&gt;  // ...&lt;br /&gt;  if (v_browser=="Microsoft Internet Explorer")  &lt;br /&gt;  {&lt;br /&gt;    $x(v_val).style.width = v_max_width; // set width&lt;br /&gt;    $x(v_val).style.wordWrap   = 'break-word';  // Internet Explorer 5.5+&lt;br /&gt;  }else&lt;br /&gt;  {&lt;br /&gt;    $x(v_val).style.width = v_max_width; // set width&lt;br /&gt;    $x(v_val).style.whiteSpace = 'pre-wrap'; // css-3&lt;br /&gt;    $x(v_val).style.whiteSpace = '-pre-wrap';  // Opera 4-6&lt;br /&gt;    $x(v_val).style.whiteSpace = '-o-pre-wrap';  // Opera 7&lt;br /&gt;    $x(v_val).style.wordWrap   = 'break-word';  // Internet Explorer 5.5+&lt;br /&gt;    $x(v_val).style.whiteSpace = '-moz-pre-wrap'; // Mozilla, since 1999&lt;br /&gt;  }&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Thanks Peter for this great hint!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 07.05.2010&lt;/b&gt;&lt;br /&gt;overflow:hidden;float:left;width:250px;word-wrap:break-word;white-space:pre-wrap;display:block;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8098211799162554244?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8098211799162554244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8098211799162554244&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8098211799162554244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8098211799162554244'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/03/automatic-linebreak-if-word-breaks-out.html' title='Automatic linebreak if word breaks out of table element'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7ko33pi4F4/S5liXBJBesI/AAAAAAAAAQQ/4Hu0lgRgYeo/s72-c/break_out_issue.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-3398808537491805124</id><published>2010-03-10T22:20:00.004+01:00</published><updated>2010-03-10T22:33:18.762+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><category scheme='http://www.blogger.com/atom/ns#' term='IE issues'/><title type='text'>Weird IE behaviour with JS function String.charAt(Index)</title><content type='html'>I had a real pain with the MS Internet Explorer and the javascript function &lt;a href="http://www.hunlock.com/blogs/The_Complete_Javascript_Strings_Reference"&gt;String.charAt(Index)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I wanted to update a string and checked each value. IE was able to give just an empty value back. But it was not checkable!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;if ((v_browser=="Microsoft Internet Explorer")&amp;&amp; (v_string.charAt(x)=='')&amp;&amp; (y+1==x) &amp;&amp; (v_string.charAt(x+1)=='&lt;'||v_string.charAt(x+2)=='&lt;'))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even the length was 1 and not 0!&lt;br /&gt;Finally I tried this function &lt;span style="font-weight:bold;"&gt;String.charCodeAt(Index)&lt;/span&gt; with an alert box and voilà two values where prompted: 13 and 10&lt;br /&gt;&lt;br /&gt;13 and 10 wait... LINEBREAK!&lt;br /&gt;&lt;br /&gt;HELL why does it do such things...&lt;br /&gt;&lt;br /&gt;Now I could check it!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;if ((v_browser=="Microsoft Internet Explorer")&amp;&amp;(v_check_unicode=='13'||v_check_unicode=='10'||v_check_unicode=='NaN'))  &lt;/span&gt; &lt;br /&gt;&lt;br /&gt;My script works and I feel released.&lt;br /&gt;Now I have to watch the end of Real against Lyon.. :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-3398808537491805124?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/3398808537491805124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=3398808537491805124&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3398808537491805124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/3398808537491805124'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/03/weird-ie-behaviour-with-js-function.html' title='Weird IE behaviour with JS function String.charAt(Index)'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-8751145259236489778</id><published>2010-03-10T20:11:00.005+01:00</published><updated>2010-03-10T20:30:55.554+01:00</updated><title type='text'>Column header groups in APEX report</title><content type='html'>Did you ever want a report header grouped like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7ko33pi4F4/S5fvvCrBbxI/AAAAAAAAAP4/oz4XyxENid4/s1600-h/report_header_groups.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 146px;" src="http://3.bp.blogspot.com/_A7ko33pi4F4/S5fvvCrBbxI/AAAAAAAAAP4/oz4XyxENid4/s400/report_header_groups.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5447085865778114322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just add some html code into your report template &gt; column headings &gt; Before Column Heading:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7ko33pi4F4/S5fwJwSn3JI/AAAAAAAAAQA/O0RtpMSqkfE/s1600-h/report_header_settings.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 181px;" src="http://4.bp.blogspot.com/_A7ko33pi4F4/S5fwJwSn3JI/AAAAAAAAAQA/O0RtpMSqkfE/s400/report_header_settings.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5447086324700404882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Important to know:&lt;br /&gt; - Changes like this have effect on every report you use with that report template&lt;br /&gt; - Make a copy of your existing report template and use the new one instead &lt;br /&gt;&lt;br /&gt;In my example I used 8 columns and three of them should have a group column above it. Use colspan="3" to stripe it over 3 columns.&lt;br /&gt;&lt;br /&gt;Here the generated HTML code:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7ko33pi4F4/S5fyWXQiFNI/AAAAAAAAAQI/fYYR7aLI8xA/s1600-h/report_header_html.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 209px;" src="http://1.bp.blogspot.com/_A7ko33pi4F4/S5fyWXQiFNI/AAAAAAAAAQI/fYYR7aLI8xA/s400/report_header_html.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5447088740342306002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For APEX Interactive Reports watch there:&lt;br /&gt;&lt;a href="http://dgielis.blogspot.com/2008/11/group-headings-in-interactive-report.html"&gt;Dimitri Gielis: Group Headings in an Interactive Report (APEX)&lt;/a&gt;&lt;br /&gt;And there:&lt;br /&gt;&lt;a href="http://apex-smb.blogspot.com/2009/03/column-groups-in-apex-interactive.html"&gt;Martin Giffy D'Souza: Column Groups in APEX Interactive Reports&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-8751145259236489778?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/8751145259236489778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=8751145259236489778&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8751145259236489778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/8751145259236489778'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/03/column-header-groups-in-apex-report.html' title='Column header groups in APEX report'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7ko33pi4F4/S5fvvCrBbxI/AAAAAAAAAP4/oz4XyxENid4/s72-c/report_header_groups.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6311503617336656284</id><published>2010-03-01T23:13:00.003+01:00</published><updated>2010-03-01T23:31:47.524+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='EXTJS'/><category scheme='http://www.blogger.com/atom/ns#' term='APEX issues'/><title type='text'>AJAX based select list in APEX - Part 2</title><content type='html'>I couple of days ago I wrote about a way &lt;a href="http://apex-at-work.blogspot.com/2010/02/ajax-based-select-list-in-apex.html"&gt;using AJAX based select lists in APEX&lt;/a&gt;.&lt;br /&gt;After some hints from &lt;a href="http://www.oracle-and-apex.com/"&gt;Peter Raganitsch&lt;/a&gt; I tried the ApexLib Framework but I run into some issues with ExtJS.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Error message:&lt;/span&gt;&lt;br /&gt;vFieldValue is undefined&lt;br /&gt;populateLovField(Object { name="pFieldId"}, Object { name="pLovEntry"})ApexLib_Full.js&lt;br /&gt;populateDependingLovs(Object { name="pFieldId"})ApexLib_Full.js&lt;br /&gt;(?)()ApexLib_Full.js&lt;br /&gt;(?)(Object { name="pEvent"})ApexLib_Full.js&lt;br /&gt;vAjaxRequest.add(pLovEntry.oUsedFi...ace(/\:/g, String.fromCharCode(1)));&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Error part where somehow an ExtJS function got called:&lt;/span&gt;&lt;br /&gt;vAjaxRequest.add(pLovEntry.oUsedFieldList[ii], vFieldValue.replace(/\:/g, String.fromCharCode(1)));&lt;br /&gt;&lt;br /&gt;I found another solution from Carl Backstrom: &lt;a href="http://htmldb.oracle.com/pls/otn/f?p=11933:37"&gt;Ajax Selects&lt;/a&gt;&lt;br /&gt;I modified his script a bit and used it in my environment.&lt;br /&gt;&lt;br /&gt;Using the ApexLib would have been much easier luckily I just had a really small application. &lt;br /&gt;&lt;br /&gt;Good for us that APEX 4.0 will solve these problems by a new standard feature:&lt;br /&gt;&lt;a href="http://www.inside-oracle-apex.com/oracle-apex-4-0-cascading-lovsselect-lists/"&gt;Oracle APEX 4.0: Cascading LOVs/Select Lists&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6311503617336656284?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6311503617336656284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6311503617336656284&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6311503617336656284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6311503617336656284'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/03/ajax-based-select-list-in-apex-update.html' title='AJAX based select list in APEX - Part 2'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-5466067789495128947</id><published>2010-02-22T22:49:00.005+01:00</published><updated>2010-09-01T23:10:44.701+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='EXTJS'/><category scheme='http://www.blogger.com/atom/ns#' term='DE'/><category scheme='http://www.blogger.com/atom/ns#' term='AaW - DBMON'/><title type='text'>AaW - DBMON First pictures / Erste Bilder</title><content type='html'>The following post is targeted towards a German audience, thus it is in German:&lt;br /&gt;&lt;br /&gt;Anfang Februar habe ich über eine Oracle DB Monitoring Anwendung für die deutsche APEX Community berichtet: &lt;a href="http://apex-at-work.blogspot.com/2010/02/whats-about-german-apex-users.html"&gt;Whats about the German APEX users?&lt;/a&gt;&lt;br /&gt;Endlich habe ich es geschafft ein paar Screenshots zu erstellen. Die Anwendung basiert auf APEX und ExtJS und sammelt derzeit folgende Informationen:&lt;br /&gt; - Tablespace Auslastung&lt;br /&gt; - CPU Auslastung&lt;br /&gt; - Buffer Hitratio Auslastung&lt;br /&gt; - Session Zähler&lt;br /&gt; - PGA Auslastung&lt;br /&gt; - Init.ora Paramter&lt;br /&gt; - Aktueller DB Status&lt;br /&gt;&lt;br /&gt;Daten werden durch den DBMS_SCHEDULER über ein PL/SQL Package zu spezifizierten Zeiten gesammelt und können dadurch rückwirkend ausgewertet werden.&lt;br /&gt;Gerade für Oracle XE Umgebungen kann dieses kleine Tool von nutzen sein.&lt;br /&gt;&lt;br /&gt;Derzeit suche ich noch Beta-Tester, um für Ende März eine erste Testversion auf Herz und Nieren zu überprüfen. Wenn Interesse besteht, schickt einfach eine Email an: &lt;a href="mailto:tobias-arnhold@hotmail.de"&gt;Tobias Arnhold (tobias-arnhold@hotmail.de)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hier die ersten Screenshots:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7ko33pi4F4/S4MAqdoQFjI/AAAAAAAAAPw/02yZ1aZMUAU/s1600-h/AAW-DBMON_P101.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 193px;" src="http://3.bp.blogspot.com/_A7ko33pi4F4/S4MAqdoQFjI/AAAAAAAAAPw/02yZ1aZMUAU/s400/AAW-DBMON_P101.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5441193504301651506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/S4MAp6Xtg8I/AAAAAAAAAPo/Sa9eftRmlDw/s1600-h/AAW-DBMON_P1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 193px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/S4MAp6Xtg8I/AAAAAAAAAPo/Sa9eftRmlDw/s400/AAW-DBMON_P1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5441193494837035970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/S4MAp-2ZjaI/AAAAAAAAAPg/zPXPh4BdeIA/s1600-h/AAW-DBMON_P1_BHR1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/S4MAp-2ZjaI/AAAAAAAAAPg/zPXPh4BdeIA/s400/AAW-DBMON_P1_BHR1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5441193496039493026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7ko33pi4F4/S4MApos6ROI/AAAAAAAAAPY/DX-utal64Mw/s1600-h/AAW-DBMON_P1_ADMIN1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://2.bp.blogspot.com/_A7ko33pi4F4/S4MApos6ROI/AAAAAAAAAPY/DX-utal64Mw/s400/AAW-DBMON_P1_ADMIN1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5441193490094114018" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-5466067789495128947?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/5466067789495128947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=5466067789495128947&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5466067789495128947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/5466067789495128947'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/02/aaw-dbmon-first-pictures-erste-bilder.html' title='AaW - DBMON First pictures / Erste Bilder'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7ko33pi4F4/S4MAqdoQFjI/AAAAAAAAAPw/02yZ1aZMUAU/s72-c/AAW-DBMON_P101.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2619329782942200485</id><published>2010-02-17T23:06:00.007+01:00</published><updated>2010-02-22T21:38:37.602+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><title type='text'>Set item value with AJAX</title><content type='html'>Update an APEX item dynamically with AJAX:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;// 1. Item: HTML Form Element Attributes:&lt;br /&gt;onChange="javascript:fnc_setValue('P1_VALUE')";&lt;br /&gt;&lt;br /&gt;// 2. Page: HTML Header&lt;br /&gt;&amp;lt;script language="JavaScript1.1" type="text/javascript"&gt;&lt;br /&gt;function fnc_setValue(v_item)&lt;br /&gt;{ &lt;br /&gt;  var get = new htmldb_Get(null,&amp;APP_ID.,'APPLICATION_PROCESS=v_dummy',0);&lt;br /&gt;  get.add(v_item,html_GetElement(v_item).value)&lt;br /&gt;  gReturn = get.get();&lt;br /&gt;  html_GetElement(v_item).value = v_item;&lt;br /&gt;  get = null; &lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Denes described it more detailed (plus example) in his blog:&lt;br /&gt;&lt;a href="http://deneskubicek.blogspot.com/2009/01/ajax-setting-item-session-state.html"&gt;Setting Item Session State using Ajax&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have you seen the advanced freeze panes example like you can use in Oracle Forms?&lt;br /&gt;&lt;a href="http://translate.google.de/translate?hl=de&amp;sl=de&amp;tl=en&amp;u=http%3A%2F%2Fwww.oracle.com%2Fglobal%2Fde%2Fcommunity%2Ftipps%2Ffreezepanes-mit-spalte%2Findex.html"&gt;Freeze Panes in an APEX Report: Now with columns &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated script 22.02.2010:&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;// 1. Item: HTML Form Element Attributes:&lt;br /&gt;onChange="javascript:fnc_setValue('P1_VALUE')";&lt;br /&gt;&lt;br /&gt;// 2. Page: HTML Header&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;function fnc_setValue(v_item)&lt;br /&gt;{ // Works with select lists, radio buttons, ...&lt;br /&gt;  var get = new htmldb_Get(null,&amp;APP_ID.,'APPLICATION_PROCESS=v_dummy',0);&lt;br /&gt;  get.add(v_item,$v(v_item))&lt;br /&gt;  // For Display as Text items add:&lt;br /&gt;  // html_GetElement('v_item').innerHTML = $v(v_item);   &lt;br /&gt;  gReturn = get.get();&lt;br /&gt;  get = null; &lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2619329782942200485?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2619329782942200485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2619329782942200485&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2619329782942200485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2619329782942200485'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/02/set-item-value-with-ajax.html' title='Set item value with AJAX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2514020814244036353</id><published>2010-02-15T23:23:00.008+01:00</published><updated>2010-02-15T23:50:43.001+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='OracleXE'/><title type='text'>Making a connection from Oracle XE to MySQL with ODBC</title><content type='html'>After searching the Web I found a nice description from &lt;a href="http://www.jameskoopmann.com"&gt;James Koopmann&lt;/a&gt;: &lt;a href="http://www.dbasupport.com/oracle/ora10g/connection01.shtml"&gt;Making a Connection from Oracle to SQL Server&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then I found a Metalink note: &lt;a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;id=114820.1"&gt;WIN NT - Generic Connectivity using ODBC [ID 114820.1]&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;What software do you need? &lt;a href="http://dev.mysql.com/downloads/connector/odbc/"&gt;MySQL ODBC driver&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now follow these steps:  &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.&lt;/span&gt; Add a new file:&lt;br /&gt;&amp;lt;ORACLE HOME&gt;\hs\admin\initMYSQL_DB.ora&lt;br /&gt;&lt;span style="font-style:italic;"&gt;# This is a sample agent init file that contains the HS parameters that are&lt;br /&gt;    # needed for an ODBC Agent.&lt;br /&gt;&lt;br /&gt;    #&lt;br /&gt;    # HS init parameters&lt;br /&gt;    #&lt;br /&gt;    HS_FDS_CONNECT_INFO = MYSQL_DB&lt;br /&gt;    HS_FDS_TRACE_LEVEL = OFF&lt;br /&gt;&lt;br /&gt;    #&lt;br /&gt;    # Environment variables required for the non-Oracle system&lt;br /&gt;    #&lt;br /&gt;    #set &lt;envvar&gt;=&lt;value&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.&lt;/span&gt; Update your Listener.ora (In my case I use the existing one):&lt;br /&gt;    ...&lt;br /&gt;        (SID_DESC=&lt;br /&gt;          (SID_NAME=MYSQL_DB)&lt;br /&gt;          (ORACLE_HOME=F:\oracle\app\oracle\product\10.2.0\server)&lt;br /&gt;          (PROGRAM=hsodbc)&lt;br /&gt;        )&lt;br /&gt;    ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.&lt;/span&gt; Update your TNSNAMES.ora and restart your Listener:&lt;br /&gt;    ...&lt;br /&gt;    MYSQL_DB =&lt;br /&gt;      (DESCRIPTION=&lt;br /&gt;        (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.1)(PORT=1521))&lt;br /&gt;        (CONNECT_DATA=(SID=MYSQL_DB))&lt;br /&gt;        (HS=OK)&lt;br /&gt;      )&lt;br /&gt;    ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4.&lt;/span&gt; Create database link inside your database:&lt;br /&gt;create database link MYSQL_DB&lt;br /&gt;  connect to "test_db" identified by "test_db"&lt;br /&gt;  using 'MYSQL_DB';&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5.&lt;/span&gt; SQL&gt; select * from test_table@MYSQL_DB;&lt;br /&gt;&lt;br /&gt;Issues I know about: &lt;a href="http://apex-at-work.blogspot.com/2010/02/mysqloracle-xe-integration-invalid.html"&gt;Invalid identifier problem&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2514020814244036353?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2514020814244036353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2514020814244036353&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2514020814244036353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2514020814244036353'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/02/making-connection-from-oracle-xe-to.html' title='Making a connection from Oracle XE to MySQL with ODBC'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-6020315938451592315</id><published>2010-02-08T21:30:00.003+01:00</published><updated>2010-02-08T21:41:18.141+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>AJAX based select list in APEX</title><content type='html'>I looked through the Web for a simple way using a select list with dynamic data exchange inside my APEX application. What I found was just amazing (Thanks to &lt;a href="http://spendolini.blogspot.com/"&gt;Scott&lt;/a&gt;):&lt;br /&gt;&lt;a href="http://spendolini.blogspot.com/2005/10/ajax-select-list-code-generator.html"&gt;&lt;br /&gt;ajax-select-list-code-generator for APEX&lt;/a&gt;&lt;br /&gt;&lt;a href="http://htmldb.oracle.com/pls/otn/f?p=33867:2"&gt;Select list code generator&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7ko33pi4F4/S3B20BMEX3I/AAAAAAAAAOw/G49nNkvGPlk/s1600-h/sl_ajax_process.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://3.bp.blogspot.com/_A7ko33pi4F4/S3B20BMEX3I/AAAAAAAAAOw/G49nNkvGPlk/s400/sl_ajax_process.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435975386280517490" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-6020315938451592315?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/6020315938451592315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=6020315938451592315&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6020315938451592315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/6020315938451592315'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/02/ajax-based-select-list-in-apex.html' title='AJAX based select list in APEX'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7ko33pi4F4/S3B20BMEX3I/AAAAAAAAAOw/G49nNkvGPlk/s72-c/sl_ajax_process.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-728339020609070918</id><published>2010-02-08T21:04:00.004+01:00</published><updated>2010-02-08T21:28:40.421+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='OracleXE'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-'/><title type='text'>MySQL/Oracle XE integration: Invalid identifier problem</title><content type='html'>I linked a MySQL table into an OracleXE database (&lt;a href="http://www.dbmonster.com/Uwe/Forum.aspx/oracle-server/4520/HS-ODBC-DBLINK"&gt;Short How to&lt;/a&gt;) and discovered a really strange behavior. When I tried an usual select about the MySQL table from my sqlplus client an error occurred: &lt;span style="font-weight:bold;"&gt;ORA-00904: "last_name": Invalid identifier&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Here the whole description:&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;-- Error:&lt;br /&gt;Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0 &lt;br /&gt;Connected as test_user&lt;br /&gt; &lt;br /&gt;SQL&gt; SELECT "last_name" FROM tbl_users@MYSQL_USER u; &lt;br /&gt; &lt;br /&gt;SELECT "last_name" FROM tbl_users@MYSQL_USER u&lt;br /&gt; &lt;br /&gt;ORA-00904: "last_name": ungültiger Bezeichner&lt;br /&gt; &lt;br /&gt;SQL&gt; &lt;br /&gt;&lt;br /&gt;-- MySQL DDL TABLE:&lt;br /&gt;DROP TABLE IF EXISTS 'my_sqldb'.'tbl_users';&lt;br /&gt;CREATE TABLE  'my_sqldb'.'tbl_users' (&lt;br /&gt;  'u_id' int(10) unsigned NOT NULL auto_increment,&lt;br /&gt;  'last_name' varchar(50) NOT NULL,&lt;br /&gt;  'forename' varchar(50) NOT NULL,&lt;br /&gt;  'department_id' int(10) unsigned NOT NULL,&lt;br /&gt;  PRIMARY KEY  ('u_id')&lt;br /&gt;) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Solution:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://bugs.mysql.com/bug.php?id=47680"&gt;Query MySQL table through Oracle APEX database using Oracle database link fails&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bugs.mysql.com/bug.php?id=45296"&gt;Issue while querying MySQL tables through Oracle Generic Connectivity Using ODBC&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Solution description:&lt;/span&gt;&lt;br /&gt;...I changed the character set settings to "utf8" of v5.1.6 mysql odbc driver &lt;br /&gt;   through "Details -&gt; Misc Options" as suggested and finally the problem was &lt;br /&gt;   resolved - the query returned the correct results...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7ko33pi4F4/S3ByfJXNxnI/AAAAAAAAAOo/LifUnAMXY0g/s1600-h/mysql_string_column_solution.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 129px;" src="http://4.bp.blogspot.com/_A7ko33pi4F4/S3ByfJXNxnI/AAAAAAAAAOo/LifUnAMXY0g/s400/mysql_string_column_solution.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435970629650990706" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-728339020609070918?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/728339020609070918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=728339020609070918&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/728339020609070918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/728339020609070918'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/02/mysqloracle-xe-integration-invalid.html' title='MySQL/Oracle XE integration: Invalid identifier problem'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7ko33pi4F4/S3ByfJXNxnI/AAAAAAAAAOo/LifUnAMXY0g/s72-c/mysql_string_column_solution.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6481483192141562388.post-2672007068325031673</id><published>2010-02-04T23:49:00.001+01:00</published><updated>2010-02-06T00:14:08.844+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APEX examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='EXTJS'/><category scheme='http://www.blogger.com/atom/ns#' term='TREE'/><title type='text'>Creating an ExtJS tree with PL/JSON</title><content type='html'>I searched for a smoother way building ExtJS trees in APEX and found a great post from Anja Hildebrandt: &lt;a href="http://apex2rule-the-world.blogspot.com/2009/10/erstellung-eines-extjs-baums.html"&gt;Nice trees with ExtJS (Erstellung eines ExtJS-Baums…)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;She used the PL/JSON Utility from Lewis Cunningham: &lt;a href="http://sourceforge.net/projects/pljson/"&gt;PL/JSON by jkrogsboell, lewiscunningham&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;During the time now Lewis developed a new version of the utility and Anjas code didn't work anymore. I updated her source code with the new version of PL/JSON 0.8.6.&lt;br /&gt;&lt;br /&gt;First I show how you build JSON output with the PL/JSON scripts:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Example - ex4.sql&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;SQL&gt; declare&lt;br /&gt;  2    obj json;&lt;br /&gt;  3    procedure p(v varchar2) as begin dbms_output.put_line(null);dbms_output.put_line(v); end;&lt;br /&gt;  4  begin&lt;br /&gt;  5    p('you can also put json or json_lists as values:');&lt;br /&gt;  6    obj := json(); --fresh json;&lt;br /&gt;  7    obj.put('text', 'Audi');&lt;br /&gt;  8    obj.put('id', 100);&lt;br /&gt;  9    obj.put('leaf', json_bool(true));&lt;br /&gt; 10    obj.put('href', 'f?p=110:1:');&lt;br /&gt; 11    obj.put('children', json_list('[{"text": "A4"},{"text": "A5"}]'));&lt;br /&gt; 12    obj.print;&lt;br /&gt; 13  end;&lt;br /&gt; 14  /&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;you can also put json or json_lists as values:&lt;br /&gt;{&lt;br /&gt;  "text" : "Audi",&lt;br /&gt;  "id" : 100,&lt;br /&gt;  "leaf" : true,&lt;br /&gt;  "href" : "f?p=305:1:",&lt;br /&gt;  "children" : [{&lt;br /&gt;    "text" : "A4"&lt;br /&gt;  }, {&lt;br /&gt;    "text" : "A5"&lt;br /&gt;  }]&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;PL/SQL procedure successfully completed&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://sourceforge.net/projects/pljson/forums/forum/935365/topic/3508957 "&gt;PL/JSON forum example&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt; &lt;br /&gt;SQL&gt; &lt;br /&gt;SQL&gt; DECLARE&lt;br /&gt;  2    resultset json;&lt;br /&gt;  3    row_list  json_list := json_list();&lt;br /&gt;  4    columns1   json;&lt;br /&gt;  5    num_rows  number := 2;&lt;br /&gt;  6    columns_length  number := 3;&lt;br /&gt;  7    procedure p(v varchar2) as begin dbms_output.put_line(null);dbms_output.put_line(v); end;&lt;br /&gt;  8  BEGIN&lt;br /&gt;  9    p('Data:');&lt;br /&gt; 10    FOR i IN 1 .. num_rows&lt;br /&gt; 11    LOOP&lt;br /&gt; 12      columns1 := json();&lt;br /&gt; 13      columns1.put('rownum', i);&lt;br /&gt; 14      FOR x IN 1 .. columns_length&lt;br /&gt; 15      LOOP&lt;br /&gt; 16        columns1.put('column' || x, 'Testdata');&lt;br /&gt; 17      END LOOP;&lt;br /&gt; 18      row_list.add_elem(columns1.to_anydata);&lt;br /&gt; 19    END LOOP;&lt;br /&gt; 20    resultset := json();&lt;br /&gt; 21    resultset.put('ResultSet', row_list);&lt;br /&gt; 22    resultset.print;&lt;br /&gt; 23  END;&lt;br /&gt; 24  /&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;Data:&lt;br /&gt;{&lt;br /&gt;  "ResultSet" : [{&lt;br /&gt;    "rownum" : 1,&lt;br /&gt;    "column1" : "Testdata",&lt;br /&gt;    "column2" : "Testdata",&lt;br /&gt;    "column3" : "Testdata"&lt;br /&gt;  }, {&lt;br /&gt;    "rownum" : 2,&lt;br /&gt;    "column1" : "Testdata",&lt;br /&gt;    "column2" : "Testdata",&lt;br /&gt;    "column3" : "Testdata"&lt;br /&gt;  }]&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;PL/SQL procedure successfully completed&lt;br /&gt; &lt;br /&gt;SQL&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated tree package of Anja&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;create or replace package PKG_EXTJS_JSON is&lt;br /&gt;&lt;br /&gt;  -- Author  : AHILDEBRANDT&lt;br /&gt;  --         : TARNHOLD&lt;br /&gt;  -- Created : 10.08.2009&lt;br /&gt;  -- Updated : 04.02.2010&lt;br /&gt;  -- Purpose : check if category has sub-categories&lt;br /&gt;  function hasChildren(i_cat_id in number) return boolean;&lt;br /&gt;&lt;br /&gt;  -- Purpose : create JSON-Object for category;&lt;br /&gt;  --           recursive&lt;br /&gt;  function getJsonObject(i_cat_id in number default 0) return json;&lt;br /&gt;&lt;br /&gt;  -- Purpose : function that calls getJsonObject and returns the result as string&lt;br /&gt;  function getTreeDataDynamic return varchar2;&lt;br /&gt;&lt;br /&gt;end PKG_EXTJS_JSON;&lt;br /&gt;&lt;br /&gt;create or replace package body PKG_EXTJS_JSON is&lt;br /&gt;/*&lt;br /&gt;  -- Author  : AHILDEBRANDT&lt;br /&gt;  --         : TARNHOLD&lt;br /&gt;  -- Created : 10.08.2009&lt;br /&gt;  -- Updated : 04.02.2010&lt;br /&gt;  -- Purpose : check if category has sub-categories&lt;br /&gt;*/&lt;br /&gt;function hasChildren(i_cat_id in number) return boolean is&lt;br /&gt;  v_count number:=0;&lt;br /&gt;begin&lt;br /&gt;  select nvl(count(*),0) into v_count from tbl_categories where c_par_id=i_cat_id and c_active = 'YES';&lt;br /&gt;  if v_count&gt;0 then&lt;br /&gt;    return true;&lt;br /&gt;  else&lt;br /&gt;    return false;&lt;br /&gt;  end if;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;  -- Author  : AHILDEBRANDT&lt;br /&gt;  --         : TARNHOLD&lt;br /&gt;  -- Created : 10.08.2009&lt;br /&gt;  -- Updated : 04.02.2010&lt;br /&gt;  -- Created : 10.08.2009&lt;br /&gt;  -- Purpose : create JSON-Object for category;&lt;br /&gt;  --           recursive&lt;br /&gt;*/&lt;br /&gt;function getJsonObject(i_cat_id in number default 0) return json is&lt;br /&gt;  v_json json:=json();&lt;br /&gt;  v_row_list json_list := json_list();&lt;br /&gt;  v_arr_id NUMBER;&lt;br /&gt;  v_ele_id NUMBER;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;  if i_cat_id = 1 then -- if category is root then set root-node&lt;br /&gt;    v_json.put(pair_name =&gt; 'id', pair_value =&gt; i_cat_id);&lt;br /&gt;    v_json.put(pair_name =&gt; 'text', pair_value =&gt; 'Root');&lt;br /&gt;  else -- else --&gt; usual node; use category infos&lt;br /&gt;    for cat in (select * from tbl_categories where c_id=i_cat_id and c_active = 'YES') loop&lt;br /&gt;      v_json.put(pair_name =&gt; 'id', pair_value =&gt; i_cat_id);&lt;br /&gt;      v_json.put(pair_name =&gt; 'text', pair_value =&gt; cat.c_name);&lt;br /&gt;    end loop;&lt;br /&gt;  end if;&lt;br /&gt;&lt;br /&gt;  if not hasChildren(i_cat_id) then -- if node has no children&lt;br /&gt;    v_json.put(pair_name =&gt; 'leaf', pair_value =&gt; json_bool(true)); -- mark as leaf&lt;br /&gt;    v_json.put(pair_name =&gt; 'href', pair_value =&gt; 'f?p=110:1:'||v('APP_SESSION')); -- set a link if needed&lt;br /&gt;    -- v_json.put(pair_name =&gt; 'href', pair_value =&gt; 'javascript:show_cat('||i_cat_id|| ');');  -- set a javascript function&lt;br /&gt;  else -- sonst&lt;br /&gt;    v_json.put(pair_name =&gt; 'leaf', pair_value =&gt; json_bool(false)); -- mark as node with children&lt;br /&gt;    for child in (select * from tbl_categories where c_par_id=i_cat_id and c_active = 'YES') loop -- loop through all sub-categories&lt;br /&gt;      -- create JSON-object for sub-category using recursive call and the append to array&lt;br /&gt;      v_row_list.add_elem(getJsonObject(i_cat_id =&gt; child.c_id).to_anydata);&lt;br /&gt;    end loop;&lt;br /&gt;    v_json.put(pair_name =&gt; 'children', pair_value =&gt; v_row_list); -- add array for subcategories&lt;br /&gt;  end if;&lt;br /&gt;&lt;br /&gt;  return v_json;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;  -- Author  : AHILDEBRANDT&lt;br /&gt;  --         : TARNHOLD&lt;br /&gt;  -- Created : 10.08.2009&lt;br /&gt;  -- Updated : 04.02.2010&lt;br /&gt;  -- Purpose : function that calls getJsonObject and returns the result as string&lt;br /&gt;*/&lt;br /&gt;function getTreeDataDynamic return varchar2 is&lt;br /&gt;  v_json json:=json();&lt;br /&gt;begin&lt;br /&gt;  v_json:=getJsonObject(i_cat_id =&gt; 1);&lt;br /&gt;  return('['||v_json.to_char||']');&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;end PKG_EXTJS_JSON;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Utilities like this makes developing much more faster!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6481483192141562388-2672007068325031673?l=www.apex-at-work.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.apex-at-work.com/feeds/2672007068325031673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6481483192141562388&amp;postID=2672007068325031673&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2672007068325031673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6481483192141562388/posts/default/2672007068325031673'/><link rel='alternate' type='text/html' href='http://www.apex-at-work.com/2010/02/creating-extjs-tree-with-pljson.html' title='Creating an ExtJS tree with PL/JSON'/><author><name>Tobias Arnhold</name><uri>http://www.blogger.com/profile/02728304398859617729</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='http://2.bp.blogspot.com/_A7ko33pi4F4/TOb4e9WOzjI/AAAAAAAAATI/gG99ZKZZcNE/S220/TobiasArnhold2.jpg'/></author><thr:total>6</thr:total></entry></feed>
