+ All Categories
Home > Documents > Developer 2000

Developer 2000

Date post: 18-Jul-2015
Category:
Upload: juan-luis
View: 1,023 times
Download: 3 times
Share this document with a friend
Popular Tags:

of 71

Transcript

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

ORACLE DEVELOPER 2000

DJBARBAS & PETALIUA1

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

NDICE1. Introduccin .............................................................................................. 5 1.1 Aplicaciones de Oracle Developer ........................................................ 5 1.2 Extensiones de los arcchivos creados por Oracle Developer .................... 6 2. Formularios ............................................................................................... 6 2.1 Formularios en modo Diseo .............................................................. 7 2.2 Creacin de un Mdulo ...................................................................... 8 2.3 Funcionamiento del Navegador de Objetos......................................... 11 2.4 Qu se puede hacer en modo Consulta (EnterQuery) y qu no? ............ 13 2.5 Qu se puede hacer en modo Normal (ExecuteQuery) y qu no? .......... 13 2.6 Restriccin de Consultas .................................................................. 14 2.6.1 Utilizacin del cuadro de dilogo QueryWhere para realizar Consultas 10 2.6.2 Condiciones Fijas.................................................................. 14 3. Funcionamiento de los Formularios ............................................................ 15 3.1 Insertar un Registro ........................................................................ 15 3.2 Modificar un Registro ...................................................................... 15 3.3 Eliminar un Registro........................................................................ 15 3.4 Otros puntos de inters ................................................................... 16 4. El Navegador de Objetos........................................................................... 17 4.1 Objetos del Navegador de Objetos .................................................... 18 5. Relacin Maestro-Detalle .......................................................................... 19 5.1 Creacin de un Bloque y Formulario con relacin Maestro-Detalle ......... 20 6. La Paleta de Propiedades .......................................................................... 24 6.1 El Botn More ("...") ....................................................................... 24 6.2 Significado de los Smbolos de la izquierda de las Propiedades ............. 26 6.3 Atributos Visuales ........................................................................... 27 6.3.1 Cmo crear un Grupo de Atributos Visuales ............................. 27 7. Propiedades de los Bloques de Datos 7.1 Conceptos bsicos (El Estilo de Navegacin) ...................................... 28 7.2 Navegacin .................................................................................... 28 7.3 Base de Datos ................................................................................ 29 7.4 Registros ....................................................................................... 29 7.5 Barra de Desplazamiento ................................................................. 31 8. Propiedades del Frame de Canvas .............................................................. 31 8.1 Marco de Diseo ............................................................................. 31 8.2 Cosas de inters 8.2.1 Ayuda de Developer ............................................................. 32 8.2.2 Dos cuadros (o ms) de Propiedades a la vez .......................... 32 8.2.3 Cmo ver las Propiedades Comunes de 2 Objetos ..................... 33 8.2.4 Cmo ver la Unin o Interseccin de las Propiedades de 2 Objetos 29 8.2.5 Botones Copiar/Pegar Propiedades ......................................... 34 8.2.6 Botones Aadir Propiedad/Borrar Propiedad ............................. 34 9. Los Bloques de Control ............................................................................ 34 9.1 Cmo crear un Bloque de Control ..................................................... 35 9.2 Cmo se elimina un Bloque de Control .............................................. 36 9.3 Importante! ................................................................................... 37

2

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

10. Los Objetos ........................................................................................... 37 10.1 Paleta de Propiedades TextItem ...................................................... 37 10.1.1 Fsica ................................................................................ 38 10.1.2 Prompt .............................................................................. 38 10.1.3 Datos ................................................................................ 39 10.1.4 Ayuda ............................................................................... 39 10.1.5 Navegacin ........................................................................ 40 10.1.6 Base de Datos .................................................................... 40 10.1.7 Funcional ........................................................................... 41 10.1.8 Poner a multilnea un Elemento de Texto ............................... 41 10.1.9 La Propiedad Ayuda ............................................................ 42 10.1.10 Las Propiedades Activado y Teclado de Navegacin ............... 42 11. Las LOV's .............................................................................................. 42 11.1 Cmo crear una LOV ..................................................................... 42 11.2 Crear una LOV con Valores Estticos ............................................... 44 1.3 Propiedades de la LOV ..................................................................... 45 1.3.1 Correspondencia de Columnas ............................................... 45 12. Propiedades de los CheckBox................................................................... 45 13. Propiedades de los List Items .................................................................. 46 14. Propiedades de los RadioButtons .............................................................. 47 15. Propiedades de los Display Items ............................................................. 48 16. Campos Calculados ................................................................................ 48 17. Relacin entre Ventanas y Lienzos............................................................ 49 17.1 Propiedades de las Ventanas .......................................................... 50 18. Barra de Herramientas Vertical (Lienzo de la Barra de Herramientas Vertical) 50 19. Lienzos Tipos Pestaa ............................................................................. 50 20. Los Triggers (Disparadores) .................................................................... 50 20.1 Disparadores de Form Builder......................................................... 51 20.2 Disparadores de Tabla ................................................................... 51 20.3 Los Tipos ..................................................................................... 51 20.4 El Cdigo ..................................................................................... 52 20.5 Paleta de Propiedades de los Triggers .............................................. 52 20.6 Variables (Dentro de los Disparadores) ............................................ 52 21. Los Built-In ........................................................................................... 53 21.1 Algunos Built-In (Ejemplos) ........................................................... 53 22. Las Alertas ............................................................................................ 55 22.1 Propiedades de las Alertas ............................................................. 55 23. Cierre de Formularios ............................................................................. 55 24. La Ventana de Debug ............................................................................. 56 24.1 Botones de la Ventana de Debug .................................................... 57

3

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

24.2 Cmo Obtener/Introducir valores en una Variable de la Ventana de Debug 57

25. Triggers de Integracin con Elementos ..................................................... 57 25.1 Ejemplo con un RadioButton .......................................................... 58 25.2 Ejemplo con un CheckBox .............................................................. 58 25.3 Los List Items............................................................................... 59 25.4 Las LOV's ..................................................................................... 60 26. Imgenes y Sonidos ............................................................................... 60 27. Ejemplo Global ...................................................................................... 61 27.1 Creacin de las Tablas ................................................................... 62 27.2 Creacin de los Bloques de Datos ................................................... 62 27.3 Cmo incrementar el nmero de Albarn automticamente ................ 63 27.4 Cmo aplicar la secuencia de numeracin automtica de los Albaranes 64 27.5 Cmo asignar la Fecha de Sistema (Fecha de Hoy) en el campo Fecha 64 27.6 Creacin de una Lista de Valores para el Cdigo de Cliente ................ 65 27.7 Cmo mostrar la LOV mediante un Botn......................................... 66 27.8 Creacin de los Campos Calculados (Total de Fina y Total Final) ......... 68 27.9 Creacin del Campo Calculado Total de IVA...................................... 70

4

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

1. INTRODUCCINSi nunca tenemos que hacer un programa de gestin sobre una base de datos muy extensa deberamos de trabajar con Developer. Microsoft Access es un buen programa para gestionar datos de pequeas empresas, pero si nos fijamos, empresas que tienen millones de clientes no podran usarlo para gestionarlos, ya que el programa seguramente se colgara fcilmente.

1.1 Aplicaciones de Oracle Developer Developer es una solucin de Oracle que presenta las diferentes aplicaciones: Procedure builder: Nos permite hacer procedimientos, paquetes, etc. Forms builder, compiler y runtime: Forms Builder nos permite disear formularios, mientras que el Forms Compiler sirve para compilar los formularios hechos con Forms Builder. Forms Runtime sirve para ejecutar formularios compilados con Forms Builder. Reports builder, compiler y runtime: Lo mismo que los formularios pero esta vez sobre informes. Graphics builder, compiler y runtime: Lo mismo que los formularios, pero esta vez en grficos. Project builder: Facilita el manejo de la aplicacin. Guarda conjuntamente todos los formularios, informes, etc. para ser llevados de un PC a otro. Schema Builder: Nos permite crear tablas grficamente. Query Builder: Nos permite hacer consultas sobre tablas de la base de datos. Translation Builder: Permite cambiar de idioma los programas del usuario, aunque no suele ser muy fiable.

-

-

-

-

-

Las prestaciones de Developer son: Soporte para Windows. Permite hacer aplicaciones distribuidas. Todas las herramientas de Developer tienen un diseo comn: el navegador de objetos, editor de diseo... Podemos particionar aplicaciones. Podemos haces aplicaciones orientadas a objetos.

Aplication server: Los mismo productos que ejecuto como cliente/servidor, los creo como aplication server y utilizando 1 explorador, los procedimientos explorer, se ejecutan en este servidor y en la pantalla devuelve los resultados. Sirve los forms, ... a travs del explorador.

5

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Las variables de entorno que se encuentran en el registro de Windows estn en HKEY_LOCAL_MACHINE, SOFTWARE, ORACLE y son las siguientes: FORMS60_PATH REPORT60_PATH GRAPHICS60_PATH UI_COM ORACLE_PATH

Los ficheros CAUPREFS.ORA y CAGPREFS.ORA situados en el directorio raz de Developer (C:\ORANT) contienen las preferencias de todos los programas.

1.2 Extensiones de los archivos creados por Oracle Developer De formularios: - .fmb (binario del mdulo del formulario) Es portable - .fmx (modulo ejecutale del formulario) - .fmt (mdulo del formularo en modo texto) Es portable De mens: - .mmb (mdulo del menu en binario) - .mmx (mdulo del menu en ejecutable) - .mmt (mdulo del menu en modo texto) De librerias PL SQL: - .pll (librera PL SQL en binario) - .plx (librera PL SQL en ejecutable) - .pld (librera PL SQL en docmento, es decir, texto) De librerias de objetos: - .db (binario) - .olt (texto)

2. FORMULARIOSPara ejecutar cualquier formulario tenemos una aplicacin que se llama F50RUN32.exe, que ejecuta el formulario que le pasemos como parmetro (formato fmx). Para llamarlo (siempre desde una ventana de consola) tendramos que ejecutar lo siguiente: IFRUN60 nombreFormulario ruta usuario/password En la versin que tenemos es F50RUN32.

Para empezar a familiarizarnos con los componentes de Developer, empezaremos explicando que existen unos procedimientos que ya se nos dan escritos, se llaman Built-In Procedures. Estos procedimientos por ejemplo, nos permitirn cambiar cualquier propiedad de cualquier objeto de un formulario.

6

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Lo primero que tenemos que hacer al arrancar por primera vez Forms Builder es ir al men de Herramientas y la opcin de Preferencias para configurarnos el programa, es decir, para como queramos que sea el entorno del forms: En la Pestaa de General podemos: Salvar un formulario antes de crearlo Crear un formulario antes de ejecutarlo Configurar la impresora por defecto Mostrar los dilogos que queramos cada vez que ejecutamos el programa ... Se refiere a los mdulos que hayamos escrito

