viernes, 15 de abril de 2011

FORMAS ORACLE DEVELOPER

NO HAY NECESIDAD DE VOLVER A COMPILAR LAS FORMAS CUANDO SE ACTUALIZA A ORACLE FORMS 10G

Al actualizar a Oracle Forms 10g (9.0.4) de una versión anterior de Oracle9 formas i, no es necesario volver a compilar sus aplicaciones de formularios.
Sin embargo, si la plataforma de desarrollo es diferente de la plataforma de desarrollo (por ejemplo, Windows y Solaris para el desarrollo para la implementación) los archivos de origen (. FMB. PLL. MMB, etc) se tienen que recompilar el despliegue platform.Both Oracle Developer Suite 10 g (9.0.4) y Oracle Application Server 10g (9.0.4) proporcionan un compilador de las formas ejecutables que pueden ser utilizados para generar el tiempo de ejecución de las formas nuevos archivos (FMX.. PLX. MMX, etc) para el despliegue plataforma desde los archivos de origen y los módulos.

FUENTES INCRUSTADAS EN LAS FORMAS DE DESARROLLO
Oracle Forms tiene varios lugares donde se muestra el texto, pero donde el objeto en cuestión no está expuesto a través del constructor, o no expone una propiedad de fuente.
Por ejemplo:
  • Ventana de los títulos
  • Consola de línea
  • Cancelar consulta de diálogo
  • LOV ventana del cuadro de búsqueda
  • Ayuda de Campo de diálogo
No es obvio que la fuente viene de estos objetos y en varios casos (por ejemplo, la línea de la consola, Ayuda de diálogo) el valor está codificado en el applet de las formas. Este duro fuente codificada en la consola y de diálogo Ayuda de Campo es 12pt Sans Serif.

RESTRICCIÓN PARA ASISTENTE BLOQUE DE DATOS
La base de datos Oracle le permite crear objetos con nombres que comienzan con los caracteres no válidos, tales como números, si se encierran entre comillas dobles, por ejemplo, 'create table "123" (c char)' . Para este tipo de objetos de base de datos, debe crear un bloque o elemento de forma manual en lugar de utilizar el bloque de datos Asistente porque el bloque de datos Asistente causa ORA-00911, ORA-00931 o 04043 ORA-.
PARA CONFIGURAR UN LECTOR DE PANTALLA Y JAVA ACCESS BRIDGE CON ORACLE FORMS:
  1. Instalar el lector de pantalla, si no está ya instalado. Consulte la documentación de su lector de pantalla para obtener más información acerca de la instalación.
  2. Instalación de Oracle Forms.
  3. Se refieren a la instalación de Oracle Developer Suite para obtener más información.
  4. Descargar Java Access Bridge 1.0.2. The file you will download is accessbridge-1_0_2.zip. El archivo que se descarga es accessbridge-1_0_2.zip. Está disponible en http://java.sun.com/products/accessbridge.
    Consulte la documentación de Java Access Bridge disponibles en este sitio web para obtener más información acerca de la instalación y el puente de acceso de Java.
  5. Después de descargar el archivo, extraer el contenido de una carpeta, por ejemplo, accessbridge_home.
  6. Instalar Java Access Bridge ejecutando Install.exe de la carpeta accessbridge_home \ instalador.
  7. Confirme que desea instalar el Java Access Bridge en cada una de las máquinas virtuales Java que aparecen en el cuadro de diálogo. Haga clic en Aceptar cuando aparezca el mensaje de instalación completada.
  8. Confirmar que dos archivos jar: acceso bridge.jar y jaccess 1_3.jar-fueron agregados a la carpeta \ ORACLE_HOME \ jdk \ jre \ lib ext \ durante la instalación. Si es necesario, copia de accessbridge_home \ instalador \ installerFiles a
    oracle_home\jdk\jre\lib\ext.
  9. Confirme que dos archivos DLL: JavaAccessBridge.dll y WindowsAccessBridge.dll se agrega a la carpeta oracle_home\jdk\jre\lib\ext .Si es necesario, copia de accessbridge_home\installer\installerFiles a oracle_home\jdk\jre\lib\ext .
  10. Añadir los archivos enumerados anteriormente, JavaAccessBridge.dll y WindowsAccessBridge.dll, a la carpeta Winnt \ System32, ya que deben estar en la ruta del sistema para trabajar con Oracle Forms.
  11. Confirme que la variable de entorno PATH se ha actualizado para incluir el directorio donde los archivos DLL se instalaron, oracle_home\jdk\jre\lib\ext .
  12. Confirme que el archivo oracle_home\jdk\jre\lib\accessibility.properties incluye la siguiente línea:
    assistive_technologies=com.sun.java.accessibility.AccessBridge
    Si es necesario, copie el archivo accessibility.properties de accessbridge_home\installer\installerFiles a oracle_home\jdk\jre\lib .
  13. Copiar los archivos de la accesibilidad adecuada a su directorio de Oracle JInitiator:
  14. Copiar acceso-bridge.jar y jaccess-1_3.jar a la carpeta Program Files\Oracle\Jinitiator1.*\lib\ext .
  15. Copia accessibility.properties a Program Files\Oracle\Jinitiator1.*\lib\ext .
  16. Comience el lector de pantalla.
  17. Inicio Oracle Forms mediante la ejecución del ifbld90.exe archivo Oracle_Home\bin .
    Los pasos anteriores se supone que está ejecutando Windows y el uso de un lector de pantalla basados ​​en Windows.

