<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dinh.de</title>
	<atom:link href="http://www.dinh.de/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.dinh.de/wordpress</link>
	<description>Oracle ApEx</description>
	<lastBuildDate>Mon, 22 Nov 2010 20:26:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>ApEx 4.0 &#8211; AJAX Validation Item</title>
		<link>http://www.dinh.de/wordpress/?p=232</link>
		<comments>http://www.dinh.de/wordpress/?p=232#comments</comments>
		<pubDate>Sun, 21 Nov 2010 20:23:38 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Plug In]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Page Item]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[Validation]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=232</guid>
		<description><![CDATA[With the experiences from my last plug in I wrote a second more powerful validation plug in. It can validate against a user defined PL/SQL function and gives the developers the flexibility to write their own validation directly in the item. Demo DAJAXValidationItem Download]]></description>
			<content:encoded><![CDATA[<div id="attachment_233" class="wp-caption alignnone" style="width: 1110px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-20.59.18.png" class="lightview" rel="gallery[232]" title="DAJAXValidationItem"><img class="size-full wp-image-233 " title="DAJAXValidationItem" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-20.59.18.png" alt="DAJAXValidationItem" width="1100" height="280" /></a><p class="wp-caption-text">DAJAXValidationItem</p></div>
<p>With the experiences from my last plug in I wrote a second more powerful validation plug in. It can validate against a user defined PL/SQL function and gives the developers the flexibility to write their own validation directly in the item.</p>
<ul>
<li><a href="http://apex.oracle.com/pls/apex/f?p=33751:9" target="_blank">Demo</a></li>
<li><a href='http://www.dinh.de/wordpress/wp-content/uploads/2010/11/item_type_plugin_de_dinh_dajaxvalidationitem.sql_1.zip'>DAJAXValidationItem Download</a></li>
</ul>
<div id="attachment_235" class="wp-caption alignleft" style="width: 904px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-21.11.36.png" class="lightview" rel="gallery[232]" title="DAJAXValidationItem Settings"><img class="size-full wp-image-235 " title="DAJAXValidationItem Settings" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-21.11.36.png" alt="DAJAXValidationItem Settings" width="894" height="260" /></a><p class="wp-caption-text">DAJAXValidationItem Settings</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=232</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ApEx 4.0 &#8211; Dynamic RegEx Validation Plugin</title>
		<link>http://www.dinh.de/wordpress/?p=216</link>
		<comments>http://www.dinh.de/wordpress/?p=216#comments</comments>
		<pubDate>Sun, 21 Nov 2010 18:08:18 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Plug In]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Page Item]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[POSIX]]></category>
		<category><![CDATA[RegEx]]></category>
		<category><![CDATA[Regular Expression]]></category>
		<category><![CDATA[Validation]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=216</guid>
		<description><![CDATA[With ApEx 4 we are able to shift a few kinds of validation directly to the items. Some of them are released with ApEx 4 like the &#8220;Number Textfield&#8221; or the &#8220;Value Required&#8221; selection box within the item configuration. But there are several other syntax related validations like telephone number, zip code or email addresses. [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_225" class="wp-caption alignleft" style="width: 781px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-18.12.191.png" class="lightview" rel="gallery[216]" title="DRegExItem"><img class="size-full wp-image-225 " title="DRegExItem" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-18.12.191.png" alt="DRegExItem" width="771" height="110" /></a><p class="wp-caption-text">DRegExItem</p></div>
<p>With ApEx 4 we are able to shift a few kinds of validation directly to the items. Some of them are released with ApEx 4 like the &#8220;Number Textfield&#8221; or the &#8220;Value Required&#8221; selection box within the item configuration. But there are several other syntax related validations like telephone number, zip code or email addresses. Therefore I wrote a plug in, that validate the value against a Regular Expression and we can move most of the syntax validations to our items and making them responsible for that.</p>
<p>For a better usability, I build a AJAX process in which shows mismatches directly after the changes and not after submitting the page. Since Oracle and JavaScript use different flavors of Regular Expressions I need to implement an AJAX process, that validate against Oracle POSIX Expressions and not to the PERL Expressions, which is used by JavaScript.</p>
<ul>
<li><a href="http://apex.oracle.com/pls/apex/f?p=33751:8">Demo</a></li>
<li><a href='http://www.dinh.de/wordpress/wp-content/uploads/2010/11/item_type_plugin_de_dinh_dregexitem.sql_.zip'>DRegExItem Download</a></li>
</ul>
<p>The settings for the DRegExItem Plug In are straight forward and easy to set up:</p>
<div id="attachment_223" class="wp-caption aligncenter" style="width: 642px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-19.02.58.png" class="lightview" rel="gallery[216]" title="DRegExItem Settings"><img class="size-full wp-image-223" title="DRegExItem Settings" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/11/Bildschirmfoto-2010-11-21-um-19.02.58.png" alt="DRegExItem Settings" width="632" height="187" /></a><p class="wp-caption-text">DRegExItem Settings</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=216</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ApEx Interface restricted by local access</title>
		<link>http://www.dinh.de/wordpress/?p=211</link>
		<comments>http://www.dinh.de/wordpress/?p=211#comments</comments>
		<pubDate>Sun, 14 Nov 2010 08:37:24 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[8080]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[local access]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[remote access]]></category>
		<category><![CDATA[XE]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=211</guid>
		<description><![CDATA[After a new installation of Oracle XE, I found that I cannot access the Apex website from remote, although the configuration for the firewall seems to be correct and the 8080 port is reachable. After hours with my friend Dr. Google I found the solution (again) and this post is more or less a reminder [...]]]></description>
			<content:encoded><![CDATA[<p>After a new installation of Oracle XE, I found that I cannot access the Apex website from remote, although the configuration for the firewall seems to be correct and the 8080 port is reachable. After hours with my friend Dr. Google I found the solution (again) and this post is more or less a reminder for me when I set up a new Oracle XE instance with ApEx next time. <img src='http://www.dinh.de/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Execute the statement as sysdba</p>
<pre class="brush: sql">
-- restricted to local access only
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(TRUE);

-- allow remote access
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=211</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ApEx 4.0 &#8211; TreeTable Plugin</title>
		<link>http://www.dinh.de/wordpress/?p=206</link>
		<comments>http://www.dinh.de/wordpress/?p=206#comments</comments>
		<pubDate>Tue, 09 Nov 2010 14:27:07 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Plug In]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Region]]></category>
		<category><![CDATA[Tree]]></category>
		<category><![CDATA[TreeTable]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=206</guid>
		<description><![CDATA[Just wrote my very first plug in for ApEx 4.0: DTreeTable ApEx Plugin puts hierarchical data in columns, but use an indented outline structure in the first column to illustrate the tree structure. Combining the two data-viewing approaches into one view gives you the best of both worlds. You can show the hierarchy of items, [...]]]></description>
			<content:encoded><![CDATA[<p>Just wrote my very first plug in for ApEx 4.0:</p>
<p>DTreeTable ApEx Plugin puts hierarchical data in columns, but use an indented outline structure in the first column to illustrate the tree structure.</p>
<p>Combining the two data-viewing approaches into one view gives you the best of both worlds. You can show the hierarchy of items, plus a matrix of additional data or item attributes, in one unified structure.</p>
<p>You can download the plugin at <br /><a href="http://www.apex-plugin.com/oracle-apex-plugins/region-plugin/treetable.html">http://www.apex-plugin.com/oracle-apex-plugins/region-plugin/treetable.html</a></p>
<p>You can find a working example in my <a href="http://apex.oracle.com/pls/apex/f?p=33751:7">Demo Application</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=206</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ApEx 4.0 &#8211; Dynamic Actions on Interactive Reports</title>
		<link>http://www.dinh.de/wordpress/?p=194</link>
		<comments>http://www.dinh.de/wordpress/?p=194#comments</comments>
		<pubDate>Tue, 05 Oct 2010 20:43:43 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Computation]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Dynamic Actions]]></category>
		<category><![CDATA[Event Scope]]></category>
		<category><![CDATA[Interactive Report]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=194</guid>
		<description><![CDATA[I needed to know when an Interactive Report was refreshed, since somebody changes the filters or whatever. Within ApEx 4.0 you can declare Dynamic Actions but it was not possible to implement the &#8220;After Refresh&#8221; event on the Interactive Report region. It is allegeable, because the region does not contain only the data grid, but [...]]]></description>
			<content:encoded><![CDATA[<p>I needed to know when an Interactive Report was refreshed, since somebody changes the filters or whatever. Within ApEx 4.0 you can declare Dynamic Actions but it was not possible to implement the &#8220;After Refresh&#8221; event on the Interactive Report region. It is allegeable, because the region does not contain only the data grid, but also other components like the search bar or the pagination. Therefore you cannot connect a Dynamic Action with the Interactive Report region directly, but how can I add an observer to the Interactive Report?</p>
<p>Watching in the source code I found that the table for the data is marked with a numeric identifier, so every data grid has an own unique name. When you set up a Advance Dynamic Action you can set the &#8220;Selection Type&#8221; to &#8220;DOM&#8221; and enter the numeric identifier as DOM object. Setting the &#8220;Event Scope&#8221; to &#8220;Live&#8221; and adding a True Action and you are finished until you copy the application within the workspace or to another system, because the identifier could be changed by ApEx.</p>
<ol>But there is also a way to solve this problem:</p>
<li>Add a “Hidden” Page Item, e.g. P5_IR_ID</li>
<li>Add a “New Instance/After Authentication” Computation for the hidden Page Item with the following computation of Type &#8220;SQL Query (return single value)&#8221;:
<pre class="brush: sql">
SELECT interactive_report_id
FROM apex_application_page_ir
WHERE application_id = :APP_ID
AND page_id           = :APP_PAGE_ID;
</pre>
<p><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-05-um-22.28.04.png" class="lightview" rel="gallery[194]" title="Computation for Interactive Report Id"><img class="alignnone size-full wp-image-197" title="Computation for Interactive Report Id" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-05-um-22.28.04.png" alt="" width="651" height="682" /></a></li>
<li>Create a Dynamic Action:
<ul>
<li>Event: After Refresh</li>
<li>Selection Type: DOM</li>
<li>DOM Object: &amp;P5_IR_ID.</li>
<li>Event Scope: live</li>
<li>Add all the True Actions you need. In my example I added an Alert action.</li>
</ul>
<p><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-05-um-22.32.22.png" class="lightview" rel="gallery[194]" title="Dynamic Action for Interactive Report Refresh"><img class="alignnone size-full wp-image-198" title="Dynamic Action for Interactive Report Refresh" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-05-um-22.32.22.png" alt="" width="562" height="672" /></a></li>
</ol>
<p>This solution will always fetch the correct Interactive Report id. You can find a working example at my <a href="http://apex.oracle.com/pls/apex/f?p=33751:5" target="_blank">Demo Application</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=194</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ApEx &#8211; 4.0 Date Picker Tabular Form, Minimumdate und Maximumdate und Multiple Months</title>
		<link>http://www.dinh.de/wordpress/?p=183</link>
		<comments>http://www.dinh.de/wordpress/?p=183#comments</comments>
		<pubDate>Mon, 04 Oct 2010 14:54:56 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Date Picker]]></category>
		<category><![CDATA[Delete]]></category>
		<category><![CDATA[DML]]></category>
		<category><![CDATA[Insert]]></category>
		<category><![CDATA[Maximumdate]]></category>
		<category><![CDATA[Minimumdate]]></category>
		<category><![CDATA[Multiple Months]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Page Item]]></category>
		<category><![CDATA[Tabular Form]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=183</guid>
		<description><![CDATA[Mit ApEx 4.0 wird der neue Datepicker inline mit jQuery angezeigt und nicht mehr als PopUp. Dieser lässt sich wie andere Javascript Datepicker innerhalb von ApEx konfigurieren, unter anderem auch das minimale und maximale auswählbare Datum, um die Eingabe auf einen Zeitraum zu beschränken. Dieser Datepicker kann entsprechend auch in einer Tabular Form eingesetzt werden, [...]]]></description>
			<content:encoded><![CDATA[<p>Mit ApEx 4.0 wird der neue Datepicker inline mit jQuery angezeigt und nicht mehr als PopUp. Dieser lässt sich wie andere Javascript Datepicker innerhalb von ApEx konfigurieren, unter anderem auch das minimale und maximale auswählbare Datum, um die Eingabe auf einen Zeitraum zu beschränken. Dieser Datepicker kann entsprechend auch in einer Tabular Form eingesetzt werden, jedoch fehlt dort die Möglichkeit den Zeitraum zu beschränken, da die entsprechenden Möglichkeiten zur Einstellung der Min &amp; Max Datum fehlt:</p>
<p><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-04-um-16.21.09.png" class="lightview" rel="gallery[183]" title="Date Picker"><img class="alignnone size-medium wp-image-186" title="Date Picker" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-04-um-16.21.09-300x108.png" alt="" width="300" height="108" /></a></p>
<p>Auch die Darstellung von mehreren Monaten gleichzeitig ist da leider nicht möglich. Um jedoch diese Features auch in einer Tabular Form nutzen zu können, gibt es momentan folgenden Workaround:</p>
<p>1. Wir fügen einfach einen Datepicker mit den Features, die wir haben wollen als PageItem in die Tabular Form Region ein und blenden die mit Hilfe von Stylesheets &#8220;display: none&#8221; aus. Dieser überlagert die Konfiguration von den Datepickern aus der Tabular Form mit den Einstellungen aus dem vom Page Item</p>
<p><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-04-um-16.37.35.png" class="lightview" rel="gallery[183]" title="Date Picker 2"><img class="alignnone size-medium wp-image-187" title="Date Picker 2" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-04-um-16.37.35-300x253.png" alt="" width="300" height="253" /></a></p>
<p>Ist der Dummy Datepicker da, funktionieren die Features auch global für alle Datepicker in der Tabular Form:</p>
<p><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-04-um-16.44.54.png" class="lightview" rel="gallery[183]" title="Date Picker 3"><img class="alignnone size-medium wp-image-188" title="Date Picker 3" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/10/Bildschirmfoto-2010-10-04-um-16.44.54-300x99.png" alt="" width="300" height="99" /></a></p>
<p>Zu bewundern ist das auf meiner <a title="Date Picker" href="http://apex.oracle.com/pls/apex/f?p=33751:4" target="_blank">Demo Applikation</a>. Ich bin gespannt, wie lange dieser Workaround funktioniert, hoffentlich so lange, bis der Datepicker in der Tabular Form auch konfigurierbar ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=183</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ApEx &#8211; TreeTable Template</title>
		<link>http://www.dinh.de/wordpress/?p=146</link>
		<comments>http://www.dinh.de/wordpress/?p=146#comments</comments>
		<pubDate>Fri, 17 Sep 2010 19:48:27 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Baum]]></category>
		<category><![CDATA[Bäume]]></category>
		<category><![CDATA[Collapse]]></category>
		<category><![CDATA[CONNECT BY PRIOR]]></category>
		<category><![CDATA[Expand]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[Interactive Report]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tree]]></category>
		<category><![CDATA[TreeTable]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=146</guid>
		<description><![CDATA[Apex bietet von Haus aus, Bäume auf der Oberfläche zu generieren, allerdings habe ich bei den ApEx Trees bisher keine Möglichkeit gefunden, diese mit weiteren Informationen anzureichern, so dass diese auch erfassbar sind, z.B. in Tabellenform. Nachdem ich diverse jQuery Plugins für TreeTables ausprobiert hatte und alle m.E. zu umständlich waren, habe ich mich kurzerhand entschlossen das ganze mal selbst zu implementieren...]]></description>
			<content:encoded><![CDATA[<p>Apex bietet von Haus aus, Bäume auf der Oberfläche zu generieren, allerdings habe ich bei den ApEx Trees bisher keine Möglichkeit gefunden, diese mit weiteren Informationen anzureichern, so dass diese auch erfassbar sind, z.B. in Tabellenform. Nachdem ich diverse jQuery Plugins für TreeTables ausprobiert hatte und alle m.E. zu umständlich waren, habe ich mich kurzerhand entschlossen das ganze mal selbst zu implementieren, auch auf die Gefahr hin, dass es dies schon bereits implementiert wurde. Die Lösung könnt ihr auf meiner <a href="http://apex.oracle.com/pls/apex/f?p=33751:3" target="_blank">Demo-Applikation</a> anschauen:</p>
<div id="attachment_148" class="wp-caption alignnone" style="width: 310px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-17-um-20.59.39.png" class="lightview" rel="gallery[146]" title="TreeTable"><img class="size-medium wp-image-148 " title="TreeTable" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-17-um-20.59.39-300x159.png" alt="TreeTable" width="300" height="159" /></a><p class="wp-caption-text">TreeTable</p></div>
<p>Aus einer Kopie vom StandardReport Template habe ich ein neues Template für ein TreeTable Template erstellt. Das Theme dafür findet ihr hier: <a rel="attachment wp-att-165" href="http://www.dinh.de/wordpress/?attachment_id=165">theme_treetable_101.sql</a></p>
<p>Für das SQL-Statement gibt es ein paar Kleinigkeiten zu beachten, damit das TreeTable Template auch sauber funktioniert. Hier das Beispiel aus meiner <a href="http://apex.oracle.com/pls/apex/f?p=33751:3" target="_blank">Demo-Applikation</a>:</p>
<pre class="brush: sql">
SELECT
apex_item.hidden(1, levelno) HIDDEN,
ROWNUM,
(apex_item.display_and_save(4, ename) ename,
(SELECT COUNT(*) FROM emp e1 WHERE e1.mgr = e.empno
) employee,
empno
FROM
(SELECT empno,
ename,
level AS llevelnovl
FROM emp
START WITH empno       = 7839
CONNECT BY prior empno = mgr
) e
</pre>
<p>Damit das Template auch erwartungsgemäß funktioniert gibt es ein paar Dinge zu beachten:</p>
<ol>
<li>Es wird immer anhand des Wertes von &#8216;levelno&#8217; eingerückt. Damit das Template weiß wo er den Wert der Einrückung findet, muss es in einem apex_item mit dem Index 1 sein.</li>
<li>Die Einrückung wird immer auf das apex_item Feld mit dem Index 2 ausgeführt</li>
</ol>
<p>Die Bilder für die Icons sind im Template in den Stylesheets definiert und können da ausgetauscht werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=146</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployment Hilfe</title>
		<link>http://www.dinh.de/wordpress/?p=140</link>
		<comments>http://www.dinh.de/wordpress/?p=140#comments</comments>
		<pubDate>Mon, 13 Sep 2010 13:12:27 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=140</guid>
		<description><![CDATA[Ich habe im SQL-Developer mich schon öfters darüber gewundert, dass es keine Möglichkeit gibt, mehrere Package gleichzeitig zu exportieren, was dazu führte, dass ich jedes einzelne Package anklicken musste um es exportieren zu können. Aus den oben genannten Umständen hat sich das folgende Script mir als echte Arbeitshilfe erwiesen, welches man einfach in eine PL/SQL [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe im SQL-Developer mich schon öfters darüber gewundert, dass es keine Möglichkeit gibt, mehrere Package gleichzeitig zu exportieren, was dazu führte, dass ich jedes einzelne Package anklicken musste um es exportieren zu können.</p>
<p>Aus den oben genannten Umständen hat sich das folgende Script mir als echte Arbeitshilfe erwiesen, welches man einfach in eine PL/SQL Region auf einer ApEx Seite einbindet. Viel Spaß damit!</p>
<pre class="brush: sql">
DECLARE
  l_vc_fields htmldb_application_global.vc_arr2;
  v_clob clob;
  v_count   NUMBER;
  v_length  NUMBER := 1000;
  v_out     varchar2(32000);
  v_fields  varchar2(32000) := &#039;PACKAGE:VIEW:TRIGGER:FUNCTION:PROCEDURE&#039;;
  v_schema varchar2(40);
begin
  -- set default schema
  v_schema := apex_util.get_default_schema;

  l_vc_fields := htmldb_util.string_to_table (v_fields, &#039;:&#039;);
  FOR j       IN 1 .. l_vc_fields.count
  loop
    htp.prn(&#039;&lt;h1&gt;&#039; || l_vc_fields(j) || &#039; in &#039; || v_schema || &#039;&lt;/h1&gt;&#039;);
    htp.p(&#039;&lt;textarea style=&quot;width: 950px; height: 150px&quot;&gt;&#039;);
    htp.prn(&#039;SET SCAN OFF&#039;);
    -- get all objects
    FOR i IN
    (SELECT DISTINCT object_name,
      object_type
    FROM sys.all_objects
    where upper(object_type) = l_vc_fields(j)
    AND owner                = v_schema
    )
    loop
        SELECT REPLACE(REPLACE(dbms_metadata.get_ddl(i.object_type, i.object_name), &#039;&quot;&#039; || v_schema || &#039;&quot;.&#039;, &#039;&#039;), v_schema || &#039;.&#039;, &#039;&#039;)
        INTO v_clob
        FROM dual;
        -- add slash between header and body definition
        IF l_vc_fields(j) = &#039;PACKAGE&#039; THEN
          v_clob         := REPLACE(v_clob, &#039;CREATE OR REPLACE PACKAGE BODY&#039;, &#039;/&#039; || chr(10) || &#039;CREATE OR REPLACE PACKAGE BODY&#039;);
        END IF;
        -- add slash between trigger defnition and alter statement
        IF l_vc_fields(j) = &#039;TRIGGER&#039; THEN
          v_clob         := REPLACE(v_clob, &#039;ALTER TRIGGER&#039;, &#039;/&#039; || chr(10) || &#039;ALTER TRIGGER &#039;);
        END IF;
        -- split clob in substrings
        v_count            := 1;
        v_out              := dbms_lob.substr(v_clob,v_length,v_count);
        WHILE LENGTH(v_out) &gt; 0
        LOOP
          htp.prn(v_out);
          v_count := v_count + v_length;
          v_out   := dbms_lob.substr(v_clob,v_length,v_count);
        END LOOP;
        -- add semicolon after each statement for create view
        IF l_vc_fields(j) = &#039;VIEW&#039; THEN
          htp.prn(&#039;;&#039;);
        ELSE
          htp.prn(chr(10) || &#039;/&#039;);
        end if;
      END LOOP;
    htp.p(&#039;&lt;/textarea&gt;&#039;);
  END LOOP;
exception when
  others then
  htp.prn(sqlerrm);
end;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=140</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ApEx 4.0 &#8211; Vordefinierte Filter für Interactive Reports</title>
		<link>http://www.dinh.de/wordpress/?p=101</link>
		<comments>http://www.dinh.de/wordpress/?p=101#comments</comments>
		<pubDate>Fri, 03 Sep 2010 23:13:20 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Dynamic Actions]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[Interactive Report]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[Predefined]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=101</guid>
		<description><![CDATA[Interactive Reports bieten den Usern die Möglichkeit sich beliebige Filter zu setzen und mit ApEx 4.0 kann sich der User sein Report noch individueller gestalten. Um den Usern aber ein paar vordefinierte Standardfilter anbieten zu können, waren bisher die Möglichkeiten beim Interactive Report sehr begrenzt. Oracle hat ApEx in der Version 4.0 in seiner API [...]]]></description>
			<content:encoded><![CDATA[<p>Interactive Reports bieten den Usern die Möglichkeit sich beliebige Filter zu setzen und mit ApEx 4.0 kann sich der User sein Report noch individueller gestalten. Um den Usern aber ein paar vordefinierte Standardfilter anbieten zu können, waren bisher die Möglichkeiten beim Interactive Report sehr begrenzt.</p>
<p>Oracle hat ApEx in der Version 4.0 in seiner API drei neue Prozeduren für den Interactive Report spendiert:</p>
<ul>
<li><a href="http://download.oracle.com/docs/cd/E17556_01/doc/apirefs.40/e15519/apex_util.htm#CHDFCDFF" target="_blank">APEX_UTIL.IR_CLEAR</a></li>
<li><a href="http://download.oracle.com/docs/cd/E17556_01/doc/apirefs.40/e15519/apex_util.htm#CHDDDFBF" target="_blank">APEX_UTIL.IR_FILTER</a></li>
<li><a href="http://download.oracle.com/docs/cd/E17556_01/doc/apirefs.40/e15519/apex_util.htm#CHDGIEFG" target="_blank">APEX_UTIL.IR_RESET</a></li>
</ul>
<p>Damit lassen sich zusammen mit der neuen Möglichkeit von &#8220;Dynamic Actions&#8221; relativ einfach und schnell vordefinierte Filter für den Interactive Report implementieren. <a href="http://apex.oracle.com/pls/apex/f?p=33751:2" target="_blank">Demo</a></p>
<div id="attachment_104" class="wp-caption alignnone" style="width: 310px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-00.51.14.png" class="lightview" rel="gallery[101]" title="Interactive Report - Predefined Filter"><img class="size-medium wp-image-104" title="Interactive Report - Predefined Filter" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-00.51.14-300x130.png" alt="Interactive Report - Predefined Filter" width="300" height="130" /></a><p class="wp-caption-text">Interactive Report - Predefined Filter</p></div>
<p><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-00.51.14.png" class="lightview" rel="gallery[101]" title="Interactive Report - Predefined Filter"></a>In dem Beispiel habe ich Buttons erzeugt, die mir entsprechende Filter auf den Interactive Report setzen. Dafür habe ich eine neue Dynamic Action erzeugt:</p>
<ol>
<li>Advanced Dynamic Action</li>
<li>Event: Click</li>
<li>Selection Type: Item(s)</li>
<li>Item(s): P2_FILTER_BUTTON</li>
<li>Condition: &#8211; No Condition -</li>
<li>Action: Execute PL/SQL Code</li>
<li>Fire on Page Load: false</li>
<li>PL/SQL Code:</li>
</ol>
<pre class="brush: sql">
BEGIN
APEX_UTIL.IR_RESET(
p_page_id =&gt; :APP_PAGE_ID,
p_report_alias =&gt; NULL
);

APEX_UTIL.IR_FILTER(
p_page_id =&gt; :APP_PAGE_ID,
p_report_column =&gt; &#039;JOB&#039;,
p_operator_abbr =&gt; &#039;IN&#039;,
p_filter_value =&gt; &#039;MANAGER, PRESIDENT&#039;
);
END;
</pre>
<div id="attachment_132" class="wp-caption alignnone" style="width: 310px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-13.47.44.png" class="lightview" rel="gallery[101]" title="Interactive Report - Dynamic Action 1"><img class="size-medium wp-image-132" title="Interactive Report - Dynamic Action 1" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-13.47.44-300x222.png" alt="Interactive Report - Dynamic Action 1" width="300" height="222" /></a><p class="wp-caption-text">Interactive Report - Dynamic Action 1</p></div>
<div id="attachment_133" class="wp-caption alignnone" style="width: 310px"><a href="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-13.48.08.png" class="lightview" rel="gallery[101]" title="Interactive Report - Dynamic Action 2"><img class="size-medium wp-image-133" title="Interactive Report - Dynamic Action 2" src="http://www.dinh.de/wordpress/wp-content/uploads/2010/09/Bildschirmfoto-2010-09-04-um-13.48.08-300x140.png" alt="Interactive Report - Dynamic Action 2" width="300" height="140" /></a><p class="wp-caption-text">Interactive Report - Dynamic Action 2</p></div>
<p><a href="http://apex.oracle.com/pls/apex/f?p=33751:2" target="_blank">Demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=101</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ApEx Collections: Best Practice</title>
		<link>http://www.dinh.de/wordpress/?p=34</link>
		<comments>http://www.dinh.de/wordpress/?p=34#comments</comments>
		<pubDate>Thu, 02 Sep 2010 20:35:41 +0000</pubDate>
		<dc:creator>Linh</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Util]]></category>
		<category><![CDATA[ApEx]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[Procedure]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[View]]></category>

		<guid isPermaLink="false">http://www.dinh.de/wordpress/?p=34</guid>
		<description><![CDATA[Apex Collections bieten dem Entwickler eine Möglichkeit temporäre Tabellenstrukturen aufzubauen. Ich benutze gerne Collections um temporär Datensätze ablegen zu können, ohne den eigentlichen Datensatz in der Tabelle ändern zu müssen und das auch über mehrere Seiten oder Aktionen hinweg. Das Arbeiten mit Collections ist aber nicht sehr komfortabel, da die Benamung der Spalten auf &#8220;c001&#8243; [...]]]></description>
			<content:encoded><![CDATA[<p>Apex Collections bieten dem Entwickler eine Möglichkeit temporäre Tabellenstrukturen aufzubauen. Ich benutze gerne Collections um temporär Datensätze ablegen zu können, ohne den eigentlichen Datensatz in der Tabelle ändern zu müssen und das auch über mehrere Seiten oder Aktionen hinweg.</p>
<p>Das Arbeiten mit Collections ist aber nicht sehr komfortabel, da die Benamung der Spalten auf &#8220;c001&#8243; &#8211; &#8220;c999&#8243; reduziert wird, besonders dann wenn es um die Abfragen geht weißt man schon nach ein paar Tagen für gewöhnlich nicht mehr die Bedeutung der Spalte &#8220;c003&#8243;.</p>
<p>Um das Problem zu lösen lege ich eine View auf die Collection und kann dann anschließend einfach die Werte aus der View selektieren. Die aufgebaute View sollte neben sprechenden Spaltennamen auch immer zusätzlich die Spalte &#8220;SEQ_ID&#8221; bekommen.</p>
<p>Folgende Prozedur erzeugt eine View für eine Collection die wiederum ein 1:1 Abbild einer echten Tabelle ist:</p>
<pre class="brush: sql">
  PROCEDURE create_collec_view_from_table(
    p_view_name IN VARCHAR2,
    p_collection_name IN VARCHAR2,
    p_table_name IN VARCHAR2)
  AS
  v_counter NUMBER;
  v_sql VARCHAR2(4000);
  BEGIN
    v_sql := v_sql || &#039;CREATE OR REPLACE VIEW &#039; || p_view_name || &#039; AS&#039;;
    v_sql := v_sql || CHR(10) || &#039;SELECT&#039;;
    v_sql := v_sql || CHR(10) || &#039;seq_id AS SEQ_ID, &#039;;
    FOR i IN (SELECT column_name FROM user_tab_columns WHERE table_name = p_table_name) LOOP
      v_sql := v_sql || CHR(10) || &#039;c&#039; || TRIM(TO_CHAR(v_counter, &#039;099&#039;)) || &#039; AS &#039; || i.column_name || &#039;, &#039;;
      v_counter := v_counter + 1;
    END LOOP;
    v_sql := RTRIM(v_sql, &#039;, &#039;);
    v_sql := v_sql || CHR(10) || &#039;FROM apex_collections WHERE collection_name=&#039;&#039;&#039; || p_collection_name || &#039;&#039;&#039;&#039;;
    EXECUTE IMMEDIATE v_sql;
  END create_collec_view_from_table;</pre>
<p>Der folgende Aufruf:</p>
<pre class="brush: sql">
BEGIN
create_collec_view_from_table(
    p_view_name =&gt; &#039;EMP_COLLECTION_V&#039;,
    p_collection_name =&gt; &#039;EMP_COLLECTION&#039;,
    p_table_name =&gt; &#039;EMP&#039;);
END;
</pre>
<p>erzeugt die View:</p>
<pre class="brush: sql">
CREATE OR REPLACE VIEW EMP_COLLECTION_V
                AS
  SELECT seq_id AS SEQ_ID,
    c001        AS EMPNO,
    c002        AS ENAME,
    c003        AS JOB,
    c004        AS MGR,
    c005        AS HIREDATE,
    c006        AS SAL,
    c007        AS COMM,
    c008        AS DEPTNO
  FROM apex_collections
  WHERE collection_name=&#039;EMP_COLLECTION&#039;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dinh.de/wordpress/?feed=rss2&#038;p=34</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