* Cuando estamos en un formulario, vemos que: - Los formularios no presentan los registros, si no que en ellos se introducen las consultas y se ejecutan, para posteriormente mostrar el registro. - En los campos de los formularios puedo poner las condiciones que quiera. Al ejecutar la consulta, slo har la select de aquellas filas que la cumplan. - Si el campo tiene asociada una LOV (lista de valores/list of values), se basan en grupos de registros (que es una select).

2.1 Formularios en modo Diseo Estos son los siguientes objetos que podemos encontrar en un formulario en modo de diseo: Cuadro de texto (Textitem): Muestran campos de una tabla de la base de datos. Elemento de visualizacin: Es una especie de elemento de texto pero que slo se utiliza para que nos enseen datos (resaltados, valores...). Etiquetas: Son como los Label de Access. Botones: Nos servirn por ejemplo, para ejecutar eventos. Listas desplegables: (lista desplegable, tlist, recuadro combinado) Botones de radio (radioButtons) Checkbox Elemento para isertar un grfico Imgenes Sonidos

7

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

2.2 Creacin de un Mdulo Podemos tener varios bloques de datos, y que se visualicen en un solo lienzo. Para crear formularios suele ser aconsejable utilizar el asistente. El asistente puede que se nos ejecute al arrancar el programa o podemos llamarlo desde Herramientas, Asistente de bloque de datos. Un bloque de datos puede contener datos de una base de datos o contener botones, radiobuttons, etc. Para usar el asistente de diseo, antes siempre tendremos que tener un bloque de datos creado. Para ello primero crearemos un bloque de datos con el asistente:

El bloque de datos lo basamos en una tabla o vista que tengamos en la base de datos. Para ello primero nos conectaremos a la base de datos y despus seleccionaremos el elemento con el que queremos trabajar:

8

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Tal y como vemos en la imagen de arriba, se puede seleccionar los campos que queramos. Podemos seleccionarlos directamente todos (con el botn >>) o seleccionar los campos que nos interese ms. Tal y como vemos en la imagen, hemos insertado todos los campos de la tabla CLIENTES menos el de Provincia.

Una vez creado el bloque de datos podemos disearlo si queremos. Le damos al botn terminar y se nos abrir el asistente de diseo:

Podemos decidir en qu lienzo queremos insertar el diseo del bloque de datos. En el caso que tuviramos un lienzo creado podramos seleccionarlo. El lienzo ser la pantalla que de diseo de un formulario. Nosotros crearemos uno nuevo. Otra vez, el asistente nos pedir que campos queremos visualizar.

9

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Si nos fijamos ahora ya no tenemos el campo de Provincia, ya que no lo hemos seleccionado en la base de datos:

Una vez seleccionados todos los campos podremos especificar el alto y ancho de cada campo. El ancho de cada campo depender de la longitud de su tipo. Si seguimos en el diseo del formulario, el asistente nos pedir si el diseo lo queremos tipo form o tipo tabular. Lo veremos posteriormente cuando hagamos formularios de la relacin tipo maestro-detalle. Para hacernos una idea, si tenemos en mente un formulario de Albarn, la cabecera sera del tipo form y las lneas del tipo tabular. Finalmente tendremos la opcin de ponerle un ttulo en el marco y de especificar el nmero de registros visualizados al instante. Le damos a terminar y ya hemos acabado el diseo del bloque de datos:

10

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Ahora solo falta ejecutar el formulario. Para ejecutar un formulario le damos al botn del semforo verde. Cuando ejecutamos vemos que los formularios no presentan los registros, sino que en ellos se introducen consultas y se ejecutan. Cuando ejecutamos un formulario, podemos poner en cada campo las condiciones que queramos. Esto no sucede en Access, ya que al ejecutar un formulario se nos muestran los datos directamente.

2.3 Funcionamiento del navegador de objetos: * Para crear un nuevo bloque de datos: Seleccionamos Bloques de datos Botn + de la izquierda.

11

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

* Para borrar un bloque de datos: Abrimos Bloques de Datos Seleccionamos el nombre del bloque izquierda.

Botn X de la

* Para compilar un fichero: Fichero Administraciones

Compilar fichero

Un formulario siempre estar o en modo Normal (ExecuteQuery), que nos mostrar los resultados de una consulta; o en modo EnterQuery (con este modo se ponen los criterios de bsqueda en el form, dentro de los campos que queramos poner una condicin de bsqueda; se sale de este modo mediante ejecutar/cancelar consulta). Ejemplo: En un campo hacemos una condicin y luego abriendo la consulta, ponemos otra condicion de manera que la select que cree, cumpla la condicin del campo O BIEN la condicion que hagamos puesto en la condicion where de la clausula abierta.

12

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Poniendo :varNombre, se crear una select con todas las filas en dnde el campo nombre, tenga el valor que se haya puesto en la variable varNombre.

2.4 Qu se puede hacer en modo Consulta (EnterQuery)? - Se pueden recuperar registros - Recueprar todos los registros - Consultar el nmero de registros que recuperara la consulta: Consultar Recuento de Registros Consultados (Count Regs)

Qu no se puede hacer en modo Consulta (EnterQuery)? - Movernos por los registros: Las flechas en que Acces cambiaba de registro, en Developer son cambios de bloke:

Ejemplo: Tenemos hecho un form, con una tabla de Cabecera y una tabla de Lineas. En el form, tendria el bloque de cabecera y el bloke de lineas (para saber los campos a qu bloque pertenecen, clicamos sobre el form y en el men izquierda, saldr en qu bloque est.) - Ir a otro bloque - Actualizar/Modificar registros mientras estamos haciendo una consulta.

2.5 Qu podemos hacer en modo Normal (ExecuteQuery)? Recuperar todos los registros Insertar/Actualizar filas Validar/Guardar los datos (Commit) Salir de la sesin Navegar en el bloque actual

Qu no se puede hacer en modo Normal (ExecuteQuery)? - Recuperar un nmero limitado de registros - Tener acceso al cuadro de dilogo QueryWhere.

13

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

2.6 Restriccin de Consultas Para restringuir las consultas podemos utilizar: Confrontacin de valores: Si por ejemplo en un campo ponemos 116, al ejecutar la consulta, me buscar todas las filas que tengan en aquel campo un 116. LIKE: Si le pongo %116 o %driles, la consulta nos aplicar la condicin cmo si fuera un Like, es decir, la consulta buscar todas aquellas filas que terminen en 116 o -driles. BETWEEN: En Forms Builder debemos poner el "#" delante. Ejemplo: #BETWEEN 100 AND 200 FECHA: Se deben poner los 2 dgitos del da, los 2 dgitos del mes, y los 4 dgitos del ao. Ejemplo: 09/09/2003 Comparadores: , ...

2.6.1 Utilizacin del cuadro de dilogo QueryWhere para realizar Consultas Tambin puedo utilizar el cuadro de dilogo QueryWhre. Tendremos que poner en aquellos campos que quiero que intervengan en la condicin, variables. Las variables deben ir detrs de un ":". Ejemplo:

Todo lo que escriba en la clusula QueryWhere ser aadido con un AND en la clusula WHERE que se genere.

2.6.2 Condiciones Fijas En la paleta de propiedades del Bloque de Datos, tambin puedemos establecer una condicin fija. Lo veremos posteriormente en las propiedades de los objetos.

14

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Si tuviramos hecha tambin, a parte de la condicin en las propiedades del Bloque de Datos, una condicin mediante el cuadro de dilogo QueryWhere, la condicin del QueryWhere se aadiria a la condicion fija un AND, y luego, aadira la condicin de la clusula QueryWhere detrs. Tambin se puede poner un ORDER BY en el cuadro de dilogo Querywhere.

Dentro del dialogo QueryWhere, si quisiramos hacer un Order By, deberamos escribir: "ORDER BY :nombreVariable"

3. FUNCIONAMIENTO DE LOS FORMULARIOSPara que se guarden los valores en la base de datos cuando ejecutamos el formulario, tendremos que hacer un COMMIT o COMMIT FORM.

3.1 Insertar un Registro: Debemos estar en modo Normal Llegar a un registro en blanco (puedo ir al ultimo, seleccionar Registro Insertar, darle al boton +, o pulsar la tecla F6).

3.2 Modificar 1 Registro: Nos situamos en el registro que deseamos Introducimos los criterios de bsqueda para encontrar el registro que queremos. Ejecutamos la consulta y nos situamos en el registro en cuestin Hacemos las modificaciones qu queremos en el registro

3.3 Eliminar 1 Registro: Nos situamos en el registro que queremos eliminar En la izquierda del Navegador de Objetos pulsamos el botn con la cruz roja para borrar el registro, o bien vamos a: Registro Suprimir

15

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

3.4 Otros puntos de inters Se pueden duplicar registros. Cuando queramos guardar cambios: Archivo Salvar (es equivalente a Commit Form). Si hacemos un Limpiar Todo (es una especie de ROLLBACK), todos los cambios desde la ltima sesin, quedarn anulados. Para ver la tecla asociada a una funcin le damos al men de ayuda y a la opcin de teclas:

16

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

4. EL NAVEGADOR DE OBJETOSEn principio podremos acceder a los objetos de un formulario mediante un navegador de objetos. Desde esta ventana podremos acceder a un textbox de un lienzo o por ejemplo a una alerta de nuestro modulo. El navegador de objetos es muy parecido en todas las herramientas de Developer. De hecho, con l navegador de objetos mismo podremos acceder a un procedimiento almacenado en la base de datos y si queremos, incluso lo podramos editar.

17

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

4.1 Objetos del Navegador de Objetos A nivel de formulario podemos encontrar los siguientes objetos: 1) Forms (Formularios) - Disparadores: Son los tipicos eventos que se lanzan despus de realizar algn movimiento. Hay a nivel de modulo, a nivel de bloque, y a nivel de elemento. Alertas: Sirven para cuando queramos mostrar un mensaje por pantalla (como un MsgBox de Access). Una alerta es un objeto, y como tal, tiene sus propiedades (una de ellas la propiedad texto). Para mostrar la alerta se debe escribir: "SHOW nombreAlerta" Bibliotecas incorporadas: Son bibliotecas PL/SQL que se pueden incorporar en un mdulo. Lienzos: Es lo que vamos a ver por pantalla cuando ejecutemos el programa (Como un formulario) Editores: Podemos crear editores propios, dndole unas propiedades (en paleta de propiedades: negrita, tipo de letra, ...). Para un campo determinado podemos utilizar el editor por defecto o bien le podemos decir nosotros el que queramos. Listas de valores: Son objetos basados en grupos de registros, que se utilizan para buscar y asignar valores a los campos. La lista de valores se asigna en un cuadro de valores. Tambin podemos hacer que la Lov (lista de valores) se abra automaticamente al darle al campo para introducir el valor. Grupos de registros: Puedemos coger objetos de otros formularios e incorporarlos a otro formulario para usarlos tambin. Parmetros Mens desplegables: Podemos hacer pequeos mens para nuestros programas. Atributos visuales: Podemos crear un grupo de atributos visuales para despus asignarlos a un elemento de un formulario. Nos ser muy til en el caso que queramos que todos los formularios u objetos de un formulario tengan el mismo diseo. Ventanas: Son las que nos permiten abrir un lienzo ymostrarse en pantalla. Tambin puedo tener 2 ventanas con varios lienzos en cada ventana, pero no 2 lienzos en una ventana.

