2012-08-27 11 views
5

Sono abbastanza confuso con il funzionamento di oracle apex_application.gfnn e se funziona solo con report SQL standard in Oracle ApEx o solo con SQL (report aggiornabili, ovvero moduli tabulari).Informazioni su Oracle Apex_Application.G_Fnn e come utilizzarlo

Fondamentalmente io sto cercando di realizzare quanto segue usando questo SQL di esempio, che è solo uno SQL rapporto standard ma incerto se quello che sto cercando di realizzare è possibile con questo tipo o relazione, vale a dire:

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 

In base allo sql precedente, si supponga che questa query sql restituisca 10 righe. Ora usando la casella di controllo come mio id di guida, spunta la casella di controllo di tutti i record/righe dispari, cioè righe 1,3,5,7,9 e per ognuna di queste righe, inserisco anche un valore di data (f20) insieme a un commento (f30)

Tenendo presente questo, voglio quindi creare un processo di pagina che viene chiamato quando l'utente preme il pulsante "Salva" che eseguirà l'iterazione tra queste righe controllate e memorizzerà per ogni record, la mia data e il mio commento ma solo per le righe che ho selezionato.

Quindi, sulla base di quanto sopra, mi sarei aspettato di avere 5 file di notizie in mio tavolo con le seguenti colonne:

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 

Purtroppo non sono sicuro come raggiungere questo obiettivo utilizzando apex_application.G_F10.COUNT

Voglio poter accedere al contenuto di ciascuno di questi elementi dell'array (f20) ef (f30) per ogni riga con cui ho spuntato la casella di controllo.

È possibile o ho frainteso come funziona apex_application.G_Fnn?

Se quanto sopra non è possibile, fammi sapere come posso ottenere questo?

Ho bisogno di un rapporto tabellare?

Qualsiasi aiuto sarebbe molto apprezzato.

Grazie.

+0

Tonsille, la tua nuova domanda http://stackoverflow.com/q/12163564/814048 mi ha fatto capire che ho fatto un errore molto stupido nel mio codice. Ho modificato la mia risposta. Mi dispiace per quello – Tom

+0

Ciao Tom - nessun problema. Apprezzo che tu abbia modificato la tua risposta, anche ora molto più chiara. Terrò questa idea quando ho bisogno di usare di nuovo uno scenario di checbox. A proposito, questa risposta modificata si riferisce a un report SQL tabellare SQL aggiornabile o solo a un report standard? – tonyf

+0

Dipende cosa intendi con rapporto standard! Per una tabella tabulare: sicuramente sì dato che è il tipo con cui stiamo lavorando qui. – Tom

risposta

8

Sei molto vicino.

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 

Sto concatenando l'elemento nascosto poiché non lo voglio nella sua colonna. Pasticci con il layout.
Inoltre, l'elemento nascosto è lì a causa di come funzionano le caselle di controllo. Le caselle di controllo inviano solo i loro valori per gli elementi selezionati. Ciò significherebbe che l'array 10 ha 3 valori. Gli altri array contengono ancora i valori per tutte le righe.
Questo è il motivo per cui ho aggiunto di nuovo l'empno nascosto: in questo modo possiamo associare i valori controllati alle altre righe.

Sul processo di conferma:

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; 

pagina Run, abilitare il debug, selezionare record 2, 4 e 6, presentare.

record selection and query output

output di debug:

debug output: BLAKE, JONES, FORD

Tutto quello che occorre fare è mettere il vostro trattamento in quel ciclo.

+0

Grazie ancora Tom ma voglio solo confermare qualcosa e lanciare una chiave inglese nei lavori, ma per quanto riguarda f20 e f30, supponiamo che f20 sia un campo data che un utente digita effettivamente e non da una colonna della tabella del database, insieme a f30 , che è un campo textarea in cui un utente può inserire un commento e di nuovo non proviene da una colonna della tabella del database. La tua elaborazione funzionerà ancora per questo scenario o sono necessarie modifiche? – tonyf

+0

Dipende da cosa intendi in realtà: se pensi di utilizzare l'elaborazione multi-riga standard che utilizzerai per un modulo tabulare standard: non puoi. Inoltre, con i moduli tabulari manuali non è possibile avere convalide di moduli tabulari (dichiarati nel punto di elaborazione delle convalide). Inoltre non si ottiene il checksum e il blocco ottimale, che sono importanti nei sistemi con utenti concorrenti. – Tom

+0

Oh, ehi, potresti usare apex_item.date_popup2 per un campo data! – Tom

Problemi correlati