<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A08NQXk6eyp7ImA9WhRaE0Q.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890</id><updated>2012-02-16T14:44:50.713+01:00</updated><category term="linux" /><category term="Vista" /><category term="antivirus" /><category term="FRM-50026" /><category term="fechas" /><category term="bloqueos" /><category term="regedit" /><category term="lock" /><category term="espacios" /><category term="tabulación" /><category term="claves foráneas" /><category term="forms" /><category term="rendimiento" /><category term="list-item" /><category term="foorms" /><category term="nod32" /><category term="wine" /><category term="forms6i" /><category term="10g" /><category term="fk" /><category term="xe" /><category term="x64" /><title>Oracle Forms</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://oracleforms.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/OracleForms" /><feedburner:info uri="oracleforms" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>OracleForms</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CUQCR30ycSp7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-1841432899207189256</id><published>2012-02-05T15:49:00.000+01:00</published><updated>2012-02-05T15:49:26.399+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T15:49:26.399+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FRM-50026" /><category scheme="http://www.blogger.com/atom/ns#" term="fechas" /><title>Agilizar la entrada de datos en campos de tipo DATE</title><content type="html">Si tenemos un campo de tipo DATE y que tiene la máscara DD/MM/YYYY el usuario puede introducir la fecha 05022012 y automáticamente se transforma en 05/02/2012, pero en muchos casos puede ser útil permitir al usuario lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Introducir 1 ó 2 dígitos, por ejemplo, teclear 5 y asumir el mes y año del SYSDATE transformando ese 5 tecleado por el usuario en la fecha 05/02/2012.&lt;/li&gt;
&lt;li&gt;Introducir 4 dígitos, asumiendo los 2 primeros el día, los 2 dígitos siguientes el mes y el año obtenerlo del SYSDATE.&lt;/li&gt;
&lt;li&gt;Introducir 6 dígitos y asumiendo los 2 primeros el día, los 2 siguientes el mes y los 2 últimos el año en formato de 2 dígitos, es decir, se le debe de sumar 2000, de forma que si el usuario teclea 050212 se asuma la fecha 05/02/2012.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Para hacerlo lo que haremos será capturar el error de conversión de máscara de formato FRM-50026 en el disparador ON-ERROR de la siguiente forma:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;DECLARE&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_errtyp &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;VARCHAR2(3):= ERROR_TYPE;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_errnum &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;NUMBER := ERROR_CODE;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_errtxt &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp;VARCHAR2(1000) := ERROR_TEXT;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_fecha &amp;nbsp; &amp;nbsp; &amp;nbsp; DATE;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_dia &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VARCHAR2(2);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_mes &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VARCHAR2(2);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_anho &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;VARCHAR2(4);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_error &amp;nbsp; &amp;nbsp; &amp;nbsp; BOOLEAN := TRUE;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_valor_campo VARCHAR2(30);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_mascara &amp;nbsp; &amp;nbsp; VARCHAR2(30);&lt;/div&gt;&lt;div&gt;BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; IF v_errtyp = 'FRM'&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; AND v_errnum = 50026&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; AND Get_Item_Property(:system.trigger_item, DATATYPE) = 'DATE'&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; AND UPPER(Get_Item_Property(:system.trigger_item, FORMAT_MASK)) = 'DD/MM/YYYY' THEN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-- Capturamos el FRM-50026 en campos de tipo DATE y con máscara DD/MM/YYYY&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp;v_valor_campo := NAME_IN(:system.trigger_item);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; IF LENGTH(v_valor_campo) = 1 THEN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-- El usuario sólo teclea un dígito&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_dia := v_valor_campo;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ELSIF LENGTH(v_valor_campo) IN (2, 4, 6) THEN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp;-- Obtenemos el día de lo que ha tecleado el usuario&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp;v_dia := SUBSTR(v_valor_campo, 1, 2);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;END IF;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; IF LENGTH(v_valor_campo) IN (4, 6) THEN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-- Obtenemos el mes, sólo si el&amp;nbsp;usuario&amp;nbsp;ha tecleado algo de 4 ó 6 dígitos&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_mes := SUBSTR(v_valor_campo, 3, 2);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; END IF;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; IF LENGTH(v_valor_campo) = 6 THEN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-- Obtenemos el año, sólo si el&amp;nbsp;usuario&amp;nbsp;ha tecleado algo 6 dígitos&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;v_anho := TO_CHAR(TO_NUMBER(SUBSTR(v_valor_campo, 5, 2)) + 2000);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; END IF;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -- Obtenemos el mes y el año de SYSDATE en caso de que haber sido tecleado por el usuario&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; v_mes := NVL(v_mes, TO_CHAR(SYSDATE, 'MM'));&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; v_anho := NVL(v_anho, TO_CHAR(SYSDATE, 'YYYY'));&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; v_fecha := TO_DATE(v_dia || '/' || v_mes || '/' || v_anho, 'DD/MM/YYYY');&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -- El comando COPY únicamente está preparado para asignar un valor VARCHAR2,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -- con variables de tipo DATE debemos de asegurar la máscar de formato&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; -- con la que hará conversión.&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; v_mascara := Get_Application_Property(BUILTIN_DATE_FORMAT);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Set_Application_Property(BUILTIN_DATE_FORMAT, 'DD/MM/YYYY');&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; COPY(TO_CHAR(v_fecha, 'DD/MM/YYYY'), :system.trigger_item);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Set_Application_Property(BUILTIN_DATE_FORMAT, v_mascara);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; v_error := FALSE;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; EXCEPTION&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN OTHERS THEN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Ante cualquier error dejamos el mensaje original de error&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NULL;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END; &amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; END IF;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&amp;nbsp; IF v_error THEN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; -- No se ha podido transformar lo tecleado por el usuario en una fecha válida&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MESSAGE(v_errtyp || '-' || TO_CHAR(v_errnum) || ': ' || v_errtxt);&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; RAISE Form_Trigger_Failure;&lt;/div&gt;&lt;div&gt;&amp;nbsp; END IF;&lt;/div&gt;&lt;div&gt;END;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-1841432899207189256?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ekGG4ZEeRrcj9OARLQzBrlfw31g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ekGG4ZEeRrcj9OARLQzBrlfw31g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ekGG4ZEeRrcj9OARLQzBrlfw31g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ekGG4ZEeRrcj9OARLQzBrlfw31g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/m7Qo1wY-CKY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/1841432899207189256/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=1841432899207189256&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1841432899207189256?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1841432899207189256?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/m7Qo1wY-CKY/agilizar-la-entrada-de-datos-en-campos.html" title="Agilizar la entrada de datos en campos de tipo DATE" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2012/02/agilizar-la-entrada-de-datos-en-campos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYBRn49fSp7ImA9WhZWE0w.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-1770893764466115351</id><published>2011-05-12T09:09:00.000+02:00</published><updated>2011-05-13T22:22:37.065+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-13T22:22:37.065+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webutil" /><category scheme="http://www.blogger.com/atom/ns#" term="icono" /><title>Cambiar icono de Java en Forms 10g y 11g</title><content type="html">Vía: &lt;a href="http://blog.edisa.com/2011/05/cambiar-icono-de-java-en-forms-10g-y-11g/"&gt;http://blog.edisa.com/2011/05/cambiar-icono-de-java-en-forms-10g-y-11g/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Cuando se ejecuta una aplicación en Forms 10g ó 11g en una ventana  independiente del navegador, es decir, con separateframe=true, el icono  que se le asigna a la ventana en la barra de tareas es el de la taza de  café de Java.&lt;br /&gt;
&lt;br /&gt;
Este icono se puede modificar para poner uno personalizado. Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blog.edisa.com/wp-content/uploads/2011/05/cambioicono.png"&gt;&lt;img alt="" class="aligncenter size-full wp-image-306" height="33" src="http://blog.edisa.com/wp-content/uploads/2011/05/cambioicono.png" title="cambioicono" width="393" /&gt;&lt;/a&gt;&lt;span id="more-305"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Para cambiar el icono hay que utilizar el procedimiento &lt;b&gt;&lt;i&gt;WebUtil_SeparateFrame.SetIcon&lt;/i&gt;&lt;/b&gt; de la librería WEBUTIL.PLL.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ejemplo: &lt;/b&gt;WebUtil_SeparateFrame.SetIcon(‘/forms/java/libra_menu.gif’);&lt;br /&gt;
&lt;br /&gt;
El icono que se indica por parámetro debe de tener formato GIF o JPG y  debe de encontrarse en la carpeta en donde están los jar de Java  ($ORACLE_HOME/forms/java). En caso de no encontrar el archivo en esa  carpeta dará el siguiente error: “&lt;i&gt;WUB-603: No se ha podido cargar la imagen del icono …..&lt;/i&gt;”&lt;br /&gt;
&lt;br /&gt;
El icono quedará guardado en la caché de Java para futuras ejecuciones:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://blog.edisa.com/wp-content/uploads/2011/05/cache.png"&gt;&lt;img alt="" class="aligncenter size-full wp-image-307" height="154" src="http://blog.edisa.com/wp-content/uploads/2011/05/cache.png" title="cache" width="514" /&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/8142776109631722890-1770893764466115351?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-ck30xPKqPP4D1z87Cq9cFl9Hm4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ck30xPKqPP4D1z87Cq9cFl9Hm4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-ck30xPKqPP4D1z87Cq9cFl9Hm4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ck30xPKqPP4D1z87Cq9cFl9Hm4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/FBGnzWputnQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/1770893764466115351/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=1770893764466115351&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1770893764466115351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1770893764466115351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/FBGnzWputnQ/cambiar-icono-de-java-en-forms-10g-y.html" title="Cambiar icono de Java en Forms 10g y 11g" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2011/05/cambiar-icono-de-java-en-forms-10g-y.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAMRnc_cCp7ImA9WhZRGE0.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-5191232118031932163</id><published>2011-04-14T19:39:00.000+02:00</published><updated>2011-04-14T19:39:47.948+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-14T19:39:47.948+02:00</app:edited><title>Maximizar Ventana MDI en Forms 11</title><content type="html">Fuente: &lt;a href="http://blog.edisa.com/2011/04/maximizar-ventana-mdi-en-forms-11/"&gt;http://blog.edisa.com/2011/04/maximizar-ventana-mdi-en-forms-11/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
En Forms 11 una de las novedades es la integración con JavaScript y  eso se puede aprovechar para forzar el maximizado completo de la ventana  MDI cuando que ejecuta en una ventana separada del navegador, es decir,  cuando se ejecuta con el parámetro &lt;em&gt;separateframe=true&lt;/em&gt;&lt;br /&gt;
&lt;span id="more-189"&gt;&lt;/span&gt;Al ejecutar &lt;em&gt;SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);&lt;/em&gt;  el maximizado no es completo, hace un ajuste según el tamaño de la  pantalla, pero no es equivalente a que si el usuario pulsa el botón de  maximizado.&lt;br /&gt;
Para que sea equivalente a que el usuario pulse el botón de maximizar hay que realizar lo siguiente:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;En el archivo formsweb.cfg añadir la siguiente línea a la sección de  la configuración (El nombre que se le asigne a la variable es  indiferente, pero tiene que ser el mismo dos sitios que están resaltados  en negrita): &lt;ul&gt;&lt;li&gt;applet_name=&lt;strong&gt;OracleApplet&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Desde Forms ejecutar: &lt;ul&gt;&lt;li&gt;web.javascript_eval_expr(‘document.&lt;strong&gt;OracleApplet&lt;/strong&gt;.getFrame().setExtendedState(6)’);&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;Ejemplo con &lt;em&gt;SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;a href="http://blog.edisa.com/wp-content/uploads/2011/04/f11_no_maximizado.png"&gt;&lt;img alt="Resultado con SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);" class="alignnone size-full wp-image-190" height="99" src="http://blog.edisa.com/wp-content/uploads/2011/04/f11_no_maximizado.png" title="Resultado con SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);" width="182" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo ejecutando &lt;em&gt;web.javascript_eval_expr(‘document.&lt;strong&gt;OracleApplet&lt;/strong&gt;.getFrame().setExtendedState(6)’);&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;a href="http://blog.edisa.com/wp-content/uploads/2011/04/f11_maximizado.png"&gt;&lt;img alt="" class="alignnone size-full wp-image-191" height="113" src="http://blog.edisa.com/wp-content/uploads/2011/04/f11_maximizado.png" title="f11_maximizado" width="191" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Otro ejemplo similar se puede ver en: &lt;a href="http://blog.avanttic.com/2010/07/30/integracion-forms-11g-con-javascript-maximizar-forms_mdi_window/" title="http://blog.avanttic.com/2010/07/30/integracion-forms-11g-con-javascript-maximizar-forms_mdi_window/"&gt;http://blog.avanttic.com/2010/07/30/integracion-forms-11g-con-javascript-maximizar-forms_mdi_window/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-5191232118031932163?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R_unNqrV69hH-c5vCqLNBSl7DhU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R_unNqrV69hH-c5vCqLNBSl7DhU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R_unNqrV69hH-c5vCqLNBSl7DhU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R_unNqrV69hH-c5vCqLNBSl7DhU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/gSF_vx2bOGw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/5191232118031932163/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=5191232118031932163&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/5191232118031932163?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/5191232118031932163?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/gSF_vx2bOGw/maximizar-ventana-mdi-en-forms-11.html" title="Maximizar Ventana MDI en Forms 11" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2011/04/maximizar-ventana-mdi-en-forms-11.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QGRH8_fCp7ImA9WxFSFU8.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-5738463684049678158</id><published>2010-04-17T20:35:00.000+02:00</published><updated>2010-04-17T20:35:25.144+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-17T20:35:25.144+02:00</app:edited><title>Forms6: Cerrar Report Background por código</title><content type="html">Hace tiempo comenté aquí la forma de cerrar el Report Background Engine cada vez que se ejecuta un informe&amp;nbsp;&lt;a href="http://oracleforms.blogspot.com/2008/02/forms6-forzar-cierre-report-background.html"&gt;Forms6: Forzar cierre report background&lt;/a&gt;, en ese momento comenté que no me parecía muy optimo el cierre del Report Background Engine cada vez que se lanza un informe, pero alguna vez se me&amp;nbsp;dio&amp;nbsp;la necesidad de hacerlo por dos motivos:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;El usuario tenía que ejecutar dos programas en Forms con distinta configuración de NLS_LANG, uno con SPANISH_SPAIN.UTF8 y otro con&amp;nbsp;SPANISH_SPAIN.WE8ISO8859P15, de forma que al ejecutar un informe se abría el Report Background con la configuración de NLS_LANG del programa que lo llamaba y el otro programa al tener abierto el Report Background no cogía bien la configuración del NLS_LANG, en ese caso lo mejor es forzar que se cierre el Report Background por cada informe.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Conexiones remotas por Terminal Server con un programa publicado en Forms. Al lanzar un informe se abre el Report Background y queda abierto y al salir del programa se mantiene la conexión de Terminal Server por culpa del Report Background cuando en realidad ya no va a ser utilizado, en ese caso lo mejor sería forzar cerrar el Report Background al salir del programa, para ello podemos forzar que el Report Background se cierre ejecutando lo siguiente en el disparador KEY-EXIT del programa:&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;DECLARE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;pl_id ParamList;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;BEGIN&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;pl_id := Get_Parameter_List('CERRAR_RBE');&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;IF NOT Id_Null(pl_id) THEN&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Destroy_Parameter_List( pl_id );&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;END IF;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;pl_id := Create_Parameter_List('CERRAR_RBE');&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Add_Parameter(pl_id, 'PARAMFORM', TEXT_PARAMETER, 'NO');&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Add_Parameter(pl_id, 'ORACLE_SHUTDOWN', TEXT_PARAMETER, 'Yes');&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Run_Product(REPORTS, 'cerrar_rbe', SYNCHRONOUS, RUNTIME, FILESYSTEM, pl_id, NULL);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;Destroy_Parameter_List( pl_id );&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;END;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;El informe 'cerrar_rbe' no es necesario que exista, simplemente se intenta ejecutar un informe&amp;nbsp;pasándole&amp;nbsp;el parámetro para forzar el cierre del Report Background.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-5738463684049678158?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/frYA8uVymp68Z_mUWF7kuH3tvCU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/frYA8uVymp68Z_mUWF7kuH3tvCU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/frYA8uVymp68Z_mUWF7kuH3tvCU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/frYA8uVymp68Z_mUWF7kuH3tvCU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/5sXM2myulTk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/5738463684049678158/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=5738463684049678158&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/5738463684049678158?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/5738463684049678158?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/5sXM2myulTk/forms6-cerrar-report-background-por.html" title="Forms6: Cerrar Report Background por código" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2010/04/forms6-cerrar-report-background-por.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYNRX0-fyp7ImA9WxBQGU4.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-1018127046253989571</id><published>2010-01-19T22:56:00.000+01:00</published><updated>2010-01-19T22:56:34.357+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-19T22:56:34.357+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bloqueos" /><category scheme="http://www.blogger.com/atom/ns#" term="claves foráneas" /><category scheme="http://www.blogger.com/atom/ns#" term="lock" /><category scheme="http://www.blogger.com/atom/ns#" term="fk" /><title>¿Las claves foráneas producen bloqueos en Forms?</title><content type="html">La respuesta es que si no hacemos bien las cosas es SI. Vamos a verlo mejor con un ejemplo con las típicas tablas de formación que utiliza Oracle, &amp;nbsp;DEPT y EMP:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;CREATE TABLE dept (&lt;br /&gt;
&amp;nbsp;&amp;nbsp;deptno &amp;nbsp;NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;dname &amp;nbsp; VARCHAR2(14),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;loc &amp;nbsp; &amp;nbsp; VARCHAR2(13));&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE emp (&lt;br /&gt;
&amp;nbsp;&amp;nbsp;empno &amp;nbsp; &amp;nbsp;NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;ename &amp;nbsp; &amp;nbsp;VARCHAR2(10),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;job &amp;nbsp; &amp;nbsp; &amp;nbsp;VARCHAR2(9),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;mgr &amp;nbsp; &amp;nbsp; &amp;nbsp;NUMBER(4),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;hiredate DATE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;sal &amp;nbsp; &amp;nbsp; &amp;nbsp;NUMBER(7,2),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;comm &amp;nbsp; &amp;nbsp; NUMBER(7,2),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;deptno &amp;nbsp; NUMBER(2) CONSTRAINT emp_ref_dept_fk&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; REFERENCES dept(deptno));&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Insertamos un departamento:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;INSERT INTO dept (deptno,&amp;nbsp;dname, loc)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;VALUES (23, 'CONTABILIDAD', 'VIGO');&lt;br /&gt;
&lt;br /&gt;
COMMIT;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora insertamos un empleado:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;INSERT INTO emp (empno,ename,job,mgr,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hiredate,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sal,comm,deptno)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;VALUES (1234, 'MARIOBROS', 'FONTA', 10,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TO_DATE('16/05/1975', 'DD/MM/YYYY'),&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;50000, 2000, 23);&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Antes de hacer el commit, al ver los bloqueos veremos que están la tabla EMP y la DEPT bloqueadas.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;SELECT lk.sid, lk.TYPE lock_type, lk.lmode,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; (SELECT o.object_name&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM dba_objects o&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE o.object_id = lk.id1) object_name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;FROM gv$lock lk&lt;br /&gt;
&amp;nbsp;WHERE lk.TYPE IN ('TM', 'UL');&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Lo que nos devolverá será esto:&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; SID LO &amp;nbsp; &amp;nbsp; LMODE OBJECT_NAME&lt;br /&gt;
------ -- --------- ----------------&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 311 TM &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 EMP&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 311 TM &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 DEPT&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
El bloqueo de la tabla EMP es por el registro que acabamos de insertar pero que todavía no está commitado, pero la tabla DEPT se bloquea por la clave foránea, ya que en el momento de insertar el registro en EMP existía el departamento 23 en DEPT, pero como no hemos comitado el insert en EMP tiene que bloquear el registro del departamento 23 para evitar que otra sesión borre ese registro o modifique el código del departamento.&lt;br /&gt;
&lt;br /&gt;
Hasta aquí todo normal, el problema viene cuando otra sesión quiere modificar el nombre del departamento:&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
UPDATE dept&lt;br /&gt;
&amp;nbsp;&amp;nbsp; SET dname = 'FINANCIERO'&lt;br /&gt;
&amp;nbsp;WHERE deptno = 23;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Con esta update nos dejará modificarlo sin problema, pero si en vez de hacer un update que únicamente modifica el nombre del departamento hacemos este otro (el resultado final de los datos en la tabla serán los mismos):&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
UPDATE dept&lt;br /&gt;
&amp;nbsp;&amp;nbsp; SET deptno = 23,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; dname = 'FINANCIERO',&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; loc = 'VIGO'&lt;br /&gt;
&amp;nbsp;WHERE deptno = 23;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
El registro quedaría con los mismos datos, pero ya tenemos el bloqueo montado ya que le estamos diciendo que actualice el campo DEPTNO, pero la modificación de ese campo afectaría a registros introducidos por otra sesión y que todavía no están comitados, por lo que se quedará bloqueado.&lt;br /&gt;
&lt;br /&gt;
Esta es la explicación del motivo, pero ¿porqué ocurre en Forms?. La respuesta la encontramos en la propiedad "Actualizar Sólo Columnas Cambiadas" a nivel de bloque, por defecto esa propiedad está a "No" con lo que para hacer un update actualizará todos los campos, incluso los que no ha modificado el usuario.&lt;br /&gt;
&lt;br /&gt;
Lo recomendable para evitar bloqueos es poner esa propiedad al valor "Si".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-1018127046253989571?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CTJIJDFcua_Tok127VKmMV2ax0c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CTJIJDFcua_Tok127VKmMV2ax0c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CTJIJDFcua_Tok127VKmMV2ax0c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CTJIJDFcua_Tok127VKmMV2ax0c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/k1QDW7nNysE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/1018127046253989571/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=1018127046253989571&amp;isPopup=true" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1018127046253989571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1018127046253989571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/k1QDW7nNysE/las-claves-foraneas-producen-bloqueos.html" title="¿Las claves foráneas producen bloqueos en Forms?" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2010/01/las-claves-foraneas-producen-bloqueos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4MSHYzfyp7ImA9WhZXEE8.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-3248374929474698730</id><published>2009-11-29T13:58:00.001+01:00</published><updated>2011-04-28T22:03:09.887+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-28T22:03:09.887+02:00</app:edited><title>Inyección de código</title><content type="html">Voy a mostrar un ejemplo de como mediante inyección de código podemos consultar registros de una tabla distinta a la que tiene el bloque como origen de consulta.&lt;br /&gt;
&lt;br /&gt;
Para ver el ejemplo hacemos un form asociado a la tabla DEPT (tabla típica de los ejemplos de Oracle):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;SQL&amp;gt; DESC DEPT;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;Nombre &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;¿Nulo? &amp;nbsp; Tipo&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;------------------- -------- ------------------&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;DEPTNO &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NUMBER(2)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;DNAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;VARCHAR2(14)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;LOC &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;VARCHAR2(13)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Pantalla con los datos de la tabla:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_AwWvAUSKs6s/SxJjJNpnIHI/AAAAAAAAIGU/p5lRUOYN2UE/s1600/blob_imagen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_AwWvAUSKs6s/SxJjJNpnIHI/AAAAAAAAIGU/p5lRUOYN2UE/s320/blob_imagen1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ahora vamos a ver como con ese bloque mostrar el contenido de USER_TAB_COLUMS, para ello entramos en modo de entrada consulta (pulsando F7) y en cualquiera de los campos ponemos ":" (dos puntos) y ejecutamos consulta, y tendremos la siguiente pantalla:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_AwWvAUSKs6s/SxJj7XTCXbI/AAAAAAAAIGc/WuDil5FwSck/s1600/blob_imagen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_AwWvAUSKs6s/SxJj7XTCXbI/AAAAAAAAIGc/WuDil5FwSck/s320/blob_imagen2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
El objetivo de esa ventana es que el usuario pueda introducir una condición avanzada, como podría ser un AND EXISTS, un BETWEEN, ..., pero la consulta Oracle Forms la envía a la base de datos tal cual ha sido escrita por el usuario, por lo que podemos introducir lo siguiente:&lt;br /&gt;
&lt;br /&gt;
1=2) UNION ALL SELECT rownum, table_name, column_name FROM user_tab_columns --&lt;br /&gt;
&lt;br /&gt;
El 1=2 es para evitar los registros de la tabla DEPT, luego se añade una UNION ALL para sacar los registros de la tabla que queramos, y la consulta la terminamos con -- ya que Forms a la consulta que introduce el usuario la mete entre paréntesis, de esta forma comentamos el último parénteseis.&lt;br /&gt;
&lt;br /&gt;
El resultado será el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_AwWvAUSKs6s/SxJr22mMNkI/AAAAAAAAIGk/-KU2BuHIHq0/s1600/blob_imagen3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_AwWvAUSKs6s/SxJr22mMNkI/AAAAAAAAIGk/-KU2BuHIHq0/s320/blob_imagen3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Este funcionamiento se puede deshabilitar, evitando que al introducir ":" en modo de entrada de consulta en un campo de forma que no se abra al ventana en donde introducir una condición adicional, para ello en Forms6 en cliente servidor se puede introducir la siguiente entrada en el regedit:&lt;br /&gt;
&lt;br /&gt;
FORMS60_RESTRICT_ENTER_QUERY con el valor 1&lt;br /&gt;
&lt;br /&gt;
En Forms 10g para activar o desactivarlo hay que editar el archivo al que apunta la variable envFile del archivo de configuración formsweb.cfg y modificar / añadir la variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FORMS_RESTRICT_ENTER_QUERY=TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;TRUE: Está desactivado (opción recomendable).&lt;/li&gt;
&lt;li&gt;FALSE: Está activado, se puede inyectar código.&lt;/li&gt;
&lt;/ul&gt;NOTA: Corregida esta entrada, estaba al revés&lt;br /&gt;
&lt;br /&gt;
Para más información se puede consultar la nota&amp;nbsp;163305.1 del metalink. También en&amp;nbsp;&lt;a href="http://www.red-database-security.com/wp/sql_injection_forms_us.pdf"&gt;http://www.red-database-security.com/wp/sql_injection_forms_us.pdf&lt;/a&gt;&amp;nbsp;se puede obtener más información.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-3248374929474698730?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZQxJvEhJbcg8az33IsPC2lGX-3w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZQxJvEhJbcg8az33IsPC2lGX-3w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZQxJvEhJbcg8az33IsPC2lGX-3w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZQxJvEhJbcg8az33IsPC2lGX-3w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/tIwuPrNNNZs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/3248374929474698730/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=3248374929474698730&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3248374929474698730?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3248374929474698730?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/tIwuPrNNNZs/inyeccion-de-codigo.html" title="Inyección de código" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_AwWvAUSKs6s/SxJjJNpnIHI/AAAAAAAAIGU/p5lRUOYN2UE/s72-c/blob_imagen1.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2009/11/inyeccion-de-codigo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AGSHoyfSp7ImA9WxNaFE4.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-7270319327632649708</id><published>2009-11-28T20:59:00.004+01:00</published><updated>2009-11-28T21:22:09.495+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-28T21:22:09.495+01:00</app:edited><title>Asignar una función la tecla escape en Forms10g</title><content type="html">Una utilidad de la tecla ESC (Escape) y muy utilizada en muchas aplicaciones es la de cerrar la ventana abierta. Esta operación se puede configurar en Forms 10g editando el archivo frmweb.res y añadiendo la siguiente línea:&lt;br /&gt;&lt;br /&gt;27   : 0 : "Escape"         : 32 : "Salir"&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;27: es el identificador "Java function number" asignado a la tecla escape.&lt;/li&gt;&lt;li&gt;0: Indica el "Java modifiers number" es decir, qué combinación de teclas más la Escape se pulsarán para ejecutar el evento, el 0 quiere decir que no se utilizará en conjunto con otra tecla, si se pusiese 1 para ejecutar el evento habría que pulsar Mayúsculas+Esc, con 2 haríamos referencia a la tecla "Control", con 8 a la tecla "Alt". .&lt;/li&gt;&lt;li&gt;"Escape": Es un texto asignado por el usuario, no afecta al funcionamiento.&lt;/li&gt;&lt;li&gt;32: es el identificador "Forms function number" que indentifica la operación que debe se debe de ejecutar en Forms. El 32 indica que se ejecutará KEY-EXIT.&lt;/li&gt;&lt;li&gt;"Salir": Es un texto asignado por el usuario, no afecta al funcionamiento.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;El archivo fmrweb.res se encuentra en $ORACLE_HOME/forms/admin/resource/&lt;idioma&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En caso de configurar el servidor de aplicaciones en UTF8 se utiliza el archivo fmrweb_utf8.res. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se considera que el servidor de aplicaciones está en UTF8 cuando en el archivo indicado en la entrada envFile del archivo formsweb.cfg tiene definida la siguiente variable:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NLS_LANG=Spanish_Spain.UTF8&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-7270319327632649708?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/11qW6rP_mJzx6ei0EDBhwPM50i0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/11qW6rP_mJzx6ei0EDBhwPM50i0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/11qW6rP_mJzx6ei0EDBhwPM50i0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/11qW6rP_mJzx6ei0EDBhwPM50i0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/U0vHUTQTLOU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/7270319327632649708/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=7270319327632649708&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7270319327632649708?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7270319327632649708?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/U0vHUTQTLOU/asignar-una-funcion-la-tecla-escape-en.html" title="Asignar una función la tecla escape en Forms10g" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2009/11/asignar-una-funcion-la-tecla-escape-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UEQn4-fSp7ImA9WhRVEkQ.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-7505287945144511368</id><published>2009-10-29T21:53:00.002+01:00</published><updated>2012-01-11T16:20:03.055+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-11T16:20:03.055+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="forms6i" /><category scheme="http://www.blogger.com/atom/ns#" term="xe" /><title>Configurar Oracle XE para que conecte correctamente Forms 6i</title><content type="html">Por defecto Oracle XE se instala con el juego de caracteres AL32UTF8, con ese juego de caracteres el cliente de Oracle Forms 6i no conecta con la base de datos, para migrar ese juego de caracteres a UTF8 puro debemos de ejecutar lo siguiente:&lt;br /&gt;
&lt;br /&gt;
sqlplus /nolog&lt;br /&gt;
SQL&amp;gt; connect / as sysdba&lt;br /&gt;
Conectado.&lt;br /&gt;
SQL&amp;gt; shutdown immediate&lt;br /&gt;
SQL&amp;gt; startup restrict&lt;br /&gt;
SQL&amp;gt; alter database character set internal_use UTF8;&lt;br /&gt;
SQL&amp;gt; shutdown immediate&lt;br /&gt;
SQL&amp;gt; startup&lt;br /&gt;
&lt;br /&gt;
Hay ciertos índices que Oracle si existen no puede realizarse la conversión ya que dará el siguiente error:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ORA-00604: error occurred at recursive SQL level 1&lt;br /&gt;
ORA-54028: cannot change the HIDDEN/VISIBLE property of a virtual column&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Podemos ver los índices incompatibles mediante esta SELECT:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;SELECT owner, index_name, index_type, table_owner, table_name, status, funcidx_status&lt;/div&gt;&lt;div&gt;&amp;nbsp; FROM all_indexes&lt;/div&gt;&lt;div&gt;&amp;nbsp;WHERE index_type NOT IN ('NORMAL', 'BITMAP', 'IOT - TOP')&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;AND table_name IN (SELECT UNIQUE (table_name)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM dba_tab_columns&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE char_used = 'C');&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Hay que borrarlos y luego volver a crearlos una vez convertido a UTF8.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-7505287945144511368?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tXh_d1rPBVrTRdlP-HUrSA7-xlU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tXh_d1rPBVrTRdlP-HUrSA7-xlU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tXh_d1rPBVrTRdlP-HUrSA7-xlU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tXh_d1rPBVrTRdlP-HUrSA7-xlU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/72ALTD6V1L0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/7505287945144511368/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=7505287945144511368&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7505287945144511368?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7505287945144511368?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/72ALTD6V1L0/configurar-oracle-xe-para-que-conecte.html" title="Configurar Oracle XE para que conecte correctamente Forms 6i" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2009/10/configurar-oracle-xe-para-que-conecte.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEDR3g7cCp7ImA9WxNVEEs.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-3082935426436253436</id><published>2009-10-20T20:42:00.004+02:00</published><updated>2009-10-20T20:51:16.608+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-20T20:51:16.608+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nod32" /><category scheme="http://www.blogger.com/atom/ns#" term="foorms" /><category scheme="http://www.blogger.com/atom/ns#" term="antivirus" /><category scheme="http://www.blogger.com/atom/ns#" term="rendimiento" /><category scheme="http://www.blogger.com/atom/ns#" term="10g" /><title>Problemas de rendimiento de Forms10g con antivirus NOD32</title><content type="html">El antivirus NOD32 tiene activado por defecto la opción analizar todo el tráfico HTTP, lo que hace ralentizar tremendamente el funcionamiento de las aplicaciones en Forms 10g (por lo menos en la versión 4.0.314.0).&lt;br /&gt;&lt;br /&gt;Para desactivar ese control hay que abrir NOD32, ir a Configuración, pinchar en "Muestra las opciones avanzadas de configuración" y en la sección "Antivirus y antiespía" -&gt; "Protección del tráfico de Internet" -&gt; "HTTP, HTTPS" y desactivar la check "Activar el análisis HTTP".&lt;br /&gt;&lt;br /&gt;Evidentemente es un fallo de NOD32 ya que Forms10g por defecto usa el puerto 7778 y los puertos que en teoría analiza por defecto son los 80, 8080 y 3128. Además si configuramos excluir algunas direcciones no soluciona nada, la única opción es desactivar totalmente el análisis http.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_AwWvAUSKs6s/St4F1uNkgnI/AAAAAAAAIDU/WXhN-fxaWps/s1600-h/pantalla.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 204px;" src="http://3.bp.blogspot.com/_AwWvAUSKs6s/St4F1uNkgnI/AAAAAAAAIDU/WXhN-fxaWps/s320/pantalla.png" alt="" id="BLOGGER_PHOTO_ID_5394755824132588146" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-3082935426436253436?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oDQ4-wabSrIeHE3VrebiVn4ILA8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oDQ4-wabSrIeHE3VrebiVn4ILA8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oDQ4-wabSrIeHE3VrebiVn4ILA8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oDQ4-wabSrIeHE3VrebiVn4ILA8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/1c61C-KoEzo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/3082935426436253436/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=3082935426436253436&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3082935426436253436?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3082935426436253436?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/1c61C-KoEzo/problemas-de-rendimiento-de-forms10g.html" title="Problemas de rendimiento de Forms10g con antivirus NOD32" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_AwWvAUSKs6s/St4F1uNkgnI/AAAAAAAAIDU/WXhN-fxaWps/s72-c/pantalla.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2009/10/problemas-de-rendimiento-de-forms10g.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcBRHoycCp7ImA9WxVaGUQ.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-7721198091371749245</id><published>2009-04-17T21:28:00.003+02:00</published><updated>2009-04-17T21:37:35.498+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-17T21:37:35.498+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="list-item" /><title>Formas de cargar un List Item por código</title><content type="html">&lt;span style="font-size:130%;"&gt;Directamente desde una sql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El proceso se basa en un grupo de registros que creamos en base a una sql dinámica "v_grupo := Create_Group_From_Query('RecorG', v_sql);", para cargar la lista de elementos en base al grupo usamos la instrucción "POPULATE_LIST".&lt;br /&gt;&lt;br /&gt;Cuando creamos el ítem del bloque podemos dejarlo sin ningún valor, pero nos va a dar una advertencia de compilación un poco molesta, pero totalmente inocua. Si queremos que no nos dé, simplemente abrimos los elementos de lista y en el primer elemento le quitamos el campo "Valor de elemento de Lista" y como el valor por inicial es NULL y ese elemento es NULL no nos va a protestar.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_sql VARCHAR2(200); -- Variable para construir la SELECT dinánica.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_grupo             RecordGroup; -- Variable en donde vamos a meter el grupo de registros temporalmente.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_estado_empresa    ESTADOS.CODIGO%TYPE := 'ESPA'; -- Variable que contiene el valor que queremos mostrar por defecto.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  /*&lt;br /&gt;  Construimos la SELECT. En el primer campo sacamos&lt;br /&gt;  lo que queremos que muestre la lista y en el segundo&lt;br /&gt;  campo el valor correspondiente que va a devolver&lt;br /&gt;  por la selección (normalmente un código).&lt;/span&gt;*/&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  v_sql := 'SELECT INITCAP(nombre), codigo FROM estados ORDER BY nombre';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Asignamos el resultado de la select al grupo de registros.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_grupo := Create_Group_From_Query('RecorG', v_sql);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Construimos la lista, siempre y cuando la select devolviese registros.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  IF POPULATE_GROUP(v_grupo) = 0 THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    POPULATE_LIST('B1.ESTADO', V_Grupo);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  END IF;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Borramos el grupo, liberamos memoria que ya no nos hace falta.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  DELETE_GROUP(v_grupo);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Asignamos el valor por defecto que queremos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  :b1.estado := v_estado_empresa;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Si el campo es obligatorio deberíamos de poner esto para que nos elimine el elemento en blanco.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Set_Item_Property('B1.ESTADO', REQUIRED, PROPERTY_TRUE);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;END;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt; Elemento a elemento&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para limpiar un List-item se hace con la instrucción CLEAR_LIST('BLOQUE.CAMPO');&lt;br /&gt;&lt;br /&gt;Para ir añadiendo elementos se hace con ADD_LIST_ELEMENT('BLOQUE.CAMPO', &lt;id&gt;, &lt;texto&gt;, &lt;valor&gt;);&lt;br /&gt;&lt;br /&gt;  * &lt;id&gt;: Será un número que identifica cada elemento, se comenzará a numerar en el 1.&lt;br /&gt;  * &lt;texto&gt;: Texto que visualizará en el desplegable el usuario.&lt;br /&gt;  * &lt;valor&gt;: Valor que toma el campo cuando se selecciona.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;DECLARE&lt;br /&gt;CURSOR cur_clientes IS&lt;br /&gt;SELECT codigo_rapido, nombre&lt;br /&gt; FROM clientes;&lt;br /&gt;&lt;br /&gt;v_indice            NUMBER;&lt;br /&gt;v_primer_cliente    CLIENTES.CODIGO_RAPIDO%TYPE;&lt;br /&gt;BEGIN&lt;br /&gt;Set_Item_Property('B1.CLIENTE', REQUIRED, PROPERTY_FALSE);&lt;br /&gt;CLEAR_LIST('B1.CLIENTE');&lt;br /&gt;&lt;br /&gt;FOR reg IN cur_clientes LOOP&lt;br /&gt;  v_indice := v_indice + 1;&lt;br /&gt;  Add_List_Element('B1.CLIENTE', v_indice, reg.nombre, reg.codigo_rapido);&lt;br /&gt;&lt;br /&gt;  IF v_primer_cliente IS NULL THEN&lt;br /&gt;    v_primer_cliente := reg.codigo_rapidol;&lt;br /&gt;  END IF;&lt;br /&gt;END LOOP;&lt;br /&gt;:b1.cliente := v_primer_cliente;&lt;br /&gt;Set_Item_Property('B1.CLIENTE', REQUIRED, PROPERTY_TRUE);&lt;br /&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/valor&gt;&lt;/texto&gt;&lt;/id&gt;&lt;/valor&gt;&lt;/texto&gt;&lt;/id&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-7721198091371749245?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V3uf2VOJkM-g67rgkIy7cbpQ5xI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V3uf2VOJkM-g67rgkIy7cbpQ5xI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V3uf2VOJkM-g67rgkIy7cbpQ5xI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V3uf2VOJkM-g67rgkIy7cbpQ5xI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/OfE_cYmetcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/7721198091371749245/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=7721198091371749245&amp;isPopup=true" title="10 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7721198091371749245?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7721198091371749245?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/OfE_cYmetcs/formas-de-cargar-un-list-item-por.html" title="Formas de cargar un List Item por código" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2009/04/formas-de-cargar-un-list-item-por.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMGRHo4eCp7ImA9WxVaGUQ.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-4794872080607183653</id><published>2009-04-17T21:25:00.001+02:00</published><updated>2009-04-17T21:27:05.430+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-17T21:27:05.430+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="forms6i" /><title>Instalar Forms6i para linux en Enterprise Linux 5.2</title><content type="html">&lt;p&gt;En primer lugar hay que crear el grupo dba, oinstall y el usuario oracle:&lt;/p&gt; &lt;p&gt;groupadd dba          # group of users to be granted SYSDBA system privilege&lt;br /&gt;groupadd oinstall     # group owner of Oracle files&lt;br /&gt;useradd -c "Oracle software owner" -g oinstall -G dba oracle&lt;br /&gt;chown -R oracle.oinstall /oracle&lt;/p&gt; &lt;p&gt;Añadir las siguientes líneas al archivo .bash_profile:&lt;/p&gt; &lt;p&gt;export ORACLE_HOME=/oracle/dev6i&lt;br /&gt;export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/jre11/lib/linux/native_threads/:/usr/X11R6/lib/&lt;br /&gt;export ORACLE_AUTOREG=$ORACLE_HOME/guicommon6/tk60/admin&lt;br /&gt;export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin&lt;/p&gt; &lt;p&gt;Instalar gcc: yum install gcc&lt;/p&gt; &lt;p&gt;Instalar los siguientes paquetes:&lt;/p&gt; &lt;p&gt;libXp-1.0.0-8.1.el5.i386.rpm&lt;br /&gt;lesstif-0.95.0-15.el5.kb.i386.rpm&lt;br /&gt;compat-glibc-7.x-2.2.4.32.6.i386.rpm&lt;br /&gt;openmotif-devel-2.1.30-5_ICS.i386.rpm&lt;br /&gt;openmotif-2.1.30-5_ICS.i386.rpm&lt;/p&gt; &lt;p&gt;Descomprimir el archivo d2k6irelease2.tar (por ejemplo en /oracle/software), pero no instalarlo.&lt;/p&gt; &lt;p&gt;descomprimir p3851446_600_LINUX.zip (por ejemplo en /oracle/parche) y ejecutar la instalación, para ello ejecutamos lo siguiente:&lt;/p&gt; &lt;p&gt;export D2K6I_R2_SHIPHOME=/oracle/software/&lt;br /&gt;cd /oracle/parche/bug3851446&lt;br /&gt;./d2k6ir2_install_wrapper.sh &lt;/p&gt; &lt;p&gt;Descomprimir el archivo p6194129_60828_LINUX (parche 19) en la carpeta /software/dev6i&lt;/p&gt; &lt;p&gt;Ejecutar en entorno gráfico lo siguiente:&lt;/p&gt; &lt;p&gt;cd /oracle/dev6i/developer6i_patch19&lt;br /&gt;./patch_install.sh&lt;/p&gt; &lt;p&gt;Relincar:&lt;/p&gt; &lt;p&gt;cd $ORACLE_HOME/procbuilder60/lib; make -f ins_procbuilder.mk install&lt;br /&gt;cd $ORACLE_HOME/forms60/lib; make -f ins_forms60w.mk install&lt;br /&gt;cd $ORACLE_HOME/graphics60/lib; make -f ins_graphics60w.mk install&lt;br /&gt;cd $ORACLE_HOME/reports60/lib; make -f ins_reports60w.mk install&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-4794872080607183653?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L9ftqwNSf8tlQ85-xoDA3oJOmE0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L9ftqwNSf8tlQ85-xoDA3oJOmE0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/L9ftqwNSf8tlQ85-xoDA3oJOmE0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L9ftqwNSf8tlQ85-xoDA3oJOmE0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/jE95yitOVxI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/4794872080607183653/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=4794872080607183653&amp;isPopup=true" title="8 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/4794872080607183653?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/4794872080607183653?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/jE95yitOVxI/instalar-forms6i-para-linux-en.html" title="Instalar Forms6i para linux en Enterprise Linux 5.2" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>8</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2009/04/instalar-forms6i-para-linux-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MGRno8fyp7ImA9WxRbEEk.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-3142390086095852756</id><published>2008-11-30T12:37:00.003+01:00</published><updated>2008-11-30T12:43:47.477+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-30T12:43:47.477+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="wine" /><title>Forms 6i para Windows sobre Linux</title><content type="html">En la versión 1.1.9 de wine (todavía versión de desarrollo) han solucionado el bug que provocaba que el runtime de forms diese un error de protección general.&lt;br /&gt;&lt;br /&gt;Hay que decir que Forms6i tiene versión para Linux, pero los ejecutables (fmx) no son compatibles con los ejecutables de Windows, por lo que si desarrollamos en una plataforma Linux y los ejecutables los tenemos que distribuir para Windows esta es la única solución.&lt;br /&gt;&lt;br /&gt;Lo he probado sobre Fedora 10 y la verdad es que me he quedado gratamente sorprendido por la agilidad con la que se mueve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-3142390086095852756?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TB6USNxlkRkgFlPL2-RGajkEWI4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TB6USNxlkRkgFlPL2-RGajkEWI4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TB6USNxlkRkgFlPL2-RGajkEWI4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TB6USNxlkRkgFlPL2-RGajkEWI4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/SkrA1xttKRg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/3142390086095852756/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=3142390086095852756&amp;isPopup=true" title="6 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3142390086095852756?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3142390086095852756?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/SkrA1xttKRg/forms-6i-para-windows-sobre-linux.html" title="Forms 6i para Windows sobre Linux" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/11/forms-6i-para-windows-sobre-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcEQ3w6eip7ImA9WxRREU0.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-3271606990077727457</id><published>2008-09-22T18:43:00.002+02:00</published><updated>2008-09-22T18:46:42.212+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-22T18:46:42.212+02:00</app:edited><title>Seleccionar columnas de texto en editor PL/SQL</title><content type="html">En el editor PL/SQL si seleccionamos con el ratón manteniendo la tecla ALT pulsada podemos seleccionar columnas de texto en vez de líneas completas. Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_AwWvAUSKs6s/SNfLxVjcbjI/AAAAAAAAFiA/1hWJ4afPt0M/s1600-h/pant.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_AwWvAUSKs6s/SNfLxVjcbjI/AAAAAAAAFiA/1hWJ4afPt0M/s320/pant.jpg" alt="" id="BLOGGER_PHOTO_ID_5248887939183439410" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-3271606990077727457?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uCKoLRmixeTXmb5OJxdxz_AnB6c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uCKoLRmixeTXmb5OJxdxz_AnB6c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uCKoLRmixeTXmb5OJxdxz_AnB6c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uCKoLRmixeTXmb5OJxdxz_AnB6c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/AXGB2liidSY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/3271606990077727457/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=3271606990077727457&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3271606990077727457?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3271606990077727457?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/AXGB2liidSY/seleccionar-columnas-de-texto-en-editor.html" title="Seleccionar columnas de texto en editor PL/SQL" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_AwWvAUSKs6s/SNfLxVjcbjI/AAAAAAAAFiA/1hWJ4afPt0M/s72-c/pant.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/09/seleccionar-columnas-de-texto-en-editor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YDSXw8eyp7ImA9WxRREU0.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-6581129810243539397</id><published>2008-09-22T18:18:00.003+02:00</published><updated>2008-09-22T18:32:58.273+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-22T18:32:58.273+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="regedit" /><category scheme="http://www.blogger.com/atom/ns#" term="tabulación" /><category scheme="http://www.blogger.com/atom/ns#" term="forms" /><category scheme="http://www.blogger.com/atom/ns#" term="espacios" /><title>Personalizar espacios al tabular en editor PL/SQL</title><content type="html">En el editor de PL/SQL de Forms al pulsar la tecla TAB por defecto introduce 2 espacios (a mi particularmente es lo que utilizo simpre), pero si queremos cambiarlo podemos modificar (o insertar en caso de no existir) la variable DE_PREFS_TABSIZE en el regedit en HKEY_LOCAL_MACHINE\Software\Oracle.&lt;br /&gt;&lt;br /&gt;Si se utiliza un script para lanzar el builder con las varibles de entorno configuradadas (tal como explico en el post: &lt;a href="http://oracleforms.blogspot.com/2007/09/configurar-varios-entornos-de-ejecucin.html"&gt;Configurar varios entornos de desarrollo&lt;/a&gt;) en el script simplemente es añadir un nuevo set de la forma: set DE_PREFS_TABSIZE=valor&lt;valor&gt;&lt;/valor&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-6581129810243539397?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rzDYyE8w6AwOJjNGWRTyfOWMnuI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rzDYyE8w6AwOJjNGWRTyfOWMnuI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rzDYyE8w6AwOJjNGWRTyfOWMnuI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rzDYyE8w6AwOJjNGWRTyfOWMnuI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/H1BxcuMMaT8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/6581129810243539397/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=6581129810243539397&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/6581129810243539397?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/6581129810243539397?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/H1BxcuMMaT8/personalizar-espacios-al-tabular-en.html" title="Personalizar espacios al tabular en editor PL/SQL" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/09/personalizar-espacios-al-tabular-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MESHo9eip7ImA9WxNVGEk.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-3358884406095703868</id><published>2008-04-01T22:10:00.001+02:00</published><updated>2009-10-29T21:50:09.462+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T21:50:09.462+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="x64" /><category scheme="http://www.blogger.com/atom/ns#" term="Vista" /><title>Oracle Forms 6i en Windows de 64 bits</title><content type="html">Oracle Forms para Windows no está certificado para ninguna versión de 64 bits (Windows Vista, Microsoft 2003/2008 Server). Qué no esté certificado no quiere decir que no funcione, simplemente que Oracle en caso de problema no va a proporcionar ningún tipo de soporte.&lt;br /&gt;&lt;br /&gt;Windows Vista de 32 bits no está certificado pero a mi en concreto desde un principio me ha dado menos problemas que Forms10g, pero Oracle Forms 6i en 64 bits a partir del parche 4 no funcionan las llamadas a los reports que se realizan desde forms, tampoco funciona desde Forms Builder ejecutar el formulario que estamos diseñando.&lt;br /&gt;&lt;br /&gt;Como he dicho antes el problema surge a partir de parche 4 de forms, con el parche 3 o anterior funciona perfectamente, pero hay casos como el mío en donde ya estaba usando el parche 17 donde no podemos plantear volver al 3 ya que nos fallarían muchas más cosas.&lt;br /&gt;&lt;br /&gt;El problema en concreto se encuentra  en las librerías nn60.dll y nnb60.dll que se encuentran en la carpeta BIN. Estas librerías creo que gestionan la comunicación entre aplicaciones de Forms, forms con reports, builder con debugger, etc.&lt;br /&gt;&lt;br /&gt;En mi caso he instalado el parche 17 y he metido esas librerías del parche 3 y funciona todo correctamente.&lt;br /&gt;&lt;br /&gt;En los siguientes enlaces dejo las librerías del parche 3, de forma que si teneis problemas simplemente renombrais las que teneis instaladas y copiais estas:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://elfeme.googlepages.com/nn60.zip"&gt;nn60.zip&lt;/a&gt;&lt;br /&gt;&lt;a href="http://elfeme.googlepages.com/nnb60.zip"&gt;nnb60.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTA 29/10/2009: PROBLEMAS DETECTADOS&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Graphics no funciona&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Los reports que tienen filtros con listas de valores no funcionan bien.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-3358884406095703868?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aCTJLKtkhf0ZlcliDCaA1GiJrXk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aCTJLKtkhf0ZlcliDCaA1GiJrXk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aCTJLKtkhf0ZlcliDCaA1GiJrXk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aCTJLKtkhf0ZlcliDCaA1GiJrXk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/werexEQmZhs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/3358884406095703868/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=3358884406095703868&amp;isPopup=true" title="24 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3358884406095703868?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/3358884406095703868?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/werexEQmZhs/oracle-forms-6i-en-windows-de-64-bits.html" title="Oracle Forms 6i en Windows de 64 bits" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>24</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/04/oracle-forms-6i-en-windows-de-64-bits.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFRXY9fSp7ImA9WxZUEEU.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-4613625700177789357</id><published>2008-04-01T22:05:00.000+02:00</published><updated>2008-04-01T22:10:14.865+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-01T22:10:14.865+02:00</app:edited><title>Parche 3 de Oracle Forms 10.1.2 (10.1.2.3)</title><content type="html">Desde el 19 de Marzo está disponible en el Metalink la actualización del servidor de aplicaciones IAS 10.1.2 en donde viene incluido Oracle Forms 10g. De momento solo está disponible para Microsoft Windows y Solaris, pero no creo que tarde mucho la de Linux.&lt;br /&gt;&lt;br /&gt;En esta versión como principal novedad es la certificación de Windows Vista.&lt;br /&gt;&lt;br /&gt;Más información en la página del OTN &lt;a href="http://www.oracle.com/technology/products/forms/index.html"&gt;http://www.oracle.com/technology/products/forms/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-4613625700177789357?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6DQafyiMuB3qKL399S1bd1i5vpY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6DQafyiMuB3qKL399S1bd1i5vpY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6DQafyiMuB3qKL399S1bd1i5vpY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6DQafyiMuB3qKL399S1bd1i5vpY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/W9-zbLLE54Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/4613625700177789357/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=4613625700177789357&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/4613625700177789357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/4613625700177789357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/W9-zbLLE54Q/parche-3-de-oracle-forms-1012-10123.html" title="Parche 3 de Oracle Forms 10.1.2 (10.1.2.3)" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/04/parche-3-de-oracle-forms-1012-10123.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYCRX88cSp7ImA9WxZWFkQ.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-6719455685182188412</id><published>2008-03-16T20:43:00.000+01:00</published><updated>2008-03-16T20:52:44.179+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-16T20:52:44.179+01:00</app:edited><title>Developer Suite 10g en Windows Vista</title><content type="html">En primer lugar debemos de cambiar la memoria el modo de funcionamiento virtual de Windows Vista durante la instalación, luego la dejaremos como estaba.&lt;br /&gt;&lt;br /&gt;Vamos a Inicio -&gt; en el icono Equipo pulsamos con el botón derecho y vamos a propiedades. En la ventana que nos abre pulsamos en "Cambiar la configuración".&lt;br /&gt;&lt;br /&gt;En la pestaña "Opciones avanzadas" pulsamos el botón "Configuración" de la sección "Rendimiento"&lt;br /&gt;&lt;br /&gt;En la ventana que se abre vamos a la pestaña "Opciones avanzadas" y pulsamos en el botón "Cambiar" de la sección "Memoria Virtual".&lt;br /&gt;&lt;br /&gt;En la ventana que se abre quitamos la check "Administrar automáticamente el tamaño del archivo de paginación para todas las unidades" y ponemos un tamaño para el archivo de paginación personalizado y luego pulsamos el botón "Establecer" y luego en "Aceptar".&lt;br /&gt;&lt;br /&gt;Nos pedirá reiniciar, reiniciamos.&lt;br /&gt;&lt;br /&gt;Para ejecutar la instalación de setup.exe, primero pulsamos con el botón derecho y en la pestaña "Compatibilidad" activamos "Ejecutar en modo de compatibilidad para: Windows XP (Service Pack 2)".&lt;br /&gt;&lt;br /&gt;A partir de aquí instalamos de forma normal y una vez finalizada la instalación podemos volver a poner como estaba la configuración de la memoria virtual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-6719455685182188412?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wzL_YmlyLzqOxcYLnxi4fKgtECw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wzL_YmlyLzqOxcYLnxi4fKgtECw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wzL_YmlyLzqOxcYLnxi4fKgtECw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wzL_YmlyLzqOxcYLnxi4fKgtECw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/4mLYZj1ltAM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/6719455685182188412/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=6719455685182188412&amp;isPopup=true" title="6 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/6719455685182188412?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/6719455685182188412?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/4mLYZj1ltAM/developer-suite-10g-en-windows-vista.html" title="Developer Suite 10g en Windows Vista" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/03/developer-suite-10g-en-windows-vista.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UMSHY9eyp7ImA9WxZSGEs.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-469691793876591668</id><published>2008-02-01T11:19:00.000+01:00</published><updated>2008-02-01T11:21:29.863+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-01T11:21:29.863+01:00</app:edited><title>Forms6: Forzar cierre report background</title><content type="html">Puede no tener mucho sentido el cerrar el report background una vez se lanza un informe, ya que la siguiente vez que se intente lanzar otro informe tiene que volver a abrirse con la consiguiente pérdida de tiempo, pero hay casos en que puede ser util.&lt;br /&gt;&lt;br /&gt;Para forzar el cierre del report background en cuando termine con el informe hay que añadir a la lista de parámetros que se le pasa al report el siguiente parámetro:&lt;br /&gt;&lt;br /&gt;ADD_PARAMETER (&lt;lista parámetros&gt;, 'ORACLE_SHUTDOWN',  TEXT_PARAMETER, 'Yes');&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-469691793876591668?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LTCSMJ51WKMgVTawzXB5A6eCkVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LTCSMJ51WKMgVTawzXB5A6eCkVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LTCSMJ51WKMgVTawzXB5A6eCkVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LTCSMJ51WKMgVTawzXB5A6eCkVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/vdSewwnLbBA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/469691793876591668/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=469691793876591668&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/469691793876591668?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/469691793876591668?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/vdSewwnLbBA/forms6-forzar-cierre-report-background.html" title="Forms6: Forzar cierre report background" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/02/forms6-forzar-cierre-report-background.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkINSXo_cCp7ImA9WxZSEUU.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-1791306491189440198</id><published>2008-01-24T16:27:00.001+01:00</published><updated>2008-01-24T16:29:58.448+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-24T16:29:58.448+01:00</app:edited><title>Abrir varias ventanas del Editor PL/SQL</title><content type="html">Cuando en el navegador de objetos hacemos doble click sobre una unidad de programa (paquete, función, disparador) nos cierra el Editor PL/SQL que teníamos abierto y abre el nuevo, para hacer que no cierre el lo que teníamos abierto y abra una nueva ventana simplemente al hacer doble click pulsamos la tecla MAYUSCULAS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-1791306491189440198?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WlrhzjEqhSr376w8qBeubwRYnbk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WlrhzjEqhSr376w8qBeubwRYnbk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WlrhzjEqhSr376w8qBeubwRYnbk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WlrhzjEqhSr376w8qBeubwRYnbk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/TJLn3sPjqGc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/1791306491189440198/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=1791306491189440198&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1791306491189440198?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/1791306491189440198?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/TJLn3sPjqGc/abrir-varias-ventanas-del-editor-plsql.html" title="Abrir varias ventanas del Editor PL/SQL" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2008/01/abrir-varias-ventanas-del-editor-plsql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEESHw4eip7ImA9WxBTGE4.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-8905172664345660352</id><published>2007-10-05T22:06:00.002+02:00</published><updated>2009-12-15T00:16:49.232+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-15T00:16:49.232+01:00</app:edited><title>Forms 6 y Forms 10g: Generar archivo excel (XLS)</title><content type="html">En Jakarta hay un proyecto que consiste en un API para manipular y generar documentos de Office sin necesidad de tener Office instalado, luego los documentos resultantes se pueden abrir con cualquier suite ofimática, como por ejemplo OpenOffice.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://poi.apache.org/trans/es/index.html"&gt;http://poi.apache.org/trans/es/index.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
En el momento de escribir esto la última versión era la 3.0.1 y las clases necesarias se encuentran en el archivo &lt;a href="http://ftp.udc.es/apache-dist/poi/release/bin/"&gt;poi-3.0.1-FINAL-20070705.jar&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Para poder usar estas clases en un programa de forms tenemos que hacer los siguientes pasos:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Forms 10g:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;En primer lugar añadir a la variable de entorno CLASSPATH el archivo poi-3.0.1-FINAL-20070705.jar (&lt;a href="http://oracleforms.blogspot.com/2007/09/configurar-varios-entornos-de-ejecucin.html"&gt;si se usa un archivo de comandos para lanzar el Forms Builder simplemente hay que añadir&lt;/a&gt;: set CLASSPATH=...)&lt;/li&gt;
&lt;li&gt;Importar las clases, para ello en el navegador de objetos vamos al menú "Programa" y luego a "Importar Clases Java...".&lt;/li&gt;
&lt;/ul&gt;&lt;a href="http://3.bp.blogspot.com/_AwWvAUSKs6s/Rwayi47XdgI/AAAAAAAACTE/dTboqfFWADU/s1600-h/importer.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5117974339019830786" src="http://3.bp.blogspot.com/_AwWvAUSKs6s/Rwayi47XdgI/AAAAAAAACTE/dTboqfFWADU/s320/importer.jpg" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;En esta ventana seleccionamos las clases:&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;org.apache.poi.hssf.usermodel.HSSFWorkbook&lt;/li&gt;
&lt;li&gt;org.apache.poi.hssf.usermodel.HSSFRow&lt;/li&gt;
&lt;li&gt;org.apache.poi.hssf.usermodel.HSSFSheet&lt;/li&gt;
&lt;li&gt;org.apache.poi.hssf.usermodel.HSSFCell&lt;/li&gt;
&lt;li&gt;java.io.FileOutputStream (posiblemente tengamos que añadir al CLASSPATH el archivo rt.jar&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Una vez importadas las clases nos crea paquetes PL/SQL para poder interactuar con ellas, por lo que ahora simplemente hay que escribir el código PL/SQL normal.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Para poder ejecutar el programa hay que añadir el archivo poi-3.0.1-FINAL-20070705.jar al CLASSPATH en el servidor. Para ello miramos en el archivo formsweb.cfg que se encuentra en $ORACLE_HOME/forms/server la variable envFile, y al archivo que apunta es donde tenemos que modificar la variable CLASSPATH.&lt;/li&gt;
&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Forms 6i:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Hay que usar una máquina virtual de Java versión 1.4.2 o superior, lo he probado con la 1.4.2_06 y con 1.6.0_02.&lt;/li&gt;
&lt;li&gt;Añadir a la variable de entorno PATH las carpetas: (Sustituir c:\program files\java\jdk1.6.0_02 por la carpeta en que tengamos instalado el jdk, si no lo configuramos correctamente nos dará el error: "PDE-UJI001 Fallo al crear JVM." al intentar importar las clases)&lt;br /&gt;
&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;C:\Program Files\Java\jdk1.6.0_02\bin&lt;/li&gt;
&lt;li&gt;C:\Program Files\Java\jdk1.6.0_02\jre\bin&lt;/li&gt;
&lt;li&gt;C:\Program Files\Java\jdk1.6.0_02\jre\bin\client&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Al igual que en Forms 10g hay que añadir a la variable CLASSPATH el archivo poi-3.0.1-FINAL-20070705.jar&lt;/li&gt;
&lt;li&gt;Añadir también al CLASSPATH el archivo importer.jar que se encuentra en $ORACLE_HOME\tools\common60\java&lt;/li&gt;
&lt;li&gt;Al igual que en Forms 10g, en el programa que se quiera usar hay que importar las mismas clases Java que se indican en el apartado para Forms 10g (esas son necesarias para los ejemplos, pero seguramente que en un caso real tengamos que importar más), para ello vamos al menú "Programa" y luego a "Importar Clases Java...".&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Ejemplos:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://poi.apache.org/hssf/quick-guide.html"&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo New Workbook de Jakarta POI&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;HSSFWorkbook wb = new HSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Equivalente en Forms&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;DECLARE
v_wb      ORA_JAVA.JOBJECT;
v_fileout ORA_JAVA.JOBJECT;
BEGIN
v_wb := hssfworkbook.new();
v_fileout := fileoutputstream.new('workbook.xls');
hssfworkbook.write(v_wb, v_fileout);
fileoutputstream.close(v_fileout);
END;
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://poi.apache.org/hssf/quick-guide.html"&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Ejemplo New Shet de Jakarta POI&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");
HSSFSheet sheet2 = wb.createSheet("second sheet");
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Equivalente en Forms:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;DECLARE
v_wb       ORA_JAVA.JOBJECT;
v_fileout  ORA_JAVA.JOBJECT;
v_sheet1   ORA_JAVA.JOBJECT;
v_sheet2   ORA_JAVA.JOBJECT;
BEGIN
v_wb := hssfworkbook.new();
v_sheet1 := hssfworkbook.createsheet(v_wb, 'new sheet');
v_sheet2 := hssfworkbook.createsheet(v_wb, 'second sheet');
v_fileout := fileoutputstream.new('workbook.xls');
hssfworkbook.write(v_wb, v_fileout);
fileoutputstream.close(v_fileout);
END;
&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://poi.apache.org/hssf/quick-guide.html"&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Ejemplo Creating Cells de Jakarta POI&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

// Create a row and put some cells in it. Rows are 0 based.
HSSFRow row = sheet.createRow((short)0);
// Create a cell and put a value in it.
HSSFCell cell = row.createCell((short)0);
cell.setCellValue(1);

// Or do it on one line.
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("This is a string");
row.createCell((short)3).setCellValue(true);

// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();&lt;span style="font-family: Georgia, serif;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Equivalente en Forms:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;DECLARE
v_wb         ORA_JAVA.JOBJECT;
v_fileout    ORA_JAVA.JOBJECT;
v_sheet      ORA_JAVA.JOBJECT;
v_row        ORA_JAVA.JOBJECT;
v_cell       ORA_JAVA.JOBJECT;
BEGIN
v_wb := hssfworkbook.new();
v_sheet := hssfworkbook.createsheet(v_wb, 'new sheet');
v_row := hssfsheet.createrow(v_sheet, 0);
v_cell := hssfrow.createcell(v_row, 0);
hssfcell.setcellvalue(v_cell, 1);
v_cell := hssfrow.createcell(v_row, 1);
hssfcell.setcellvalue(v_cell, 1.2);
v_cell := hssfrow.createcell(v_row, 2);
hssfcell.setcellvalue(v_cell, 'This is a string');
v_cell := hssfrow.createcell(v_row, 3);
hssfcell.setcellvalue(v_cell, TRUE);
v_fileout := fileoutputstream.new('workbook.xls');
hssfworkbook.write(v_wb, v_fileout);
fileoutputstream.close(v_fileout);
END;
&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Ejemplo para enviar el contenido de un bloque a una excel:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;DECLARE
v_wb               ORA_JAVA.JOBJECT;
v_fileout          ORA_JAVA.JOBJECT;
v_sheet            ORA_JAVA.JOBJECT;
v_row              ORA_JAVA.JOBJECT;
v_cell             ORA_JAVA.JOBJECT;
v_fin              BOOLEAN := FALSE;
v_bloque           VARCHAR2(30) := :system.cursor_block;
v_record_anterior  NUMBER := :system.cursor_record;
v_item_anterior    VARCHAR2(61) := :system.cursor_item;
v_item             VARCHAR2(30);
v_num_celda        NUMBER;
v_num_fila         NUMBER;
BEGIN
v_wb := hssfworkbook.new();
v_sheet := hssfworkbook.createsheet(v_wb, 'new sheet');
v_num_fila := 0;

FIRST_RECORD;

WHILE NOT v_fin LOOP
v_row := hssfsheet.createrow(v_sheet, v_num_fila);
v_num_fila := v_num_fila + 1;
v_item := Get_Block_Property(v_bloque, FIRST_ITEM);
v_num_celda := 0;

WHILE v_item IS NOT NULL LOOP
v_cell := hssfrow.createcell(v_row, v_num_celda);
hssfcell.setcellvalue(v_cell, NAME_IN(v_bloque || '.' || v_item));
v_item := Get_Item_Property(v_bloque || '.' || v_item, NEXTITEM);
v_num_celda := v_num_celda + 1;
END LOOP;

IF :system.last_record = 'TRUE' THEN
v_fin := TRUE;
ELSE
NEXT_RECORD;
END IF;
END LOOP;

v_fileout := fileoutputstream.new('workbook.xls');
hssfworkbook.write(v_wb, v_fileout);
fileoutputstream.close(v_fileout);

GO_RECORD(v_record_anterior);
GO_ITEM(v_item_anterior);
END;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;b&gt;NOTA 15/12/2009&lt;/b&gt;: Las versiones recientes de las librerías de Jakarta POI están compiladas para usar una máquina virtual de java superior a la que tiene Forms 10g. Al importar en Forms10g sale este mensaje: "&lt;i&gt;Se ha producido una excepción: java.lang.UnsupportedClassVersionError: org/apache/poi/hssf/usermodel/HSSFWorkbook (Unsupported major.minor version 49.0)&lt;/i&gt;". Con la versión 3.0.1 de las librerías funciona perfectamente. Esta versión se puede descargar de aqui:&amp;nbsp;&lt;a href="http://sites.google.com/site/elfeme/files/poi-3.0.2-FINAL-20080204.zip?attredirects=0&amp;amp;d=1"&gt;http://sites.google.com/site/elfeme/files/poi-3.0.2-FINAL-20080204.zip?attredirects=0&amp;amp;d=1&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&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/8142776109631722890-8905172664345660352?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JAme8xu4LsIphkj3xNiUgnZaZ5g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JAme8xu4LsIphkj3xNiUgnZaZ5g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JAme8xu4LsIphkj3xNiUgnZaZ5g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JAme8xu4LsIphkj3xNiUgnZaZ5g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/xYZwHO-bNWY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/8905172664345660352/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=8905172664345660352&amp;isPopup=true" title="32 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/8905172664345660352?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/8905172664345660352?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/xYZwHO-bNWY/forms-10g-generar-archivo-excel-xls.html" title="Forms 6 y Forms 10g: Generar archivo excel (XLS)" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_AwWvAUSKs6s/Rwayi47XdgI/AAAAAAAACTE/dTboqfFWADU/s72-c/importer.jpg" height="72" width="72" /><thr:total>32</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2007/10/forms-10g-generar-archivo-excel-xls.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEBRns5fip7ImA9WB9SEUU.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-7269457157624554240</id><published>2007-09-30T20:37:00.000+02:00</published><updated>2007-09-30T21:30:57.526+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-30T21:30:57.526+02:00</app:edited><title>Forms10g: Modificar apariencia</title><content type="html">En el archivo formsweb.cfg se dispone del parámetro &lt;span style="font-weight: bold;"&gt;lookAndFeel&lt;/span&gt; para modificar la apariencia de la aplicación, los valores que puede tomar son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;generic: Apariencia típica de Windows&lt;br /&gt;&lt;/li&gt;&lt;li&gt;oracle: Apariencia por defecto definida por Oracle. Dentro de esta apariencia se puede usar el parámetro &lt;span style="font-weight: bold;"&gt;colorScheme&lt;/span&gt; para modificar el conjunto de colores usados. Los valores que puede tomar son:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;teal&lt;/li&gt;&lt;li&gt;red&lt;/li&gt;&lt;li&gt;titanium&lt;/li&gt;&lt;li&gt;blue&lt;/li&gt;&lt;li&gt;khaki&lt;/li&gt;&lt;li&gt;olive&lt;/li&gt;&lt;li&gt;purple&lt;/li&gt;&lt;li&gt;blaf: Este en concreto no está soportado oficialmente por Oracle fuera de Oracle Applications.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Podemos modificar estos parámetros en el archivo formsweb.cfg o también a través de la url, por ejemplo: http://direccionequipo:8889/forms/frmservlet?config=prueba&lt;span style="font-weight: bold;"&gt;&amp;amp;lookandfeel=generic&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-7269457157624554240?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wFiCGWTOw-AAqFO8XaKHw94wsDM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wFiCGWTOw-AAqFO8XaKHw94wsDM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wFiCGWTOw-AAqFO8XaKHw94wsDM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wFiCGWTOw-AAqFO8XaKHw94wsDM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/MlWiU13l4Cw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/7269457157624554240/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=7269457157624554240&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7269457157624554240?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/7269457157624554240?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/MlWiU13l4Cw/forms10g-modificar-apariencia.html" title="Forms10g: Modificar apariencia" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2007/09/forms10g-modificar-apariencia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UNRHkzeSp7ImA9WB9TFUo.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-6749426053298532475</id><published>2007-09-23T17:21:00.001+02:00</published><updated>2007-09-23T21:21:35.781+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-23T21:21:35.781+02:00</app:edited><title>Forms10g: clientDPI</title><content type="html">Se me ha dado el caso de una aplicación desarrollada en Forms10g sobre plataforma Windows, que al desplegarse en algún sistema Linux se veían las pantallas demasiado pequeñas.&lt;br /&gt;&lt;br /&gt;Dependiendo de la aplicación, puede ser que parezca que es problema de las fuentes, en mi caso la aplicación al arrancar se maximizaba y ocupaba toda la pantalla y eso hacía que pareciese que el problema fuera con las fuentes.&lt;br /&gt;&lt;br /&gt;El problema se encuentra en los puntos por pulgada que usa la máquina virtual de Java. La configuración de los puntos por pulgada se puede variar añadiendo el parámetro clientDPI en el archivo de configuración formsweb.cfg en la sección de nuestra aplicación, por ejemplo:&lt;br /&gt;&lt;br /&gt;[prueba]&lt;br /&gt;form=prueba.fmx&lt;br /&gt;...&lt;br /&gt;clientDPI=96&lt;br /&gt;&lt;br /&gt;Para que el applet tenga en cuenta este parámetro tenemos que modificar los archivos webutiljpi.htm, webutiljini.htm, webutilbase.htm, basejpi.htm, basejini.htm y base.htm. En realidad solo sería necesario modificar los que terminan en jpi (Java plug-in) ya que en Linux no se puede instalar el Jinitiator por lo que nunca podríamos usar los que terminan en jini (Jinitiator), pero podría ser que en ordenadores Windows con Jinitiator quisiesemos alterar este valor, por lo que modificarlos todos no está más.&lt;br /&gt;&lt;br /&gt;La modificación que hay que hacer es la siguiente (para el webutiljpi.htm):&lt;br /&gt;&lt;br /&gt;Después de la línea: &lt;code&gt;&amp;lt;param name="WebUtilMaxTransferSize" value="%WebUtilMaxTransferSize%"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Añadir:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;param name="clientDPI" value="%clientDPI%"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Después de la línea: WebUtilMaxTransferSize="%WebUtilMaxTransferSize%"&lt;br /&gt;&lt;br /&gt;Añadir la línea:&lt;br /&gt;&lt;br /&gt;clientDPI="%clientDPI%"&lt;br /&gt;&lt;br /&gt;Ejemplo del formulario de prueba a 96 dpi:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_AwWvAUSKs6s/RvZ9cY7XdeI/AAAAAAAACS0/pTtf03_UIAw/s1600-h/test96dpi.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_AwWvAUSKs6s/RvZ9cY7XdeI/AAAAAAAACS0/pTtf03_UIAw/s320/test96dpi.jpg" alt="" id="BLOGGER_PHOTO_ID_5113412353607038434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ejemplo del formulario de prueba a 50 dpi:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_AwWvAUSKs6s/RvZ9x47XdfI/AAAAAAAACS8/6LC-QqN15fY/s1600-h/test50dpi.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_AwWvAUSKs6s/RvZ9x47XdfI/AAAAAAAACS8/6LC-QqN15fY/s320/test50dpi.jpg" alt="" id="BLOGGER_PHOTO_ID_5113412722974225906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para hacer pruebas para encontrar el valor que mejor se nos ajuste, no hace falta estar modificando el archivo de configuración formsweb.cfg, podemos alterar el valor añadiendo el parámetro clientDPI a la url, por ejemplo: http://equipo:8889/forms/frmservlet?config=pru&amp;amp;form=test&lt;span style="font-weight: bold;"&gt;&amp;amp;clientDPI=50&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para más detalles consultar la nota 1071248.6 en el &lt;a href="http://metalink.oracle.com/"&gt;metalink&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-6749426053298532475?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DDArp5pQUPUFQMT9BN11nFkC6RE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DDArp5pQUPUFQMT9BN11nFkC6RE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DDArp5pQUPUFQMT9BN11nFkC6RE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DDArp5pQUPUFQMT9BN11nFkC6RE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/eRvbIoP_gvg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/6749426053298532475/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=6749426053298532475&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/6749426053298532475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/6749426053298532475?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/eRvbIoP_gvg/forms10g-clientdpi_23.html" title="Forms10g: clientDPI" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_AwWvAUSKs6s/RvZ9cY7XdeI/AAAAAAAACS0/pTtf03_UIAw/s72-c/test96dpi.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2007/09/forms10g-clientdpi_23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkABRn48eSp7ImA9WxRREU0.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-2363790674692319301</id><published>2007-09-22T11:09:00.001+02:00</published><updated>2008-09-22T18:25:57.071+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-22T18:25:57.071+02:00</app:edited><title>Configurar varios entornos de desarrollo</title><content type="html">Muchas veces se me ha dado el caso de tener que trabajar en varios proyectos, donde las librerías (plls) y librerías de objetos (olb) son distintas y se encuentran en varios directorios, la solución que solía hacer era modificar la variable FORMS60_PATH en el regedit, pero un día se me ocurrió una idea que consiste en lo siguiente:&lt;br /&gt;&lt;br /&gt;Por cada entorno de ejecución me hice un script que inicializa las variables de entorno y luego arranca el Forms Builder, incluso ya arranca conectado con la base de datos que quiero.&lt;br /&gt;&lt;br /&gt;Ejemplo: Nombre del script &lt;span style="font-weight: bold;"&gt;produccion.cmd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set FORMS60_PATH=L:\olb;L:\adaptaciones;L:\plls;L:\mmx;L:\fmxs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set UI_ICON=L:\iconos&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set REPORTS60_PATH=L:\adaptaciones;L:\plls;L:\reps&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set PATH=c:\oracle\dev6i\bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set NLS_LANG=SPANISH_SPAIN.WE8ISO8859P15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set NLS_DATE_FORMAT=DD/MM/YYYY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set NLS_NUMERIC_CHARACTERS=,.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set NLS_SORT=BINARY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set REPORTS60_TMP=c:\temp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;start ifbld60 userid=usuario/password@cadenaconexion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ejecutando el script primero inicializa las variables y luego arranca el Forms Builder. Si tenemos otro proyecto y las librerías están en otros directorios hacemos otro script de forma similar.&lt;br /&gt;&lt;br /&gt;En caso de Forms10g es muy similar solo hay que cambiar los nombres de las variables de entorno, por ejemplo no es FORMS60_PATH, sería FORMS_PATH y el ejecutable no es ifbld60, sería frmbld&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-2363790674692319301?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kLQNpwToiacBjplhBMC2M8qwrnk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kLQNpwToiacBjplhBMC2M8qwrnk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kLQNpwToiacBjplhBMC2M8qwrnk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kLQNpwToiacBjplhBMC2M8qwrnk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/O4nIM_176zk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/2363790674692319301/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=2363790674692319301&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/2363790674692319301?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/2363790674692319301?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/O4nIM_176zk/configurar-varios-entornos-de-ejecucin.html" title="Configurar varios entornos de desarrollo" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2007/09/configurar-varios-entornos-de-ejecucin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04MQXw8fSp7ImA9WB5aF0w.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-4782255799233244672</id><published>2007-09-13T22:32:00.000+02:00</published><updated>2007-09-13T22:39:40.275+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-13T22:39:40.275+02:00</app:edited><title>Forms 6: Enviar correo con adjunto a través de Outlook</title><content type="html">Con este código nos permite añadir un mensaje en la bandeja de salida y luego enviarlo o mostrar el mensaje para ser enviado luego por el usuario.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_outlookapp         ole2.obj_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_namespace          ole2.obj_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_mailitem           ole2.obj_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_oleparam           ole2.list_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_attachments        ole2.obj_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_outlookapp := ole2.create_obj('Outlook.Application');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_oleparam := ole2.create_arglist;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.add_arg(v_oleparam, 'MAPI');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_namespace := ole2.invoke_obj(v_outlookapp, 'GetNameSpace', v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.destroy_arglist(v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_oleparam := ole2.create_arglist;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.add_arg(v_oleparam, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_mailitem := ole2.invoke_obj(v_outlookapp, 'CreateItem', v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.destroy_arglist(v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.set_property(v_mailitem, 'To', 'xxxx@xxxmail.com');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.set_property(v_mailitem, 'Subject', 'Asunto');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.set_property(v_mailitem, 'Body', 'Texto del mensaje');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Añadimos el adjunto&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_attachments := ole2.get_obj_property(v_mailitem, 'Attachments');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_oleparam := ole2.create_arglist;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.add_arg(v_oleparam, 'C:\Temp\prueba.pdf');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.invoke(v_attachments, 'add', v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.destroy_arglist(v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Con esta línea invocamos el envío, si queremos &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- simplemente abrir el Outlook para que pueda revisar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- el correo cambiamos 'Send' por 'Display' &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.invoke(v_mailitem, 'Send');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.RELEASE_OBJ(v_mailitem);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.RELEASE_OBJ(v_namespace);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.RELEASE_OBJ(v_outlookapp);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sin adjunto sería parecido pero con menos código, ahí va el ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_outlookapp         ole2.obj_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_namespace          ole2.obj_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_mailitem           ole2.obj_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_oleparam           ole2.list_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_outlookapp := ole2.create_obj('Outlook.Application');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_oleparam := ole2.create_arglist;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.add_arg(v_oleparam, 'MAPI');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_namespace := ole2.invoke_obj(v_outlookapp, 'GetNameSpace', v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.destroy_arglist(v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_oleparam := ole2.create_arglist;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.add_arg(v_oleparam, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  v_mailitem := ole2.invoke_obj(v_outlookapp, 'CreateItem', v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.destroy_arglist(v_oleparam);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.set_property(v_mailitem, 'To', '&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;xxxx@xxxmail.com&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.set_property(v_mailitem, 'Subject', 'Asunto');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.set_property(v_mailitem, 'Body', 'Texto del mensaje sin adjunto');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- Con esta línea invocamos el envío, si queremos &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- simplemente abrir el Outlook para que pueda revisar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  -- el correo cambiamos 'Send' por 'Display' &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.invoke(v_mailitem, 'Send');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.RELEASE_OBJ(v_mailitem);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.RELEASE_OBJ(v_namespace);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  ole2.RELEASE_OBJ(v_outlookapp);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;END;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-4782255799233244672?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MqcyiDOgFtWB4x9GrKMI6HWQD3w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MqcyiDOgFtWB4x9GrKMI6HWQD3w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MqcyiDOgFtWB4x9GrKMI6HWQD3w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MqcyiDOgFtWB4x9GrKMI6HWQD3w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/JNpbwQB_ROc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/4782255799233244672/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=4782255799233244672&amp;isPopup=true" title="10 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/4782255799233244672?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/4782255799233244672?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/JNpbwQB_ROc/forms-6-enviar-correo-con-adjunto-travs.html" title="Forms 6: Enviar correo con adjunto a través de Outlook" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2007/09/forms-6-enviar-correo-con-adjunto-travs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGRnsyeip7ImA9WB5aFUk.&quot;"><id>tag:blogger.com,1999:blog-8142776109631722890.post-330663267366629127</id><published>2007-09-12T00:02:00.000+02:00</published><updated>2007-09-12T00:17:07.592+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-12T00:17:07.592+02:00</app:edited><title>Tetris en Forms</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_AwWvAUSKs6s/RucRbPbjNYI/AAAAAAAACPg/_n_q1zWjE80/s1600-h/tetris.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_AwWvAUSKs6s/RucRbPbjNYI/AAAAAAAACPg/_n_q1zWjE80/s320/tetris.jpg" alt="" id="BLOGGER_PHOTO_ID_5109071461971342722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hace tiempo me encontré el juego del Tetris programado en Forms, en concreto en la versión 6. Me llamó la atención la forma en que captura las pulsaciones de las teclas, ya que Oracle Forms no tiene forma de manejar las pulsaciones de teclado de forma nativa (se podría hacer usando Java), por lo que hay que usar trucos.&lt;br /&gt;&lt;br /&gt;En concreto el truco que han usado aqui es, para la tecla arriba y abajo capturan los eventos KEY-UP y KEY-DOWN respectivamente y para capturar las pulsaciones de las techas derecha e izquierda usan un campo de tipo radio-button oculto a la vista, es decir alto y ancho cero, entonces cuando se pulsa la techa derecha se lanza el evento WHEN-RADIO-CHANGED y a la izquierda lo mismo.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.content-type.com/1200195785/tetris.fmb.htm"&gt;tetris.fmb en content-type.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.oraclehome.co.uk/forms/tetris.fmb"&gt;tetris.fmb en www.oraclehome.co.uk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusión&lt;/span&gt;: No es matar moscas a cañonazos, es lo contrario, es como ir a la guerra usando alfileres como arma, pero es muy interesante lo que se puede llegar a hacer con un entorno de desarrollo 4gl que no está pensado precisamente para juegos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8142776109631722890-330663267366629127?l=oracleforms.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QJ18qfbNSXt2WHUExnZuesJzakI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QJ18qfbNSXt2WHUExnZuesJzakI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QJ18qfbNSXt2WHUExnZuesJzakI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QJ18qfbNSXt2WHUExnZuesJzakI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/OracleForms/~4/IaUXYtro56Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://oracleforms.blogspot.com/feeds/330663267366629127/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8142776109631722890&amp;postID=330663267366629127&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/330663267366629127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8142776109631722890/posts/default/330663267366629127?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/OracleForms/~3/IaUXYtro56Q/tetris-en-forms.html" title="Tetris en Forms" /><author><name>sailefm</name><uri>http://www.blogger.com/profile/17347744937231822831</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="29" height="32" src="http://3.bp.blogspot.com/-Mlx2ubsOOdg/TxaocHi-IEI/AAAAAAAARTs/pqOE79SnhmI/s220/DSC00547_re.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_AwWvAUSKs6s/RucRbPbjNYI/AAAAAAAACPg/_n_q1zWjE80/s72-c/tetris.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://oracleforms.blogspot.com/2007/09/tetris-en-forms.html</feedburner:origLink></entry></feed>