-

-

-

-

-

-

-

18

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

2) Mens: Al igual que el objeto que hemos visto anteriormente, aqu tambin podemos crear mens:

3) Bibliotecas PL SQL: Podemos crear procedimientos PL SQL y guardarlos en una biblioteca externa. Luego tenemos que incorporar la biblioteca para poder usar posteriormente los procedimientos. 4) Bibliotecas de Objetos 5) Paquetes Incorporados: Paquetes que el developer nos proporciona para poder ser utilizados posteriormente. Entre ellos todos los Built-In que vamos a utilizar. 6) Objetos de la base de datos: Son los objetos que encontramos en la base de datos de Oracle. Podemos encontrar objetos como tablas, vistas, etc. Cuando tenemos ms de un Bloque, podemos decidir cual es el comportamiento de cada uno de ellos.

5. RELACIN MAESTRO-DETALLEEn las propiedades del bloque, podemos decidir el estilo de navegacin: Mismo registro Cambiar de registro (pasa al siguiente registro con el primer bloque) Cambiar de bloque

Los bloques de datos son de 2 tipos: - Bloques de datos: Pondremos los registros, campos, ... que vienen de una base de datos (Tabla). - Bloques de control: Pondremos los elementos, objetos, ... que no vienen de la tabla (botones, elementos de visualizacion, ...).

19

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

5.1 Creacin de un Bloque y Formulario con relacin Maestro-Detalle Nos encontraremos con Bloques Maestro (por ejemplo el bloque de la tabla Cabecera) y Bloques de Detalle (por ejemplo el bloque de la tabla de Lineas). Es como cuando en Access utilizbamos un formulario (el de Cabecera) y otro formulario (el de Lineas), estaba puesto como subformulario; y que entre ellos haba la relacin de 1 a N. Imaginemos que tenemos 2 tablas de albaran (cabecera y lneas) y que estn relacionadas por cdigo:

Primero de todo creamos un bloque de datos de albaran_cabecera:

Ahora nos tocara crear el bloque de datos de albaran_lineas. Recordamos que para crear un bloque de datos es aconsejable usar el asistente (Herramientas, asistente de bloque de datos):

20

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Nos ha aparecido un men nuevo, el de las relaciones. Gracias a la relacin entre las 2 tablas, el programa detecta automticamente que nos puede interesar crear una relacin entre ellas. Para ello hemos desactivado el checkbox de Unir automticamente bloque de datos y hemos dado al botn Crear relacin. Hemos decidido que la relacin entre elemento detalle y maestro sean los campos cdigo de cada una de las 2 tablas. Vemos que ya se nos ha creado una condicin de Unin. Daremos al botn siguiente: Una vez hayamos creado el bloque de datos de lneas nos interesa que no se nos muestre el cdigo de albaran (se hara demasiado repetitivo). Para ello, en el asistente de diseo la cosa quedara ms o menos de la siguiente manera:

21

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Damos a siguiente hasta llegar al men que nos pregunte si queremos que el diseo sea tipo form o tabular:

La diferencia es ms o menos clara. El diseo de tipo tabular nos debe de servir para crear las lneas. Damos a siguiente y el asistente nos pedir el ttulo del marco y el numero de registros visualizados. Es importante este ltimo campo, ya que el numero de lneas mostradas por pantalla depender de l. Finalmente daramos al checkbox Visualizar Barra de desplazamiento para poder movernos entre los registros. Ms o menos quedara as:

22

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Ya hemos creado los 2 bloques de datos con su respectiva relacin. Los 2 bloques de datos se nos mostraran en el mismo lienzo. Como podemos comprobar, vemos que es crear formularios con este tipo de relaciones es bastante ms sencillo que con Microsoft Access. El formulario quedar de la siguiente manera:

Adems de haber insertado los bloques de datos en el diseo, en la ventana de navegador de objetos se nos ha creado un nuevo objeto en la pestaa de relaciones. Este objeto, que hace referencia en la relacin, se puede modificar mediante sus propiedades:

23

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Algunas propiedades son claras y no es necesario comentarlas. Podemos cambiar el nombre de la relacin (no afectara a la condicin), aadir algn comentario, cambiar la condicin, etc. Adems de estas propiedades elementales, podemos ver otras de muy interesantes: Comportamiento del registro: Si est a no aislado impide la eliminacin del maestro cuando estn registros de detalle. Si tenemos la opcin cascada se eliminan los registros de detalle cuando se suprime un registro maestro y finalmente el modo aislado solo suprime el registro maestro. Evitar operaciones sin maestro: No nos deja crear filas en las lneas si no existe el maestro. Aplazado y consulta automtica: Si los 2 estn a no impone la coordinacin de bloques cada vez que el usuario o un disparador cambia el registro maestro. Si aplazado y la consulta automtica estn a si. Pospone el procesamiento de consultas hasta que el cursor visite los bloques relacionados, es decir, si estoy en el maestro y voy dando a siguiente, las lneas no se actualizaran hasta que cambie de bloque. Si el aplazado esta a si y la consulta automtica a no es ms o menos como el anterior, no se hace la consulta automtica, sino que la debo de ejecutar yo mismo. De esta manera, podra establecer criterios para mostrar solo los valores que quisiera.

-

-

6. LA PALETA DE PROPIEDADESTodo elemento del formulario tiene una paleta de propiedades, de la que podemos acceder haciendo clic al elemento con el botn derecho y accediendo al men de propiedades. Tambin podemos acceder a esta paleta seleccionando el elemento en cuestin y haciendo clic al men de herramientas, paleta de propiedades.

6.1 El botn More ("...") En algunas de las propiedades pueden aparecer un boton con 3 puntos suspensivos "..." llamado botn More:

24

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Puede ser que al pulsarlo, se abra: * Un campo de texto (para poner comentarios)

* Una lista (con la fecha para elegir uno)

25

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

* Una ventana LOV (un cuadro de dialogo lleno de valores):

6.2 Significado de los smbolos de la izquierda de las propiedades Si nos fijamos, cada propiedad tiene un smbolo en su izquierda. Este smbolo puede ser una redonda, una flecha o un cuadrado.

1) Una Redonda: Indica que la propiedad es la que viene por defecto y que no la hemos cambiado nosotros. 2) Un Cuadrado: Significa que hemos cambiado su valor (es decir, que el valor que hay no es el que venia por defecto en la propiedad). 3) Una Flecha hacia la derecha: Indica que el valor es un valor heredado. 4) Una Flecha con una cruz: Es un valor que se ha heredado, y que se ha modificado su valor posteriormente.

26

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

6.3 Atributos Visuales

Tenemos que ir a esta propiedad cuando queramos personalizar nuestro formulario, para que luego, los formularios siempre sean de la forma en que los hemos personalizado. A nuestra "personalizacin", al guardarlo le daremos un nombre, ste nombre, es el que deberemos seleccionar en la propiedad "Grupo de Atributos Visuales", para que se le aplique en el formulario la "personalizacin".

6.3.1 Cmo crear un Grupo de Atributos Visuales Simplemente debemos ir al Navegador de Objetos y crear un objeto en atributos visuales del formulario y mirar sus propiedades:

En un atributo visual podemos asignarle un nombre de fuente, tamao de fuente, estilo de fuente, color de fuente, etc.

27

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

7. PROPIEDADES DE LOS BLOQUES DE DATOS7.1 Conceptos Bsicos (El estilo de Navegacin)

El estilo de navegacin es el comportamiento de 1 bloque respecto a la navegacin entre los bloques, a travs de los botones marcados con un crculo rojo. Normalmente el orden es el vertical El botn siguiente pasa al registro siguiente. Por ejemplo, si estoy en el bloque de Cabecera, pasa al siguiente registro del bloque Cabecera. Los botones de ir al Primero e ir al ltimo, no son como acces que van en el primero o ultimo registro, si no que lo que hacen es cambiar de bloque.

7.2 Navegacin

Cuando navego al siguiente elemento del ultimo elemento de un bloque (es decir, cuando le doy al tabulador), puedo decirle que haga 3 cosas distintas, que son las de la paleta en Estilo de Navegacin: 1. El mismo registro: es decir, que vuelva al primer registro del bloque. 2. Cambiar registro: es decir, cogera el albaran siguiente 3. Cambiar de bloque: es decir, cambiar de bloque.

28

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

7.3 Base de Datos

Bloque de datos de la base de datos: Si estan basados en un bloque de una base de datos. Forzar clave primaria: Por defecto el formulario no hace comprobaciones de la base de datos, por lo tanto, podemos insertar un elemento con la primary key repetida. Se dar cuenta de que la clave primaria esta repetida cuando vayamos a grabar a la base de datos, porque quien lo comprueba si la clave primaria est repetida o no, son las restricciones de la base de datos. Si ponemos forzar clave primaria, el formulario comprueba si los registros insertados son unicos, y por lo tanto, intenta evitar que haya claves primarias duplicadas en el propio formulario. Esto supone que el error nos l odar el formulario. Consulta permitida: Consulta,n a buska insert,n actualiacion, n borrado-> pueden star permitidos o no. Tipo de origen de datos de consulta: Nos dice de donde procede lo que est en el bloque. Clausula WHERE: La clausula where que escribamos aqu (slo hay que escribir la condicin. Ej: >100), se aadir en la consulta que haciamos cuando estamos en modo introducir consulta. sta clausula se concatenar con un aND a la clusula where de las condiciones que hayamos establecido a la hora de introducir la consulta antes de ejcutarla. Clausula ORDER BY: Puedo establecer por qu campo quiero que me visualize los registros. Si al hacer al introducir consulta en el QueryWhere, aado a la clausula where un order by, ese order by, sustituye al de aqu.

