2012-08-27 38 views
5

Estoy bastante confundido con el funcionamiento de Oracle apex_application.gfnn y si solo funciona para informes SQL estándar en Oracle ApEx o solo con SQL (informes actualizables, es decir, formularios tabulares).Entender Oracle Apex_Application.G_Fnn y cómo usarlo

Básicamente estoy tratando de lograr lo siguiente utilizando este SQL muestra, que es sólo un informe de SQL estándar, pero sin saber si lo que estoy tratando de lograr es posible con este tipo o informe, es decir:

select id, 
     name, 
     telephone, 
     apex_item.checkbox2(10,id) as "Tick when Contacted", 
     apex_item.text(20,my_date) as "Date Contacted", 
     apex_item.textarea(30,my_comment,5,80) as "Comment" 
from my_table 

En función del sql anterior, supongamos que esta consulta SQL devuelve 10 filas. Ahora, usando la casilla de verificación como mi ID de conducción, marque la casilla de todos los registros/filas impares, es decir, las filas 1,3,5,7,9 y para cada una de estas filas, también ingrese un valor de fecha (f20) junto con un comentario (f30)

Teniendo esto en cuenta, quiero crear un proceso de página que se llama cuando el usuario presiona el botón "Guardar" que recorrerá estas filas marcadas y almacenará para cada registro, mi fecha y mi comentario pero solo para las filas que he seleccionado.

Así base en lo anterior, yo esperaría a tener 5 filas de noticias en mi mesa, de las siguientes columnas:

ID  MY_DATE  MY_COMMENT 
1  26/08/2012 Comment A 
3  27/08/2012 Comment B 
5  28/08/2012 Comment C 
7  29/08/2012 Comment D 
9  30/08/2012 Comment E 

Desafortunadamente estoy seguro de como hacer esto utilizando apex_application.G_F10.COUNT

Quiero poder acceder al contenido de cada uno de estos elementos de la matriz (f20) yf (f30) para cada fila con la que he marcado la casilla de verificación.

¿Es esto posible o he entendido mal cómo funciona apex_application.G_Fnn?

Si lo anterior no es posible, por favor déjenme saber cómo puedo lograr esto?

¿Necesito un informe tabular?

Cualquier ayuda sería muy apreciada.

Gracias.

+0

Amígdalas, su nueva pregunta http://stackoverflow.com/q/12163564/814048 me hizo darme cuenta de que cometí un error muy estúpido en mi código. Enmendé mi respuesta. Lo siento por eso. – Tom

+0

Hola Tom: sin problemas. Aprecie que enmendó su respuesta, también mucho más clara ahora. Mantendré esto en mente cuando necesite usar un escenario Checbox nuevamente. Por cierto, ¿esta respuesta modificada se relaciona con un informe tabular de SQL Updateable SQL o simplemente un informe estándar? – tonyf

+0

Depende de lo que quiere decir con el informe estándar! Para una forma tabular: definitivamente sí, ya que ese es el tipo con el que estamos trabajando aquí. – Tom

Respuesta

8

Estás muy cerca.

select apex_item.checkbox2(10, empno) select_me, 
apex_item.text(20, empno) empno, 
apex_item.text(30, ename)||apex_item.hidden(50, empno) ename 
from emp 

Estoy concatenando el elemento escondido porque no lo quiero en su propia columna. Se ensucia con el diseño.
Además, el elemento oculto está allí debido a cómo funcionan las casillas de verificación. Las casillas de verificación solo presentan sus valores para los elementos marcados. Esto significa que la matriz 10 tiene 3 valores. Las otras matrices todavía contendrían los valores para todas las filas.
Es por eso que agregué el empno oculto de nuevo: para que podamos hacer coincidir los valores marcados con las otras filas.

El proceso de confirmación:

DECLARE 
    v_empno emp.empno%TYPE; 
    v_ename emp.ename%TYPE; 
BEGIN 
    --f10: checkbox 
    --f20: empno 
    --f30: ename 
    --f50: empno again 
    for i in 1..apex_application.g_f10.count 
    loop 
     for j in 1..apex_application.g_f50.count loop 
     if apex_application.g_f10(i) = apex_application.g_f50(j) 
     then   
      -- access values for the selected rows in the other arrays 
      v_empno := apex_application.g_f20(j); 
      v_ename := apex_application.g_f30(j); 

      apex_debug_message.log_message('Employee: '||v_empno||' - '||v_ename); 
     end if; 
     end loop; 
    end loop; 
END; 

página Run, permitirá depurar, seleccione los registros 2, 4 y 6, se someten.

record selection and query output

La salida de depuración:

debug output: BLAKE, JONES, FORD

Todo lo que ahora tiene que hacer es poner el procesado de ese bucle.

+0

Gracias de nuevo Tom pero solo quiero confirmar algo y puede lanzar una llave inglesa en las obras, pero con respecto a f20 y f30, supongamos que f20 es un campo de fecha que un usuario realmente ingresa y no desde una columna de tabla de base de datos, junto con f30 , que es un campo de área de texto en el que un usuario puede ingresar un comentario y nuevamente no es de una columna de tabla de base de datos. ¿Su procesamiento seguirá funcionando para este escenario o se requieren cambios? – tonyf

+0

Depende de lo que realmente signifique: si planea usar el procesamiento estándar de varias filas que usaría para una forma tabular estándar: no puede. Además, con los formularios tabulares manuales no puede tener validaciones de formularios tabulares (declaradas en el punto de procesamiento de validaciones). Tampoco obtienes suma de comprobación ni bloqueo óptimo, que son importantes en los sistemas con usuarios simultáneos. – Tom

+0

¡Oh, hola, podrías usar apex_item.date_popup2 para un campo de fecha! – Tom

Cuestiones relacionadas