30 marzo 2011

¿Cómo localizar filas con valores duplicados en tablas de Oracle?


Por fin he dado con una solución práctica y sencilla para resolver éste problema, he aquí la solución:

SELECT NOMBRE,APELLIDO1,APELLIDO2
FROM BALUMNOS
GROUP BY NOMBRE,APELLIDO1,APELLIDO2
HAVING COUNT (*) > 1;

Esta sencilla sentencia SELECT devolverá las filas contenidas en la tabla BALUMNOS cuyos nombres y apellidos estén duplicados.

29 marzo 2011

La “Component Library”


El navegador o “Studio Browser” contiene muchas plantillas y asistentes (wizards) que nos facilitan la construcción de aplicaciones y como ya sabemos es posible cambiar o añadir contenidos, tanto sobre el “Studio Browser”, como sobre el “Component Store”. A continuación mostramos dos ejemplos: El primero se trata de una plantilla simple, mientras que en el segundo mostraremos como crear un sencillo asistente.

Primer ejemplo: Plantilla o “Template”, para la creación de un menú “Edición” personalizado.

1)     Pulse “botón-derecho” sobre la opción “Libraries” del navegador y escoja la opción “Show Comps.lbs”.
2)     Cree una nueva clase “Menú” y llámela “Edición”.
3)     Pulse “botón-derecho” sobre la clase recién creada y tras escoger la opción “Component Store Type…”, seleccione “Template”.

Pulse “doble-click” sobre la clase construida.

-->
 Añada el código siguiente según la opción correspondiente:

Deshacer: Standard menu command *Edit/11001 {Undo}
Cortar: Standard menu command *Edit/11002 {Cut}
Copiar: Standard menu command *Edit/11003 {Copy}
Pegar: Standard menu command *Edit/11004 {Paste}
Borrar: Standard menu command *Edit/11005 {Clear}
Seleccionar todo: Standard menu command *Edit/11006 {Select All}
Pegar desde archivo…: Standard menu command *Edit/11065 {Paste From File...}

4)     Finalmente oculte la librería de componentes (opción “Hide Comps.lbs”)

Ahora podrá encontrar bajo la opción “Class Wizard >> Menu… >> Templates”, una nueva opción denominada “Edción”, selecciónela y pulse el botón “Create” cada vez que desee añadirla a su biblioteca en construcción.

Segundo ejemplo: Asistente o “Wizard” para la creación de un menú “Archivo” personalizado.

1)     Pulse “botón-derecho” sobre la opción “Libraries” del navegador y escoja la opción “Show Comps.lbs”.
2)     Cree una nueva clase “Menú” y llámela “Archivo”.
3)     Pulse “botón-derecho” sobre la clase recién creada y tras escoger la opción “Component Store Type…”, seleccione “Wizard”.
4)     Cree una nueva clase “Object” y llámela “CreaMenuArchivo”
5)     Añada un método al objeto, llámelo “$start” y asígnele el código siguiente, así como las variables locales y de parámetros utilizadas al efecto.

De parámetro

pRef                               Item reference
pWindowClass              Character
pMenuLineText             Character

Variables locales

lAplicacion                    Character
lMethodTextRef             Item reference
lRefLine                         Item reference

Método

Do pRef.$title.$assign('Archivo')

Do pRef.$methods.$findname('$setup()') Returns lMethodTextRef

Do pRef.$methods.$remove(lMethodTextRef) Returns #F

Prompt for input Introduzca el nombre de su aplicación: /Nombre de la aplicación//15 Returns lAplicacion

If flag true

      Do pRef.$objs.$add(con('Registrar ',lAplicacion,'...')) Returns lRefLine

      Do lRefLine.$methods.$add('$event')

      Do lRefLine.$methods.$findname('$event') Returns lMethodTextRef

      Do lMethodTextRef.$methodtext.$assign(con("Do $prefs.$serialise(kTrue,'Datos de registro",lAplicacion,"',24)")) Returns #F

      Do pRef.$objs.$add('')

      Do pRef.$objs.$add(con('Imprimirá en "',sys(24),'"...')) Returns lRefLine

      Do lRefLine.$methods.$add('$event')

      Do lRefLine.$methods.$findname('$event') Returns lMethodTextRef

      Do lMethodTextRef.$methodtext.$assign("Standard menu command *File/11090 {Print Destination '$'...}") Returns #F

      Do pRef.$objs.$add('Ajustar página...') Returns lRefLine

      Do lRefLine.$methods.$add('$event')

      Do lRefLine.$methods.$findname('$event') Returns lMethodTextRef

      Do lMethodTextRef.$methodtext.$assign("Standard menu command *File/11064 {Page Setup...}") Returns #F

      Do pRef.$objs.$add('Imprimir') Returns lRefLine

      Do lRefLine.$methods.$add('$event')

      Do lRefLine.$methods.$findname('$event') Returns lMethodTextRef

      Do lMethodTextRef.$methodtext.$assign("Print top window") Returns #F

      Do pRef.$objs.$add('Imprimir informe guardado...') Returns lRefLine

      Do lRefLine.$methods.$add('$event')

      Do lRefLine.$methods.$findname('$event') Returns lMethodTextRef

      Do lMethodTextRef.$methodtext.$assign("Standard menu command *File/11079 {Print Report From Disk... }") Returns #F

End If

Tras esto sólo nos quedará añadir un método al menú “Archivo” creado anteriormente, al que denominaremos “$setup()”, con el código siguiente:

Variables locales

lObjeto                           Object                    ComponentLibrary.CreaMenuArchivo

Método

Do lObjeto.$start($cclass().$ref)

6)     Finalmente oculte la librería de componentes (opción “Hide Comps.lbs”)

Ahora podrá encontrar bajo la opción “Class Wizard >> Menu…”, una nueva opción denominada “Archivo”, tras seleccionarla y pulsar el botón “Create” se le solicitará un nombre de aplicación, que será utilizado para componer la opción “Acerca de..” del menú “Archivo”.