29

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Actualizar slo columnas cambiadas: Solamente escribe en las columnas que hemos modificado. Tiempo de consulta maximo: Si tenemos la opcin de Query o Record activada, podemos establecer un tiempo maximo, que una vez transcurrido si no ha terminado la consulta, la aborta. Esto nos evitaria que el pc nos quedase colgado por haber hecho una consulta demasiado grande. Mximo de registros buscados: Aborta la consulta, si la consulta devuelve ms registros que el valor que hayamos puesto aqu.

7.4 Registros

Grupo de atributos visuales del registro actual: Slo tiene validez cuando estamos en formularios de tipo lista (es decir, tipo tabular como por ejemplo la tabla de lineas). Aqu le podemos indicar por ejemplo, que la linea seleccionada sea de distinto color que las otras. As se diferencia el registro actual, de los dems. Tamao de vector de consulta: Especifica el n mximo de registros que el Form Builder recupera de la base de datos cada vez. Si el valor es grande, el trafico de la red ser menor, y si el valor es pequeo, el trfico de la red ser mayor ya que tendr que consultar ms veces. N de registros memorizados: Cantidad mnima que queremos que tenga de espacio de bufer, para los registros consultados. Como mnimo es el valor de los displayados(registros mostrados por pantalla) +3. N de registros mostrados: N de registros que queremos que nos muestre en el formulario. Consultar todos los registros: Es para decidir si queremos que consulte de una sola vez todos los registros que cumplen la propiedad?? o no. Cuando quiero aadir funciones agregadas (sumandos, etc...), la propeidad debe estar a SI. Orientacin del registro: Es como queremos que nos muestre los registros, si en vertical u horizontal.

30

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

7.5 Barra de Desplazamiento

Direccin inversa: Si queremos que cuando pulsemos con el ratn la flecha de ir bajando para abajo, suba para arriba, es decir, que al pulsar las flechas de la barra, vayan al revs de lo normal.

8. PROPIEDADES DEL FRAME DE CANVAS8.1 Marco de Diseo

Bloque de datos de diseo: Es el nombre del bloque de datos con el que el frame est asociado. No se puede colocar un bloque de datos en varios frames.

31

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Un frame slo puede tener un bloque de datos asociado. Actualizacin de diseo: Puede ser automtico, manual o bloqueado. - Automtico: El diseo se actualiza cada vez que se cambia el tamao del frame, o si se mueve. - Manua: El diseo slo se actualiza cada vez que se utiliza el asistente de diseo para cambiar algo (es decir, slo cambia el diseo si nosotros movemos los elementos de dentro del frame). - Bloqueado: El diseo no se puede modificar. Estilo de diseo: Puede ser estilo de formulario o estilo tabular (como el form de lineas).

8.2 Cosas de Inters 8.2.1 Ayuda de Developer Para cualquier duda tenemos la ayuda de Developer. Nos situamos en el campo que queremos consultar y le damos a la tecla F1. Automticamente se nos abrir la ayuda de aquella propiedad.

8.2.2 Dos cuadros (o ms) de propiedades a la vez Para tener dos cuadros de propiedades (o ms) en la misma pantalla, es decir, que no se ceirren cuando hago clic en otra paleta de propeidades, hay que pulsar el botn de chincheta:

32

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

8.2.3 Cmo ver las propiedades comunes de 2 objetos Para ver las propiedades comunes de dos objetos hay que seleccionar los dos campos, y mirar su paleta de propiedades:

8.2.4 Cmo ver la unin o interseccin de las propiedades de dos objetos El botn imn especifica si lo que quiero ver es la unin o interseccin de las propiedades. La interseccin (que es la que hay por defecto), muestra las propiedades comunes. La unin (debo pulsar el botn U), muestra las propiedades comunes y no comunes.

Ejemplo, tenemos dos campos: Campo A: 1 3 5 9 Campo B: 1 3 7 10

La interseccin seria: 1 3 * * (los asteriscos son los campos no comunes) La unin seria: 1 3

33

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

8.2.5 Botones COPIAR/PEGAR Propiedades ste boton de unin/interseccin nos puede servir para dar propiedades comunes a varios objetos a la vez:

Puedo copiar y pegar propiedades, con los botones de copiar/pegar, en distintos campos. Slo tenemos que seleccionar de la paleta de propiedades de un campo, aquellas propiedades que nos interesen, pulsar el boton de Copiar, ir a la paleta de propiedades de otro campo y pulsar el boton pegar para copiar sus valores. Tambin se pueden copiar/pegar propiedades de distinto tipo. Si hay algunas propiedades que no existen en las propeidades del campo en dnde pegamos, no las pega.

8.2.6 Botones Aadir propiedad/ Borrar Propiedad Los botones de aadir y borrar propiedad pueden servir para crear clases de propiedad, que despus heredaran los elementos del formulario.

9. LOS BLOQUES DE CONTROLAhora vamos a analizar las propiedades del bloque de datos, unas de las ms importantes del formulario. Si buscamos alguna propiedad que a simple vista no encontramos siempre podremos hacer una bsqueda en la paleta de propiedades. Los bloques de control son bloques que no estn asociados en ninguna base de datos, ni sus elementos estan relacionados con alguno de los campos de una base de datos. Esto significa que no se realizan consultas sobre el bloque.

34

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

9.1 Cmo crear un Bloque de Control Navegador de objetos Nos colocamos en Bloques de Datos pulsamos el boton de la izquierda + seleccionamos "Crear un nuevo bloque de datos manualmente".

En su paleta de propeidades, debemos ponerle un nombre.

En su paleta de propiedades le cambiamos el nombre e iremos aadiendo lo que queramos (botones, labels, etc.). Para aadir algn elemento en el bloque de control iremos al diseo de formulario e iremos agregando lo que queramos, siempre y cuando el ComboBox de la opcin bloque tenga el nombre del bloque de control que hemos creado. Veamos la imagen para entenderlo:

35

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Para asegurarnos que el Bloque de datos no intervendr en la base de datos en su propiedad bloque de datos de base de datos le damos a no:

Hablemos de los botones: Para que un botn nos funcione correctamente en su propiedad de teclado de Navegacin le ponemos de valor no. Para un botn los disparadores ms utilizados son: When-Button-Pressed (equivalente al hacer clic y when-new-item-instance).

9.2 Como se elimina un bloque de control? Slo tenemos que seleccionar el bloque de control que queremos borrar, y en la barra de la izquierda del navegador de objetos pulsar el botn -.

36

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

9.3 Importante! Cuando estamos en un campo y hacemos clic, en la derecha arriba, dice en qu bloque de datos se encuentra.

10. LOS OBJETOSEn los botones tenemos ke poenr ke no agan navegacion Los objetoc Los disparadores smart, son los disparadores mas utiliados para ese objeto Si cojo el editor de pl sql, veo todos los disparadores ke hay.

10.1 Paleta de propiedades TEXTITEM En access eran los cuadros de texto. Es un objeto a travs del cual, podemos insertar, modificar y borrar datos. Normalmente un TextItem se corresponde con una columna de una tabla de una base de datos. En access, se necesitaba un "sitio", en dnde mostrar los valores, y utilizbamos tambin los textitem. En cambio, en oracle, hay otro elementos para esto, los elementos de visualizacin:

Los elementos de visualizacin no estn relacionados con elementos de la base de datos (es decir, no tienen origen de control). No son equivalentes a las etiquetas de access.

37

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

10.1.1 Fsica

Visible: (Si/No). Nos indica si el textitem es visible o no. Lienzo: Es el lienzo el el cual queremos que se muestre el elemento de texto. Podemos tener un textitem en un bloque de control que tenga como Linzo el valor NULL (significa que tendr un textitem que no se ve). Esto nos puede servir porque desde cualquier procedimiento PL SQL, puedo referirme a este textitem para guardar valores como si fuera una variable, que luego pueda acceder desde otro sitio, de la siguient forma: :nombreBloque.nombreTextitem En el caso de que el lienzo fuese de tipo pestaa, debemos decirle ne Pgina con pestaa, en que pgina del lienzo estaria el textitem.

10.1.2 Prompt Serian las propiedades de la etiqueta en access:

38

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

10.1.3 Datos

Obligatiorio: Si es obligatorio escribir algo. Copiar valor desde elemento: Copia el valor de un elemento, a ste. Sincronizar con elemento: Es como si tuviramos un mismo elemento en dos sitios. Es decir, si pongo un elemento aqu, cuando cambie valores de las propiedades, se cambiaran en el elemento del que estoy con la paleta de propeidades, y tambien del elemento que haya puesto aqu en este campo.

10.1.4 Ayuda

Indicacin: Es el texto de ayuda que aparecer cuando me situo en un campo con el ratn, y al poco tiemp oaparece un cuadro amarillo con texto que informa de la funcin del campo.

39

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

10.1.5 Navegacin

Teclado de navegacin: Los textitem tambin tienen navegacin anterior y siguiente. Si ponemos la propiedad a no, cuando nos vayamos moviendo con los botones siguente y anterior, este elemento se lo saltar y slo podremos acceder a l con el ratn. Los elementos que pongamos en la propiedad Navegacin Anterior y Navegacin Siguiente deben pertenecer a elementos del mismo bloque.

10.1.6 Base de Datos

Elemento de base de datos: Determina si el valor del elemento se almacena en la base de datos (propiedad a Si), o es un elemento de control (propiedad a No). Slo consulta: Si est a S, haria que este textitem slo se utilizara para consultar. (Es decir, no se podrian hacer ni inserts, ni updates). Consulta sin diferenciacin de mayculas/minsculas: Propiedad dnde se puede decidir si queremos que la consulta haga diferenciacin entre las maysculas y minusculas, o no.

40

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

10.1.7 Funcional

Activado: Si la propiedad est a S, el textitem se puede manipular, en cambio si est a no, no se puede modificar el textitem (En acces si la propiedad estuviera a No, el textitem aparecia como difuminado). Varias lneas: Propiedad en dnde se puede definir si un elemento es multilnea. Es decir, cuando el texto de un textitem es muy grande, que se presente el campo como campo multilnea. Estilo de ajuste de texto: En el caso de que la propiedad multilnea est a S, le podemos decir como queremos que ajuste el texto. Restriccin mayuscula/minscula: En sta propeidad podemos definir si solo queremos que se entren valores de una determinada forma (slo mayscula o solo minscula), o bien que no haya restriccin. Ocultar datos: Se utilizaria sta propiedad por ejemplo, si el campo fuese una contrasea. Al poner lap propeidad a S, al escribir en el campo, apareceran asteriscos o crculos negros (por ejemplo), para que no se viera lo que se escribe. Mantener la posicin del cursor: Es pare decirle por ejemplo, cuando est situado en este elemento y cambie de formulario o pgina de lienzo, si cuando vuelva a este lienzo me quede el foco dentro del elemetno de texto otra vez o no. Salto automatico: Si cuando el campo llegue a su longitud mxima, si saltaria al elemento siguiente del bloque de datos. sta propiedad se tiene que trabajar junto con la propiedad Longitud Fija (Dentro de la seccin Datos). Se utiliza para ahorrarnos pulsaciones cuando son campos de muy poco tamao. Men desplegable: Aqu, si hubieramos creado un men desplegable, le diriamos el nombre del menu que le queremos asociar al elemento de texto.