jueves, 14 de abril de 2011

Maximizar Ventana MDI en Forms 11


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 separateframe=true
Al ejecutar SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize); 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.
Para que sea equivalente a que el usuario pulse el botón de maximizar hay que realizar lo siguiente:
  • 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):
    • applet_name=OracleApplet
  • Desde Forms ejecutar:
    • web.javascript_eval_expr(‘document.OracleApplet.getFrame().setExtendedState(6)’);
Ejemplo con SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);



Resultado con SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);

Ejemplo ejecutando web.javascript_eval_expr(‘document.OracleApplet.getFrame().setExtendedState(6)’);

miércoles, 13 de abril de 2011

APLICACION EN FORMS, FORMULARIO CON 2 BLOQUES

El codigo que utilizo para insertar es:

DECLARE
prov number;
nped number;
-- FIN number;

BEGIN
--Comprobamos que se ha indicado el numero de pedido
if nvl(length(:pedidonuevo.pedido#),0)=0 then
bell;
message(' Error indique el numero de pedido ');
raise form_trigger_failure;
end if;

-- Comprobamos que que se ha indicado el proveedor y dicho proveedor existe
if nvl(length(:pedidonuevo.proveedor),0)=0 then
bell;
message(' Error indique el codigo del proveedor ');
raise form_trigger_failure;
end if;
select prov# into prov from Proveedor where Proveedor.prov#=:Pedidonuevo.Proveedor;
--Al seguir sabemos q si existe el proveedor

--Comprobamos que se ha indicado la linea de pedido
if nvl(length(:lineadepedidonuevo.linea),0)=0 then
bell;
message(' Error indique el numero de linea de pedido ');
raise form_trigger_failure;
end if;

--Comprobamos que el codigo del producto
if nvl(length(:lineadepedidonuevo.producto),0)=0 then
bell;
message(' Error indique el codigo del producto ');
raise form_trigger_failure;
end if;

--Comprobamos que el nombre del producto
if nvl(length(:lineadepedidonuevo.nom_producto),0)=0 then
bell;
message(' Error indique el nombre del producto ');
raise form_trigger_failure;
end if;

--Comprobamos que se ha indicado la cantidad
if nvl(length(:lineadepedidonuevo.cantidad),0)=0 then
bell;
message(' Error indique la cantidad ');
raise form_trigger_failure;
end if;

--Comprobamos que la cantidad es mayor que 0
if :lineadepedidonuevo.cantidad<=0 then
bell;
message(' Error la cantidad tiene que ser mayor que 0 ');
raise form_trigger_failure;
end if;

--Si todo ha ido bien hacemos los insert correspondientes
insert into Pedido values(:Pedidonuevo.pedido#,:Pedidonuevo.proveedor, :Pedidonuevo.fecha, :Pedidonuevo.Empleado);
insert into LineadePedido values(:LineadePedidonuevo.linea,:Pedidonuevo.pedido#,:LineadePedidonuevo.producto, :LineadePedidonuevo.nom_producto,:LineadePedidonuevo.cantidad);

--last_record;
--end loop;

bell;
message(' Pedido nuevo grabado ');

commit;

EXCEPTION
WHEN NO_DATA_FOUND THEN
bell;
message(' Error DATOS NO EXISTENTES ');

WHEN DUP_VAL_ON_INDEX THEN
BELL;
MESSAGE('ERROR NO SE PUEDE GRABAR CLAVE DUPLICADA ');

END;

martes, 12 de abril de 2011

Configurar Oracle Forms WEB UTILS

Pasos para la instalación de WebUtil1. Desempaquetar el archivo webutil_106. Las carpetas que contiene son:
- doc
- java
- server
- webutil
Para este ejemplo, se supondrá que se instaló en la carpeta C:\webutil_106

2. Crear un usuario en la base de datos, por ejemplo webutil.

3. Conectado como el usuario webutil, ejecutar el script c:\webutil_106\create_webutil_db.sql

*************************************
CREATE OR REPLACE PACKAGE WEBUTIL_DB AUTHID CURRENT_USER AS

/*********************************************************************************\
* WebUtil_DB - Database functions used by the WebUtil_File_Transfer
* Package. These functions allow reading and writing direct
* to the specified BLOB in the database.
* The functions should not be called externally from WebUtil
*********************************************************************************
* Version 1.0.0
*********************************************************************************
* Change History
* DRMILLS 11/JAN/2003 - Creation
*
\*********************************************************************************/

FUNCTION OpenBlob(blobTable in VARCHAR2,
blobColumn in VARCHAR2,
blobWhere in VARCHAR2,
openMode in VARCHAR2,
chunkSize in PLS_INTEGER default null) return BOOLEAN;

FUNCTION CloseBlob(checksum in PLS_INTEGER) return BOOLEAN;

PROCEDURE WriteData(data in VARCHAR2);

FUNCTION ReadData return VARCHAR;

FUNCTION GetLastError return PLS_INTEGER;

FUNCTION GetSourceLength return PLS_INTEGER;

FUNCTION GetSourceChunks return PLS_INTEGER;

END WEBUTIL_DB;
/

CREATE OR REPLACE PACKAGE BODY WEBUTIL_DB AS
m_binaryData BLOB;
m_blobTable VARCHAR2(60);
m_blobColumn VARCHAR2(60);
m_blobWhere VARCHAR2(1024);
m_mode CHAR(1);
m_lastError PLS_INTEGER := 0;
m_sourceLength PLS_INTEGER := 0;
m_bytesRead PLS_INTEGER := 0;
MAX_READ_BYTES PLS_INTEGER := 4096;

-- internal Program Units
PROCEDURE Reset;

PROCEDURE Reset is
BEGIN
m_blobTable := null;
m_blobColumn := null;
m_blobWhere := null;
m_mode := null;
m_lastError := 0;
m_sourceLength := 0;
m_bytesRead := 0;
END Reset;


FUNCTION OpenBlob(blobTable in VARCHAR2, blobColumn in VARCHAR2, blobWhere in VARCHAR2, openMode in VARCHAR2, chunkSize PLS_INTEGER default null) return BOOLEAN is
result BOOLEAN := false;
stmtFetch VARCHAR2(2000);
hit PLS_INTEGER;
BEGIN
-- New transaction clean up
reset;

m_blobTable := blobTable;
m_blobColumn := blobColumn;
m_blobWhere := blobWhere;
m_mode := upper(openMode);

if chunkSize is not null then
if chunkSize > 16384 then
MAX_READ_BYTES := 16384;
else
MAX_READ_BYTES := chunkSize;
end if;
end if;

-- check the target row exists
stmtFetch := 'select count(*) from '||m_blobTable||' where '||m_blobWhere;
EXECUTE IMMEDIATE stmtFetch into hit;

if hit = 1 then
if m_mode = 'W' then
DBMS_LOB.CREATETEMPORARY(m_binaryData,false);
DBMS_LOB.OPEN(m_binaryData,DBMS_LOB.LOB_READWRITE);
m_sourceLength := 0;
result := true;
elsif m_mode = 'R' then
stmtFetch := 'select '||m_blobColumn||' from '||m_blobTable||' where '||m_blobWhere;
EXECUTE IMMEDIATE stmtFetch into m_binaryData;
if m_binaryData is not null then
m_sourceLength := dbms_lob.getlength(m_binaryData);
if m_sourceLength > 0 then
result := true;
else
m_lastError := 110;
end if;
else
m_lastError := 111;
end if;
else
m_lastError := 112;
end if; -- mode
else
-- too many rows
m_lastError := 113;
end if; -- Hit
return result;
END OpenBlob;

FUNCTION CloseBlob(checksum in PLS_INTEGER) return BOOLEAN is
sourceBlob BLOB;
stmtFetch VARCHAR2(2000);
stmtInit VARCHAR2(2000);
result BOOLEAN := false;
BEGIN
if m_mode = 'W' then
m_sourceLength := DBMS_LOB.GETLENGTH(m_binaryData);
end if;

-- checksum
if checksum = m_sourceLength then
if m_mode = 'W' then
-- get the locator to the table blob
stmtFetch := 'select '||m_blobColumn||' from '||m_blobTable||' where '||m_blobWhere||' for update';
EXECUTE IMMEDIATE stmtFetch into sourceBlob;

-- Check the blob has been initialised
-- and if it's not empty clear it out
if sourceBlob is null then
stmtInit := 'update '||m_blobTable||' set '||m_blobColumn||'=EMPTY_BLOB() where '||m_blobWhere;
EXECUTE IMMEDIATE stmtInit;
EXECUTE IMMEDIATE stmtFetch into sourceBlob;
elsif dbms_lob.getlength(sourceBlob) > 0 then
dbms_lob.TRIM(sourceBlob,0);
end if;
-- now replace the table data with the temp BLOB
DBMS_LOB.APPEND(sourceBlob,m_binaryData);
DBMS_LOB.CLOSE(m_binaryData);
result := true;
else
-- todo
null;
end if; --mode
else
m_lastError := 115;
end if; --checksum
return result;
END CloseBlob;

PROCEDURE WriteData(data in VARCHAR2) is
rawData raw(16384);
BEGIN
rawData := utl_encode.BASE64_DECODE(utl_raw.CAST_TO_RAW(data));
dbms_lob.WRITEAPPEND(m_binaryData, utl_raw.LENGTH(rawData), rawData);
END WriteData;


FUNCTION ReadData return VARCHAR is
rawData RAW(16384);
bytesToRead PLS_INTEGER;
BEGIN
bytesToRead := (m_sourceLength - m_bytesRead);
if bytesToRead > MAX_READ_BYTES then
bytesToRead := MAX_READ_BYTES;
end if;
DBMS_LOB.READ(m_binaryData, bytesToRead, (m_bytesRead + 1), rawData);
m_bytesRead := m_bytesRead + bytesToRead;
return UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(rawData));
END ReadData;

FUNCTION GetLastError return PLS_INTEGER is
BEGIN
return m_lastError;
END GetLastError;


FUNCTION GetSourceLength return PLS_INTEGER is
BEGIN
return m_sourceLength;
END GetSourceLength;

FUNCTION GetSourceChunks return PLS_INTEGER is
chunks PLS_INTEGER;
BEGIN
chunks := floor(m_sourceLength/MAX_READ_BYTES);
if mod(m_sourceLength,MAX_READ_BYTES) > 0 then
chunks := chunks+1;
end if;
return chunks;
END GetSourceChunks;

END;
/
EXIT;
/



*************************************


4. Desde SYSTEM, crear un sinónimo público webutil_db para el paquete webutil.webutil_db.

5. Otorgar el privilegio de ejecución sobre el paquete webutil.webutil_db a cualquier usuario que vaya a usar a WEBUTIL. Puede otorgar el privilegio a PUBLIC.

6. Copie los archivos:
• C:\webutil_106\
- webutil.olb
- webutil.pll
en $ORACLE_HOME\forms90\
• C:\webutil_106\server\
- webutil.cfg
- webutilbase.htm
- webutiljini.htm
- webutiljpi.htm
en $ORACLE_HOME\forms90\server\
• C:\webutil_106\java\*.* a $ORACLE_HOME\forms90\java\
• C:\webutil_106\webutil\*.* a $ORACLE_HOME\forms90\webutil\
7. Del archivo jacob.zip, el archivo jacob.jar cópielo a $ORACLE_HOME\forms90\java y el archivo jacob.dll cópielo a $ORACLE_HOME\forms90\webutil.
8. En el archivo C:\Oracle\Ora10gDS\j2ee\DevSuite\application-deployments\forms\forms90web\orion-web.xml agregue lo siguiente:

9. En una instalación de IAS u OAS, hay que definir un directorio virtual. Agregue lo siguiente al archivo C:\Oracle\Ora10gDS\forms90\server\forms90.conf.
AliasMatch ^/forms90/webutil/(..*) “C:\Oracle\Ora10gDS\forms90\webutil\$1”
10. Hacer una copia del archivo de configuración default.env. Hay que llamarlo webutil.env. A este archivo hay que hacerle los siguientes cambios:
• Hay que agregar la variable
WEBUTIL_CONFIG=C:\Oracle\Ora10gDS\forms90\server\webutil.cfg
• A la variable CLASSPATH (se encuentra al final del archivo) hay que apendizarle las siguientes rutas:

C:\Oracle\Ora10gDS\forms90\java\frmwebutil.jar;C:\Oracle\Ora10gDS\jdk\jre\lib\rt.jar;C:\Oracle\Ora10gDS\forms90\java\jacob.jar;C:\Oracle\Ora10gDS\forms90\java\f90all.jar

NOTA: las rutas pueden variar dependiendo de su instalación:
11. En el archivo $ORACLE_HOME\forms90\server\formsweb.cfg hay que agregar una entrada como esta:
[pruebawebutil]
form=prueba1.fmx
userid=inventario/inventario@apiver
webUtilArchive=frmwebutil.jar,jacob.jar
baseHTMLjInitiator=webutiljini.htm
baseHTMLjpi=webutiljpi.htm
baseHTML=webutilbase.htm
envFile=webutil.env
separateframe=TRUE
12. Para que la lectura de imágenes funcione, debe de editar el archivo $ORACLE_HOME\forms90\server\webutil.cfg y hay que cambiar los valores de las variables transfer.appsrv.enabled y transfer.appsrv.workAreaRoot a:
transfer.appsrv.enabled=TRUE
transfer.appsrv.workAreaRoot=”algún directorio en el server”
13. Compile la librería C:\Oracle\Ora10gDS\forms90\webutil.pll.
14. Por cada forma en donde quiera utilizar Webutil, debe:
• Ligar la librería webutil.pll
• Copiar a la forma el objeto webutil que está en la librería de objetos webutil.
EL copiar el objeto webutil creará varios objetos en su forma; uno de ellos es un bloque. Es responsabilidad del programador que en ejecución este bloque no se visualice.
En tipo de diseño, el contenido del bloque no se ve (son varios java_beans), a menos que a las variables (de ambiente o de registro) CLASSPATH y FORMS90_BUILDER_CLASSPATH le agregue las rutas especificadas en el punto 10

Fuente: http://zaga-code.blogspot.com/2008/07/configurar-oracle-forms-web-utils.html

domingo, 10 de abril de 2011

Oracle 11g 64-Bit on Windows 7 Ultimate 64-Bit

Tomó varias horas para hacer la actualización. Una instalación probablemente hubiera corrido mucho más rápido y habría comenzado con un registro limpio, pero me temo que el instalador de Oracle diría que no reconocen esta versión de las ventanas y entonces yo no sería capaz de ponerlo en marcha (en al menos no sin saltar a través de un montón de aros).La instalación, teniendo mucho tiempo, fue impecable en la final. Tuve que desinstalar Skype y PowerShell debido a incompatibilidades. Skype fue una recomendación, pero se requiere powershell. Teniendo en cuenta la gran cantidad de software que ha instalado, me sorprende que es todo lo que tenía que quitar.

Tuve algunos problemas con TNS al principio, pero fui capaz de solucionarlo mediante la fijación de mi archivo de hosts. Después de eso, la base de datos está funcionando bien (como se puede ver en la pantalla de arriba). He creado algunos objetos y corrió algunas consultas y todo lo que es Hunky Dory.

Recibí un mensaje de advertencia cuando se ejecuta SQL Developer:


Nada de lo que no puede vivir. No estoy seguro si esto es sólo un problema de Java o algo con SQL Developer específicamente. Tengo planeado jugar con un poco más esta tarde para averiguarlo.Hasta ahora, no he encontrado el sistema operativo a ser que muy diferente a la vista. Algunos ajustes de usuario en UAC. Usted puede configurar la resolución de pantalla con un clic solo menú ahora. Se siente un poco más rápido de respuesta racional sin embargo. Pensé que podría ser yo mismo adivinarlo a cabo en dicho embargo.En lugar de regurgitar una lista de características de Windows 7, ir a ver lo que Microsoft tiene que decir sobre el tema.Además de probar Java, tengo la intención de jugar algunos de mis favoritos de esta noche MMORPG para ver cómo van las cosas. También quiero ver si tengo alguna estrella.Hice descargar e instalar el primer parche (una solución para mp3 truncamiento). El auto OS-descubrí mi red y la impresora. Eso estuvo bien.También quiero asegurarme de que mi IDE Aptana y Apache / MySQL funciona. Estoy construyendo una nueva aplicación web, PHP y los elementos necesarios son. Siempre puede volver a caer a la Eee PC o mi máquina Linux si tengo que hacerlo bien.Fuente: http://it.toolbox.com/blogs/oracle-guide/oracle-11g-64bit-on-windows-7-ultimate-64bit-29240


domingo, 3 de abril de 2011

INSTALACION ORACLE FORMS

En el capitula de hoy  veremos la el proceso por pasos de instalacion de ORACLE FORMS

1. Ingrezamos a  las propiedades del sistema; el cual se verificara el pataño de menoria.  
los pasos son: Inicio - equipo o Mi PC  clik contrario  - propiedades 
y tenemo sel resultado es esta pantalla.  

            selecionamos  la pestaña opciones avanzadas




















sábado, 2 de abril de 2011

FORMS ES UNA HERRAMIENTA DE ORACLE

SQLForms: Es la herramienta de Oracle que permite, de un modo sencillo y eficiente, diseñar pantallas para el ingreso, modificaciones, bajas y consultas de registros. El usuario podrá, una vez definida la forma, trabajar con ella sin necesidad de generar códigos, dado que Oracle trae incorporado un conjunto de procedimientos y funciones asociados a las teclas de funciones, como por ejemplo la tecla [F7], que se usa para iniciar una consulta.
La herramienta fundamental de SQL es la sentencia SELECT, que permite seleccionar registros desde las tablas de la Base de Datos, devolviendo aquellos que cumplan las condiciones establecidas y pudiendo presentar el resultado en el orden deseado.
Para ver el gráfico seleccione la opción "Descargar" del menú superior
SQL (Structured Query Languague = Lenguaje de Consulta estructurado).
La orden FROM identifica la lista de tablas a consultar. Si alguna de las tablas a consultar no es propiedad del usuario, debe especificarse el nombre del propietario antes que el nombre de la tabla en la forma nombre_propietario.nombre_tabla.
La orden WHERE decide los registros a seleccionar según las condiciones establecidas, limitando el número de registros que se muestran.
La orden ORDER BY indica el orden en que aparece el resultado de la consulta.

viernes, 1 de abril de 2011

HISTORIA ORACLE FORMS

Oracle Forms se vende y se publicó por separado de la base de datos Oracle. Sin embargo, las versiones principales de una base de datos Oracle por lo general resultan en una nueva versión de Oracle Forms para apoyar las nuevas funciones de la base de datos.
La primera versión de Oracle Forms fue nombrado aplicación interactiva Mundial (IAF). Esta tiene dos componentes principales, el compilador (Generador de Aplicaciones Interactivas - IAG) y el intérprete de tiempo de ejecución (interactivo de aplicaciones de procesador - IAP). Esto proporciona una interfaz en modo de caracteres para permitir a los usuarios ingresar y consultar datos de una base de datos Oracle.
IAF fue puesto en libertad con Oracle Database Versión 2, la primera versión comercial de Oracle. Su nombre se cambió a FastForms con Oracle Database versión 4 y agregó una herramienta adicional para ayudar a generar un formulario predeterminado para editar con la herramienta estándar (IAG).
Cambiado el nombre a la versión de SQL * Formas 2 con la base de datos Oracle 5.

Oracle Forms 2.3 fue basada en caracteres, y no el uso de PL / SQL. El archivo de origen es un archivo ASCII *. INP. Era común que los desarrolladores para modificar el archivo INP directamente a pesar de que no contó con el apoyo por parte de Oracle. Esta versión utiliza su propio código primitivo y poco amigable integrado en el lenguaje, aumentada por el usuario sale compilado lenguaje vinculados con el binario de Oracle-siempre en tiempo de ejecución.
Oracle Forms 3 fue basada en caracteres, y fue la verdadera primera versión de los formularios, utilizando PL / SQL. Todas las versiones posteriores son un desarrollo de esta versión. Puede ejecutarse en X, pero no apoyó ninguna de las características de interfaz X específicos, tales como casillas de verificación. El archivo de origen es un archivo ASCII *. INP. El IDE se ha mejorado mucho desde el 2,3 que redujo drásticamente la necesidad de editar el archivo INP directamente, aunque ésta sigue siendo una práctica común. Formas 3 genera automáticamente dispara y el código para apoyar algunas limitaciones base de datos. Las restricciones pueden ser definidas, pero no se aplica en la base de datos Oracle 6 en este momento, por lo que Oracle utiliza tres formas de reclamar el apoyo a la aplicación de restricciones.
Hubo una "interfaz gráfica de usuario" versión de los formularios 3, que podría ejecutarse en entornos tales como X Window, pero no de Microsoft Windows. Esto no tuvo ningún tipo nuevo disparo, lo que hacía difícil para fijar PL / SQL para eventos de interfaz gráfica de usuario, tales como los movimientos del ratón.

Versión de Oracle Forms 4.0 fue el primer "verdadero", basado en la versión GUI. Un tiempo de ejecución basada en caracteres todavía estaba disponible para ciertos clientes por encargo. La llegada de Microsoft Windows 3 forzada de Oracle para liberar esta versión de interfaz gráfica de las formas por razones comerciales. Formas 4.0 acompañados Oracle versión 6 con soporte para Microsoft Windows y X Window. Esta versión fue notoriamente con errores y presentó una IDE que no era popular con los desarrolladores. Esta versión no fue utilizado por la suite de software de Oracle Financials.
El 4,0 archivos de código fuente fueron nombrados *. FMB y se binario.

Oracle versión 4.5 Formularios fue realmente un gran lanzamiento en lugar de un "punto de desenganche" de 4.0 a pesar de su "5" número de versión. Contiene importantes cambios funcionales y un nuevo IDE, en sustitución del IDE impopular introducido en 4.0. Se cree que se denominará 4.5 con el fin de cumplir con las obligaciones contractuales para apoyar las formas 4 para un período de tiempo para determinados clientes. Añadió interfaz gráfica de usuario basada en factores desencadenantes y proporciona un IDE moderno con un navegador de objetos, las hojas de propiedades y el editor de código.

Debido al conflicto paradigmas operativos, Oracle versión formas 5, que acompañaba a la versión de Oracle 7, presentada personalizado modos gráficos afinado especialmente para cada uno de los principales sistemas. Sin embargo, su interfaz de programación interna se mantuvo independiente del sistema. Fue rápidamente reemplazado por las formas 6.

Formas 6 fue lanzado con base de datos Oracle 8.0, que fue publicado de nuevo como 6i Forms con Oracle 8i. Este fue, básicamente, las formas 4.5 con algunos asistentes adicionales y correcciones de errores. Pero también incluye la facilidad para ejecutar dentro de un servidor web. Un servidor de formularios que se suministró resuelto el problema de la adaptación de Oracle Forms a una de tres niveles, la entrega basada en el navegador, sin incurrir en grandes cambios en su interfaz de programación.
El, muy forman interfaz interactiva complejo fue proporcionada por un applet de Java que se comunicaba directamente con el servidor de formularios. Sin embargo, la versión web no funciona muy bien a través de HTTP. Una revisión de las formas 9i fue adaptado a las versiones posteriores de 6i para hacer frente a esto.

El sistema de nomenclatura y numeración aplicado a Oracle Forms sufrió varios cambios debido a factores de comercialización, sin alterar la naturaleza esencial del producto. La capacidad de código en Java, así como PL / SQL, se añadió en este período.

Formas 7-8 no existía. Estos números se saltó a fin de que el número de versión de Oracle Forms para que coincida con la versión de base de datos en v9.

9i formas incluidas las correcciones de errores que muchos 6i y era una versión estable. Pero tampoco incluyó cliente-servidor o interfaces basadas en caracteres, y de tres niveles, la entrega basada en el navegador es la opción de despliegue único de aquí en adelante. La capacidad de importar clases Java significa que puede actuar como un cliente de servicios web.

Formas 10g es en realidad la versión 9.0.4 Formas, por lo que no es más que una 9i formas rebautizado.

Formularios 11 se incluyen algunas características nuevas, confiando en Oracle AQ para que pueda interactuar con JMS .