10.1.8 Poner a multilnea un Elemento de Texto Cuando declaramos un elemento de texto multilinea, tenemos que tener en cuenta: Que tienen que ser de tipo char, alpha o long. La longitud mxima. Los anchos y los altos que queremos ver. Que seguramente querremos tener una barra de desplazamiento vertical.

41

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

10.1.9 La propiedad Ayuda La propiedad ayuda se visualizar al final del formulario, en la lnea de abajo, en gris. Le debemos poner el display atomtico de la indicacin.

10.1.10 Las Propiedades Activado y Teclado de Navegacin Las propiedades Activado y Teclado de Navegacion, funcionan en comun o pueden, si las dos estan activadas (Si), se puede hacer cualquier cosa. Si Activado est a Si, y Tecla de de Navegacion a No, el elemento esta activado, pero no se puede navegar con el teclado (pero si con el raton). Si las dos propeidades estn a No: El textitem est desactivado, y no se puede navegar ni con el teclado ni con el ratn. Si la propiedad Activado estuviera a No y le Teclado de Navegacin estuviese a Si, seria una situacin atpica (pero seria como si el teclado estuviese a No tambin).

11. LAS LOV'SUna LOV (Lista de Valores) es una ventana pop up que nos permite extraer el valor de un elemento de una lista dinmica de varrias columnas. 11.1 Como crear una LOV Para crear una Lov, se deberia crear siempre un grupo de registros (RecordGroup). En los grupos de registros pueden utilizarse valores estticos (es decir, ir poniendo valores) o bien basarnos en una consulta. Para crear una Lov basndonos en una consulta deberamos seguir estos pasos: 1) Vamos al navegador de objetos, y teniendo seleccionado la seccin Grupo de Registros, pulsamos el Botn +. Nos saldr el siguiente cuadro de dilogo, dnde debemos escribir la Select:

42

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Select codigo, nombre From clientes Order by codigo (sin punto y coma final)

2) Ahora que ya tenemos un grupo de registros, creamos una lista de valores. Teniendo la "seccin" Lista de Valores seleccionada, pulsamos el Botn + para crear una nueva lista de valores:

Debemos seleccionar el primer RadioButton, y seleccionar el nombre del Grupo de Registros que hemos creado anteriormente. De sta forma, ya tendremos la LOV creada.

3) Ahora slo falta que en la paleta de propiedades del campo Cdigo de Cliente, en la propiedad Lista de valores (LOV), le asociemos el nombre de la lista de valores que hemos creado. de valores asociada:

* Propiedad Validar desde Lista: Define si slo quiero que me acepte valores que estn en la LOV creada o no. Al ejecutar el formulario, cuando me coloque sobre el cdigo por ejemplo, abajo en el estado veremos que pone "Lista de Valores".

43

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Si estando dentro de este mismo campo, si pulsamos la tecla F9, se nos abrir la lista de valores:

Si quisiramos que esta lista desplegable se abriese tan solo situarnos en el textitem, es decir, que se abriese de forma automtica, deberamos ir a las propiedades de la Lov e ir en: Funcional Visualicacin automtica. De sta forma, no hara falta que pulsaramos F9 para que se nos abriera, ya que al entrar en el campo, la lista se abriria automaticamente.

11.2 Crear una LOV con valores estticos Si quisiramos crear una LOV de valores constantes simplemente tenemos que crear un RecordGroup de valores estticos:

44

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Tal y como vemos en la imagen podemos crear las columnas que queramos. En este caso solo hemos creado una columna con 3 valores posibles (1, 2 y 3).

11.3 Propiedades de la LOV 11.3.1 Correspondencia de columnas Para actualizar un campo del bloque de datos despus de haber seleccionado un valor de una LOV tenemos que ir a la propiedad correspondencia de columnas. All podremos especificar dnde devolveremos el valor de cada campo de la LOV y especificar la anchura de visualizacin de su columna. Es decir, podemos escoger que el valor del campo cdigo de la LOV vaya en el item nombre del bloque de datos clientes. Si tenemos una columna que no queremos visualizar slo tenemos que poner el valor 0 a ancho de visualizacin. Veamos el ejemplo:

* Nombres de columnas: Cogemos una columna * Elemento de retorno: Aqu le tenemos que decir a qu campo queremos que vaya a parar el valor (nombreBloque.nombreDelItem). * Ttulo de la columna: Es el nombre que queremos que aparezca cmo ttulo, en la LOV. * Ancho de Visualizacin: Si lo ponemos a 0 es como en Access, que no queramos que se viera al abrirse la lista.

12. PROPIEDADES DE LOS CHECKBOXPueden tener 2 estados: On/Off (Activado o Desactivado).

45

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Algunas de sus propiedades son: Tipo de dato: Especifica que tipo de valor queremos que tenga el checkbox: Puede ser Char, Number o Date. Si por ejemplo seleccionamos un valor numrico, este solo podr devolver 1 o 2, 3 o 4, etc. Si seleccionamos un valor de varchar, el retorno ser de tipo texto. Valor si est comprobado o no: Es el valor que representa el checkbox al estar pulsado o no. Debe ser un valor compatible con el tipo de dato que le hayamos puesto. Etiqueta: Es el texto que definir el checkbox. Correspondencia de la casilla de control con otros valores: Si decido que el checkbox pueda tener valores 2 o 3 si ste pasa a tener un valor que no corresponde a ninguna de las 2 opciones podremos decidir como queremos presentar el item. Si seleccionamos la opcin no permitido no nos dejar seleccionar otro valor de los 2 posibles. Men desplegable: Si no queremos otros valores que no sean de la LOV, aqu debemos poner un No Permitido. Si tenemos un formulario en dnde hay un checkbox, y queremos consultar por cdigo, cuando abramos en EnterQuery, ponemos el cdigo a buscar. Luego el checkbox estar a On u Off dependiendo de si en aquellos registros el chechbox est activado o no. Por lo tanto, los checkboxs tambin intervienen en las consultas. Para que no intervengan en una consulta, tenemos que hacer un click con el ratn, con el SHIFT apretado, antes de ejecutar la consulta.

13. PROPIEDADES DE LOS LIST ITEMSAlguna de las propiedades de los list Items son: Estilo de la lista: Pop List (Lista desplegable): No admite valores que no estn en la lista. Tlist (Lista vertical) ComboBox (Cuadro Combinado): Permite la entrada de datos, es decir, podemos aadir valores que no estn en la lista.

Lista desplegable:

T-List:

Recuadro combinado:

Abrimos el cuadro de dilogo de elementos de la lista: La parte de arriba es el elemento que queremos que se vea, y la parte de abajo es el valor que pasaria al elemento al que esta asociado (que no tiene porque ser el mismo). Valores de la lista: Aqu podemos aadir los elementos que queremos mostrar en la lista. Para cada elemento tenemos que especificar su valor.

46

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

14. PROPIEDADES DE LOS RADIOBUTTONSSi nos fijamos, la 1 vez que creamos un radiobutton vemos que en el navegador de objetos se nos ha creado un RadioGroup:

All podemos aadir todos los RadioButtons que queramos y podremos decir que estn relacionados entre ellos. Si queremos insertar un RadioButton que no pertenezca al RadioGroup, insertamos un nuevo RadioButton y nos aparecer el siguiente men. Le daremos simplemente al botn nuevo:

47

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

* Algunas propiedades de un RadioButton Tipo de dato: Podemos seleccionar el tipo de dato que queremos devolver, ya sea char, number, etc. Correspondencia con otros valores: Al igual que en los checkbox, podemos escoger qu hacer con los valores que no pertenezcan al radiobutton. Valor del botn de radio: Es el valor que quedar seleccionado por defecto, de los botones que haya en el grupo.

15. PROPIEDADES DE LOS DISPLAY ITEMSLos display items son parecidos a los text items, con la nica diferencia que estos primeros no se pueden modificar. Vamos a ver algunas de sus propiedades: Icnico: Indica con un Si (Si es un botn de icono) y un No (Si es un botn de texto). Nombre del fichero del icono: Aqu se le debe poner el camino en donde est el icono en cuestin (Hay que poner el camino, sin la extensin detrs). El camino dnde estn los iconos es: C:\ORANT\TOOLS\DEVDEM20\BIN\ICON Acciones de los botones: Son las tpicas acciones como las que se podian hacer con Access. Navegacin del ratn: Hay que poner la navegacin del ratn a NO. Boton por defecto: De los botones de dentro de un bloque de control, aqu le decimos cual quiero que sea el botn por defecto. Tool tip: Es el texto de ayuda que sale en un pequeo recuadro cuando tenemos el ratn encima del botn. Grupo de atributos visuales: Puedo crear un grupo de atributos visuales para el tooltip y asignarlo aqu.

Importante!! En la mayoria de los casos, los botones tienen que ir en un bloque de control, en vez de ir en bloques normales de datos. Por lo tanto, debemos crear un bloque a parte por nuestra cuenta.

16. CAMPOS CALCULADOSLos campos calculados pueden ser un campo de Display Item, un Textitem, ... Para hacer el clculo, debemos ir a su paleta de propiedades:

48

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Modo de calculo: - Tipo Frmula: Aqu le debemos indiciar si es una frmula por ejemplo (que luego la debo escribir en la propiedad Frmula) - Tipo Total: Se usan para las columnas de totales (con las que quiero la suma de otras columnas). Si es de tipo Total hay que tener en cuenta: - Que le tengo que decir el tipo de total que quiero: Media, Recuento (count), Max, Min, Funcion Totalizar...) - Bloque total (Le debo decir en qu bloque est lo que quiero totalizar) - Elemento de total: el elemento dnde ir el total (ej: en el campo totalNeto). - El tipo de dato tiene que ser numrico. Igualmente, no funcionar, porque el problema es que al bloque al cual le aplico la frmula (es decir, en nuestro caso el bloque de lneas), debe de ser 1 bloque que tiene que tener la propiedad Consultar Todos los Registros (Query All Records) a S, como mnimo. Es decir, el elemento dnde totalizo, tiene que estar en un bloque de control para que funcione. Debe de ser adems, un DisplayItem, porque el valor que se ponga all, no se tiene que modificar. Otras cosas a saber: - El bloque de control sobre el cual totalizo, debe estar a S. - La propiedad bloque de registro nico tambin debe de estar a S RESUMEN: El elemento de totalFinal, debe de estar en un bloque de registro nico (tiene que tener la propiedad Registro nico a S, o un bloque de control de registro nico a S). El bloque de datos sobre el cual aplico la funcin a realizar, la propiedad Consultar Todos Los Registros debe estar a S.

-

17. RELACIN ENTRE VENTANAS Y LIENZOSTodas las ventanas han de tener un lienzo de tipo contenido. Si en la misma ventana quiero ver otro lienzo mediante un botn, por ejemplo, el nuevo lienzo debe ser de tipo Apilado.

Ventana con varios lienzos: Si son de tipo contenido, uno se pondr encima del otro, de manera que veremos siempre slo un lienzo en la pantalla. Si son de tipo apliado, se vern uno detrs de otro, como en cascada. Si quiero otra ventana: Tengo que ir en el Navegador de Objetos: Ventanas Pulsar el boton de nuevo (Boton +) Seguidamente, en el lienzo que quiero la ventana nueva, voy a su paleta e propiedades y en Fsica Ventana, le pongo el nombre de la nueva ventana.

49

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Las ventanas apiladas se utilizan a veces para: - Ver un grfico (Pulsando un boton en un formulario, se abre por ejemplo otra ventana ms pequea mostrando un grfico, que se puede cerrar luego). - Hacer una ventana y otra ventana (As puedo tener las dos ventanas a la vista y los puedo maximizar,minimizar... cuando quiera).

17.1 Propiedades de las Ventanas Algunas de las propiedades de las ventanas son: Modal: Si queremos que sea modal o no (Hasta que no aceptemos y cerremos una ventana, no podremos acceder a las otras). Nombre del fichero del icono: Si queremos que arriba en la ventana, salga un icono en concreto.

18. BARRA DE HERRAMIENTAS VERTICAL (Lienzo de la Barra de Herramientas Vertical)Para crear una barra de herramientas vertical, debemos seguir los siguientes pasos: 1) Crear un lienzo nuevo 2) Ir a: Paleta de propiedades Tipo de lienzo Barra de herramientas (vertical u horizontal) Para ir colocando los botones, debemos crearlos tambin en un bloque nuevo: Cojo un boton Propiedades Fsica Lienzo: Aqu le pongo el lienzo de la barra de Herramientas. La barra quedar apilada en la parte superior del lienzo. Pero si no nos gusta, podemos decirle que sea una barra de Herramientas del modulo: Propiedades Fsica Lienzo de la barra de herramientas Horizontal o Vertical del formulario: Aqu le ponemos el lienzo de la barra de herramientas que he creado.

19. LIENZOS TIPO PESTAA- Slo basta con ir creando las pestaas que queramos (pages). - Cada pestaa tiene sus propiedades. - Siempre tienen que estas sobre un lienzo tipo contenido.

20. LOS TRIGGERS (Disparadores)Los triggers son los programas PL SQL que se ejecutan cuando sucede alguna cosa (Son equivalente a los eventos de Access).

50

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Los triggers se pueden utilizar para substituir/aadir funcionalidad a 1 evento determinado (depender del tipo de trigger). ** No tendramos que confundir los triggers del Form Builder con los disparadores de las tablas: - Los Forms Builder tienen unos disparadors particulares. - Los disparadores de tablas son los: After-, Before-, update, insert, delete a nivel de fila o tabla). Los disparadores que se disparan como eventos producidos por una isnercin, modificacin, ... de filas de una tabla. Al igual que los disparadores del Forms Builder.

20.1 Disparadores de Form Builder Debemos tener en cuenta: - El cdigo: Si el cdigo es PL SQL o es de los Built In. - El mbito: Es el mbito en dnde est el disparador (si est a nivel de item, nivel de bloque, o nivel de mdulo).

20.2 Disparadores de Tabla Debemos tener en cuenta: - El cdigo - El mbito - El tipo: Nos dice como se provocar este trigger. Siempre que se produce el suceso en 1 elmento, si ste suceso tiene escrito en el trigger un evento, lo ejecutar, si no tiene escrito ningno, ir a buscar en el nivel superior si hay algn trigger (Esto seria lo que hemos dicho antes del mbito).

20.3 Los Tipos KEY nombreTecla: Va acompaado con el nombre de una tecla detrs. Lo que hace es substituir la funcionalidad de la tecla. Se dispara en lugar de lo que hacia la tecla. PRE: Lo que pasa antes de un suceso (PRE DELETE, ...) POST: Lo que pasa despus de un suceso (POST DELETE, ...) ON: Sustituye la funcionalidad del trigger. Ejemplo: El ON DELETE no borrar el registro porque todo lo que hacia cuando le daba el delete, lo sostutuye por lo que yo le haya escrito. Si adems de lo que yo le he escrito, quiero que borre, tengo que escribirle un delete record. WHEN: Aade funcionalidad al suceso. Ejemplo: Si le pongo a un registro, un WHEN DELETE detrs, el when delete borrar el registro y adems, har lo que haya escrito dentro del trigger. Aqu, el suceso por defecto se realiza, y adems hace lo que escriba dentro.

51

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

20.4 El Cdigo Lo que escribamos en el cdigo, sean funciones/sentencias PL SQL, o Built In Procedures, tambin se les puede hacer llamadas a procedimientos y funciones de una libreria. En un trigger podemos escribir sentencias SQL pero tenemos que acordarnos que las sentencias INSERT, UPDATE y DELETE, slo se deben colocar en triggers transacionales, es decir, triggers PRE QUERY, POST QUERY, COMMIT, COMMIT FORM, ROLLBACK, ... ! El Commit y el Rollback no se pueden incluir directamente como sentencias en el trigger. ! A la hora de escribir los triggers, si no hay que declarar variables, no hace falta poner el WHEN VALIDATE ITEM?

20.5 Paleta de Propiedades de los Triggers Algunas de las propiedades de los triggers son: Jerarquia de Ejecucin: Sustituye, pero tambin se le puede decir que ejecute antes o despus. Si lo tenemos a Sustituir: slo dispara el trigger. Si lo tenemos a Antes: el trigger se disparar antes que se dispare el mismo trigger, si existe en un nivel superior. Si lo tenemos a Despus: el trigger se disparar despus de que se dispare el mismo trigger, si existe en un nivel superior.

Activar en modo EnterQuery: Si ste trigger se ejecutar en modo enterQuery o no. A veces por ejemplo nos interesar sobre todo para elementos de texto si estn en modo normal, y no queremos que lo haga en modo EnterQuery. Texto de Ayuda de Teclado: El texto-informacin que escribiramos aqu, apareceria en el Show Case (men de arriba Ayuda Teclas). Es vlida solamente para los disparadores tipo KEY.

20.6 Variables (Dentro de los Disparadores) Las variables dentro de los disparadores se pueden clasificar en: Variables del sistema: Son las variables que empiezan por :SYSTEM. Los item: Tambin pueden servir como variables. Variables globales: El mbito sn todos los mdulos de la sesin actual. Almacenan los valores durante la sesin, a travs de conjuntos de carcteres. Las variables locales se puden utilizar con el Built In Default Value: DEFAULT_VALUE(Gijon,GLOBAL.pueblo);

52

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Lo que hemos hecho es delcarar una variable global llamada pueblo, y le hemos asignado el valor Gijon. En el caso de que la variable pueblo ya existiera, el Default Value no le asigna valor. Otra forma de crear una variable global: :GLOBAL.pueblo:=ord.poblacion; Aqu le hemos asignado un valor de un elemento textitem de un bloque de datos. Las variables globales se eliminan con el Built In: ERASE (nombreDeLaVariableGlobal) Parmetros: La ventaja es que pueden ser tipo Char, Number o Date. Tienen un nombre, y por lo tanto los podemos utilizar as: :PARAMETER.nombre El mbito de los parmetros es el mdulo actual, es decir, el mdulo en el que estn defini

21. LOS BUILT-INPueden ser restringidos o no restringidos: Los No Restringidos: Estn permitidos en cualquier lugar del trigger o subprograma. Suelen ser Built Ins que no afectan a la navegacin lgica o fsica. Los Restringidos: Afectan a la navegacin en el formulario. Slo se pueden invocar estos subprogramas desde triggers cuando no estn llevando a cabo navegacin interna, es decir, no podemos utilizar un Built In de tipo Go Block cuando el trigger dnde yo quiero escribir, es un trigger de navegacin (Al Salir de, Al Entrar de, ...).

-

** Si queremos escribir un Built In cuando estamos trabajando en PL SQL debemos llamar a: Paquetes Incorporados Extensiones Estndard ** Si queremos ahorrarnos escribir un Built In y queremos que lo escriba directamente tenemos que ir al navegador, Pegar Nombre o Pegar Argumentos y nos los escribe en el cuadro de dilogo.

21.1 Algunos Built In (Ejemplos) EDIT_TEXTITEM Abre el editor del runForm para el textitem actual. ENTER_QUERY Limpia el bloque actual y espera la introduccin de un cirterio de bsqueda. EXECUTE_QUERY Ejecuta la consulta

53

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

EXIT_FORM Sale del formulario actual. Tiene una excepcin: Cancela la consulta si est en modo EnterQuery. GET_ITEM_PROPERTY Es para coger el valor de una propiedad, es decir, devuelve el valor de la propiedad. (Se puede hacer por Item Id o por Item Name, son los dos correctos) La ventaja de hacerlo por el Item Id, es que el acceso es ms rpido. Para saber la Id de un objeto debemos usar el mtodo Find: FIND_ITEM :nombreBloque.nombreItem; ste mecanismo para coger el valor de una propiedad (es decir, usar el mtodo Find para encontrar su Id de Item), tambin es vlida para: - GET_FORM_PROPERY GET_BLOCK_PROPERTY - GET_LOV_PROPERTY - GET_RECORD_PROPERTY - GET_RELATION_PROPERTY - GET_VIEW_PROPERTY - GET_WINDOW_PROPERTY Es decir, todos los objetos. Cuando asignamos un valor boleano (true/false), a una propiedad, debemos hacerlo as: PROPERTY TRUE; o bien PROPERTY FALSE;

GO BLOCK nombreDeBloque / GO ITEM / GO FORM / GO RECORD Son items de navegacin Normalmente son restringidos, es decir, no pueden ejecutarse en triggers que implican en si mismos navegacin. HIDE_VIEW Nos oculta el Canvas indicado. Si luego lo queremos ver, debemos escribir: SHOW_VIEW LIST_VALUES Abre la lov asociada al elemento actual. En ste Built In, vemos que no le damos el nombre de la lov, por lo tanto, slo ensea el valor asociado al elemento actual. SHOW_LOV Mediante la Lov Id o la Lov Name, puedo especificar la posicin dnde quiero que se vea. Con ste Built In s que nos ensea una lista de valores determinada. Adems, es una funcin que devuelve un boleano: True si el usuario ha escogido un valor de la lista, o False si el usuario no ha escogido ningn valor de la lista. SHOW_EDITOR Built In que nos ensea el editor. Tiene unos parmetros que son Out. De sta forma podemos pasar un mensaje al editor y recuperar el texto escrito a mediante el paramtro Out.

54

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

22. LAS ALERTASUna alerta es un cuadro que aparecer en un momento determinado. Para crear una alerta debemos ir al Navegador de Objetos, seleccionar Alertas, y pulsar el botn + de la izquierda del navegador de objetos.

22.1 Propiedades de las Alertas Algunas de las propiedades que tienen las alertas son: Mensaje: Aqu le ponemos el mensaje que queremos que se vea al dispararse la alerta. Estilo de la Alerta: Si queremos que sea de Confirmacion, Pregunta, ... Etiquetas de Botones: Es la etiqueta que queremos que salga en el cuadro de la alerta (Exclamacin, Pregunta, ...) Boton por Defecto: Es el botn que su contorno quedar ligeramente bordeado con negro, para indicar que es el botn por defecto de los que haya en la alerta.

Ejemplo del cdigo de una alerta: Declare varNumero number; Begin VarNumero:=SHOW_ALERT(Hola!); End;

La alerta mostrar por pantalla Hola!. La variable varNumero, devolver el valor numrico del botn que hayamos pulsado.

23. CIERRE DE FORMULARIOSCuando ejecutamos un formulario, veremos que la ventana no se cierra. De hecho, no se cierra nunca. Al cerrar una ventana lo unico que hace es lanzar el disparador: WHEN_WINDOW_CLOSED ste disparador no hace nada, pero s que le podemos escribir el cdigo para que haga algo.

55

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Pero si tenemos ms de una ventana ocurre lo siguiente:

Si quiero cerrar la ventana 1 (contiene el elemento actual), no me permitir cerrar ni la ventana 2 ni la ventana 3, ya que no tienen el foco. ** El trigger WHEN_WINDOW_CLOSED admite Built Ins restringidos y no restringidos. ** Para cerrar una ventana podemos hacer dos cosas: (Aunque en ambos casos lo que hace es hacer desaparecer la ventana) - un HIDE_WINDOW - un SET_WINDOW_PROPERTY ! Para cerrar una ventana hay que tener en cuenta que tenemos que NO estar en la ventana que queremos cerrar. En el Set Window Property seria: SET_WINDOW_PROPERTY nombreVentana o idVentana VISIBLE PROPERTY_FALSE;

24. LA VENTANA DE DEBUGOracle Developer tambin tiene un sistema de Debug. Para ver el debug debemos ir en: Men de arriba Preferencias Ejecucin: Si marcamos modo de depuracin, el comportamiento al ejecutar el mdulo, el form, ... ser: Antes de arrancar el programa nos sacar el depurador, dnde hay 3 partes: Parte superior: El modo de depuracin Parte central: Los programas Parte inferior: Un cuadro donde podemos escribir comandos PL SQL.

Para poder hacer puntos de ruptura, slo tenemos que seleccionar una instruccin de la parte superior (tiene que ser una instruccin ejecutable) y hacerle doble clic. Al cerrar la ventana de Debug, empezar a ejecutase el programa. Llegar un momento en que cuando la ejecucin pase por los puntos de interrupcin (ruptura), ser parar.

56

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Desde la pantalla del medio podemos ver las acciones de depuracin que estan en curso, cuales son los valores de las variables de sistema en aquel momento, ...

24.1 Botones de la Ventana de Debug Los botones que podemos encontrar en la pantalla de debug son: 1) 2) 3) 4) 5) 6) Step into: Ejecuta la siguiente instruccin Step over Step out Go Reset: Redefinir Cerrar el debug

Todos estos comandos se pueden ir ejecutando en la parte inferior de la ventana de debug, escribindolos con un punto delante: .STEP_INTO Tambin podemos hacer un SHOW LOCALS para ver las variables locales (ya que en el programa, arriba slo aparecen las variables globales).

24.2 Como Obtener/Introducir valores en una variable en la ventana de Debug DEBUG.GETx(nombreVariable): Es una funcin que devuelve el valor de la variable nombreVariable. DEBUG.SETx(nombreVariable,valor): Funcin que pone el valor valor en la variable nombreVariable. La x puede ser: Una c si el tipo es Char o Varchar2 Una i si la variable es de tipo Integer Una n si es de tipo Number Una d si es de tipo Date.

25. TRIGGERS DE INTEGRACIN CON ELEMENTOSWHEN_BUTTON_PRESSED Salta el disparador cuando el usuario pulsa el boton. WHEN_CHECKBOX_CHANGED Salta cuando el usuario cambia el estado de un checkbox. WHEN_RADIO_CHANGED Salta cuando se cambia el estado de un radioButton. WHEN_IMAGE_PRESSED Salta cuando hacemos clic encima de una imagen.

57

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

WHEN_IMAGE_ACTIVATED Salta cuando hacemos doble clic en una imagen. WHEN_LIST_CHANGED Salta cuando cambia el estados de la lista WHEN_LIST_ACTIVATED Salta cuando hacemos doble clic encima de un valor de la lista

En todos estos triggers podemos colocar sentencias SQL, Built Ins, i sentencias PL SQL. Ejemplo:

25.1 Ejemplo con un Radiobutton Suponemos que ponemos el cdigo dentro del disparador WHEN_RADIO_CHANGED (:s_ord.payment_type es el nombre del botn). Declare v_ord_rating:=s_customer.credit_rating%TYPE Begin If :s_ord.payment_type=CREDIT Then SELECT credit_rating INTO v_credit_rating FROM s_customer WHERE id:=:s_ord_customer_id; If v_credit_rating NOT IN (Good,Excelent) Then :s_ord.payment_type:=Casm; Message (Cuidado, tiene que pagar); End If; End If; End;

Significado: Si el botn de radio que est marcado es el radioButton credit, entonces selecciona el crdito que tiene asociado el seor de la tabla s_customer. Si el crdito no est entre good y excelent, le pone que su tipo de pago ser al contado, y a continuacin manda un mensaje advitiendo de que tiene que pagar.

25.2 Ejemplo con un CheckBox En el caso que sea una casilla de verificacin hay otro Built In: CHECKBOX_CHECKED: Que es una funcin que si le paso el nombre del checkbox name), o su identificador (id), devuelve true o false dependiendo de si la casilla est marcada o no.

58

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Ejemplo: If CHECKBOX_CHECKED(s_ord.order_filled) Then SET_ITEM_PROPERTY(s_ord.date_shipped,UPDATE_ALLOWED,PROPERTY_F ALSE); Else SET_ITEM_PROPERTY(s_ord.date_shipped,UPDATE_ALLOWED,PROPERTY_T RUE); End If;

Significado: Si el checkbox est marcado, coge el elemento s_ord.date_shipped y no permite que sea actualiado ya que poner el UPDATE_ALLOWED a false. En cambio, si el checkbox no est marcado, s que le permitir su actualizacin.

25.3 Los List Items Tambin tienen un WHEN_LIST_CHANGED Los valores de un list item, pueden trabajar con el when list changed, y con el when list activated. Adems, tienen una propiedad de cmo queremos que se refresquen (actualicen), y una propiedad que nos permite la posibilidad de aadir/quitar elementos de la lista en tiempo de ejecucin. Esto se hace con los Built Ins: ADD_LIST_ELEMENT Para aadir un elemento, lo puedo hacer de 2 maneras (por id si hago un Find) o por el nombre (name): ADD_LIST_ELEMENT(years,1,1994,1994) Debemos ponerle el ndice (la posicin en la lista en dnde que est), la etiqueta (el nombre que va a salir, i el valor.

DELETE_LIST_ELEMENT Sirve para borrar un elemento de la lista (slo debemos deicrle el nombre de la lista y el nmero de la posicin del elemento en la lista): DELETE_LIST_ELEMENT('years',1);

59

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

25.4 Las LOVS Vimos que podamos utilizar los procedimientos Show Lov y el procedimieno List_Values: SHOW_LOV: Funcin que nos permite abir una Lov en cualquier momento. Tiene 3 versiones: - Lov id - Lov name - Especificando la "x" y la "y" (posicin en dnde quiero que se visualice). El Show Lov devuelve un valor boleano, que es True si el usuario ha escogido un elemento de la lista de valores, o False si no ha escogido ningn valor de la lov.

LIST_VALUES: Procedimiento que nos ensear la lista de valores asociada al elemento actual, es decir, si estoy en un elemento que no tiene Lov asociada, no me la va a ensear. Adems tiene un parmetro: En ste parametro se le puede poner Restrinct o No Restrinct: - Restrinct: Me abrir la lista de valores y me ensear directamente todos los valores de la lista, que coincidan con lo que he escrito en el textItem. Ejemplo: [__Mar___] Abrir la Lov con todos los valores de la lista que empiecen por "Mar". No Restrinct: Abrir toda la lista de valores.

El valor por defecto del parmetro es No Restrinct.

26. IMGENES Y SONIDOSLas imgenes sirven para mostrar una imagen en el formulario. Lo ms normal es que la imagen provenga de un formato longraw de la base de datos. WHEN_IMAGE_PRESSED Salta el trigger cuando hacemos un clic en una imagen. Una posible utilidad: En un formulario seguramente slo tendr el espacio en dnde va la imagen, pero sin tenerla puesta para que no ocupe mucho, entonces, lo que nos interesa, es que cuando hagamos clic en el espacio dnde va la imagen, nos la muestre.

WHEN_IMAGE_ACTIVATED Cuando hacemos doble clic en una imagen.

60

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

** En los 2 disparadores necesitamos un Built In que nos permita poner la imagen del disco en el formulario, es decir, que la cargue al formulario. Al igual que otro Built In, para hacer el proceso contrario, es decir, quitar la imagen: READ_IMAGE_FILE(nombreImagen,rutaImagen,tipoImagen,nombreImageItem); WRITE_IMAGE_FILE(nombreImagen,tipoImagen,idImagen,compresionImagen,rutaI magen); GET_FILE_NAME(nombreDirectorio,nombreArchivo,filtroFichero,message,dialog_typ e,select_file); Especifica el nombre del directorio que contiene el archivo que queremos abrir.

27. EJEMPLO GLOBALPara tener los conceptos que hemos estudiado anteriormente un poco ms claros, vamos a hacer un extenso ejemplo creando un formulario de Albaranes.

27.1 Creacin de las Tablas Primero de todo necesitamos crear las respectivas tablas: CREATE TABLE CLIENTES( CODIGO VARCHAR2(10) PRIMARY KEY, NIF VARCHAR2(10) NOT NULL, NOMBRE VARCHAR2(100) NOT NULL, DIRECCION VARCHAR2(100), POBLACION VARCHAR2(20), PROVINCIA VARCHAR2(20), PAIS VARCHAR2(20), TELEFONO VARCHAR2(50), EMAIL VARCHAR2(50), FAX VARCHAR2(10), GRUPOCLIENTES VARCHAR2(5), DTODEFECTO NUMBER(3), FORMAPAGO VARCHAR2(3), DIASPAGO1 NUMBER(2), DIASPAGO2 NUMBER(2), PERSONACONTACTO VARCHAR2(100), OBSERVACIONES VARCHAR2(500)); CREATE TABLE ARTICULOS( CODIGO VARCHAR2(10) PRIMARY KEY, NOMBRE VARCHAR2(100) NOT NULL, FAMILIA VARCHAR2(10), STOCK NUMBER, PRECIOCOMPRA NUMBER, PRECIOVENTA NUMBER, IVA NUMBER(3), DTO NUMBER(3));

61

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

CREATE TABLE ALBARANES_CABECERA ( CODIGO VARCHAR2(10), FECHA DATE, COD_CLIENTE VARCHAR2(10), NIF VARCHAR2(10), NOMBRE VARCHAR2(100), FORMAPAGO VARCHAR2(3), DESCUENTO NUMBER, DIRECCION VARCHAR2(100), POBLACION VARCHAR2(20), PROVINCIA VARCHAR2(20), PAIS VARCHAR2(20), TELEFONO VARCHAR2(50), EMAIL VARCHAR2(50), FAX VARCHAR2(10), CONSTRAINT ALBARANES_CABECERA UNIQUE(CODIGO)); CREATE TABLE ALBARANES_LINEAS ( CODIGO VARCHAR2(10), COD_ARTICULO VARCHAR2(10), CANTIDAD NUMBER, DESCRIPCION VARCHAR2(100), FAMILIA VARCHAR2(10), PRECIO NUMBER, IVA NUMBER(3), DTO NUMBER(3), CONSTRAINT ALBARANES_LINEAS ALBARANES_CABECERA(CODIGO));

FOREIGN

KEY(CODIGO)

REFERENCES

27.2 Creacin de los Bloques de Datos Una vez creadas las tablas tendramos que rellenar como mnimo las tablas de artculos y clientes, aunque estas dos no participaran directamente al formulario, es decir, slo usaremos 2 bloques de datos: la cabecera y las lneas del albaran. Es importante tener claro el concepto, ya que la tabla de clientes nos servir para crear la LOV y rellenar la cabecera del albaran, y la tabla de artculos servir para crear una LOV que rellene los datos de las lneas del albaran. Creamos los 2 bloques de datos. Esta vez no iremos paso a paso, dado a que ya hemos explicado en temas anteriores cmo crear dos bloques con relacin maestrodetalle. Para ir bien, los 2 bloques tendran que relacionarse con el campo cdigo de las dos tablas. El campo cdigo de la tabla de lneas debe de aparecer en el bloque de datos, pero no en su diseo, es decir, necesitamos trabajar con el campo cdigo de la tabla de lneas dado a su relacin con la tabla de cabeceras, pero no tenemos que mostrarla, ya que veramos este campo con el mismo valor repitindose en tantas veces como lneas se muestren en el bloque de datos.

62

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Esto es un ejemplo de cmo nos puede quedar el lienzo:

Aprovechando este ejemplo veremos algunos conceptos nuevos y ampliaremos otros de ya sabemos. Podemos ver como en el cuadro superior tenemos el bloque de cabecera con algunos de los campos que ms nos pueden interesar. En el cuadro inferior tenemos las lneas, que deberan de tener un diseo tabular. Nos aparece un campo que no tenamos en la tabla de lneas, que es el importe. De hecho no es un campo de la Base de datos, sino que es un campo calculado en tiempo de ejecucin. Finalmente en la parte inferior derecha tambin tenemos otro campo calculado, en este caso nos recuenta el nmero de artculos comprados en las lneas del albaran, aunque posteriormente aadiremos ms campos de total (total importe, total IVA, etc.).

27.3 Cmo incrementar automticamente el nmero de Albarn Vayamos por partes. Primero de todo est claro que nos convendra autoincrementar el nmero de albaran. Esto se consigue creando una secuencia en la base de datos de ORACLE mediante el comando CREATE SEQUENCE. Ejemplo: Create sequence nombreSec start with 1;

63

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Este comando nos inicializara una secuencia al nmero uno. Para movernos sobre la secuencia tenemos los mtodos nextval y currval. Aplicados sobre el ejemplo anterior sera: NombreSecuencia.NEXTVAL: Incrementa en 1 el valor de la secuencia. NombreSecuencia.CURRVAL: Devuelve el valor actual de la secuencia.

Los 2 mtodos devuelven un tipo number. Para eliminar una secuencia usamos el comando: DROP SEQUENCE nombreSecuencia.

27.4 Cmo aplicar la secuencia de numeracin Automtica de los Albaranes Ya hemos creado la secuencia en la base de datos, pero cmo la aplicamos en el campo cdigo? Para ello tendramos que crear un evento, algo parecido a los formularios de Access. El evento debe de actuar sobre el bloque de datos de cabecera, y el ms apropiado es PRE-INSERT. Dicho evento salta en el momento previo de la insercin de un registro. Para aadir el evento nos situamos en la pestaa disparadores de el bloque de datos y aadimos uno. En el editor de PL/SQL introducimos el siguiente cdigo:

Con ste cdigo, damos valor al textbox Cdigo del bloque de datos ALBARANES_CABECERA mediante la secuencia que tendramos que haber creado en la base de datos de ORACLE. DUAL es una tabla que viene por defecto en la base de datos de ORACLE y en la que podemos consultar cualquier valor. Recordemos que en PL/SQL las select siempre tienen que llevar la clausula into y slo pueden devolver un valor.

27.5 Cmo asignar la Fecha del Sistema (Fecha de Hoy) en el campo Fecha Una vez solucionado el campo de cdigo ahora nos interesa rellenar el campo de fecha. Seguramente nos interesar que el valor por defecto de una fecha sea la actual de sistema. Para ello aadimos la siguiente lnea en el evento creado anteriormente: :ALBARANES_CABECERA.FECHA:=sysdate; Con ste comando le damos el valor de la fecha actual al textbox FECHA de el bloque ALBARANES_CABECERA.

64

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

27.6 Creacin de una Lista de Valores para el Cdigo de Cliente Si nos fijamos en la imagen anterior del formulario de albaranes que hemos creado anteriormente vemos un botn al lado de el cdigo de cliente:

Para rellenar los campos de la cabecera necesitamos la tabla de clientes, y por lo tanto queremos coger los valores de dicha tabla y pasarlos a la tabla de cabeceras. Para ello usaremos una LOV. Para la creacin de la LOV primero aadiremos un RECORD_GROUP. Una posible consulta de la LOV ser: SELECT codigo,nif,nombre,direccion,poblacion,provincia,pais,telefono,email,fax,grupocliente s,dtodefecto,formapago FROM clientes ORDER BY codigo El siguiente paso es crear la LOV usando el RECORD_GROUP creado anteriormente. Una vez hemos creado la LOV vamos a editar su propiedad ms importante: Correspondencia de columnas. Esta propiedad nos permite actualizar los valores de la LOV en los campos del formulario que deseemos. Haremos el ejemplo sobre el campo de nombre:

En elemento de retorno pondremos el campo de destino del valor. En este caso es el campo nombre del bloque ALBARANES_CABECERA. Esta vez nos referimos al bloque de datos sin los dos puntos (:). Podemos seleccionar el ancho de visualizacin en la LOV y finalmente el ttulo que queremos que se muestre.

65

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Si se da el caso del que no queremos que se muestre el valor pero s vamos a utilizarlo en un futuro, el ancho de visualizacin tendr que valer 0. Este mismo ejemplo tendr que aplicarse a los campos que deseemos actualizar despus de seleccionar un valor en la LOV.

27.7 Cmo mostrar la LOV mediante un Botn Una de las posibilidades de mostrar una LOV es mediante un botn. El botn no es ms que un objeto del formulario con sus eventos correspondientes, es decir, podramos tener en un formulario un botn que no tuviera evento. Antes de aadirle el evento al botn vamos a editarlo con la pestaa de propiedades:

Un botn puede ser icnico, es decir, que tenga una imagen y no un texto. Para hacerlo icnico hemos cambiado su propiedad icnico a S y hemos expuesto el nombre del icono en la propiedad nombre de fichero del icono. Nunca pondremos la extensin del icono en ste campo. Seguramente nos resulta extrao que no haya sido necesario introducir ninguna ruta al nuestro icono. Esto es posible dado a que existe una variable de entorno en ORACLE llamada TK25_ICON.

66

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Esta variable contiene el nombre de la carpeta con los iconos que nos ofrece Developer para poder trabajar con los formularios:

Una vez editadas las propiedades vamos a crear el evento para el botn. El evento adecuado es WHEN_BUTTON_PRESSED. Pero cmo mostramos la LOV? Podramos hacerlo automticamente, tal y como vimos en temas anteriores, pero es mejor abrirla cuando cliquemos un botn. Para ello volvemos a introducir el concepto de Built-In. Los Built-in no sn ms que procedimientos que nos ofrece Developer y que nos solucionan un 90% de las funciones que le queremos dar a nuestro programa. En este caso existe un Built-in llamado SHOW_LOV. Creamos el procedimiento del evento WHEN_BUTTON_PRESSED en el elemento del botn: DECLARE a_value_chosen BOOLEAN; BEGIN a_value_chosen := Show_Lov('LOV_CLIENTES'); IF NOT a_value_chosen THEN Message('ERROR. No has seleccionado ningn valor'); Bell; RAISE Form_Trigger_Failure; END IF; END; Con este procedimiento mostramos una LOV llamada LOV_CLIENTES. Tambin hemos validado el caso de no seleccionar ningn valor, que mostara un mensaje de error en dicho caso.

67

BY DJBaRBaS & PeTaLiUa

Manual Oracle Developer 2000

Veamos el resultado:

Hemos configurado la LOV de tal manera que slo se nos muestre el campo Codigo, NIF y nombre. Les hemos dado sus ttulos correspondientes y establecido su anchura. Si hemos hecho la correspondencia de datos correctamente el resultado ser:

Haremos lo mismo con las lneas del albaran, pero esta vez trabajaremos sobre la tabla de artculos y no la de clientes.

27.8 Creacin de los Campos Calculados (Total de Fila y Total


Recommended