2012-08-27 28 views
5

oracle apex_application.gfnn öğesinin nasıl çalıştığını ve yalnızca Oracle ApEx'te standart SQL raporları için mi çalışacağını veya yalnızca SQL (Güncelleştirilebilir raporlar, yani tabular formlar) ile çalışıp çalışmadığını oldukça karıştırıyorum. Oracle Apex_Application.G_Fnn'yi Anlamak ve Nasıl Kullanılır

Temelde elde etmek çalışıyorum ne elde etmek çalışıyorum bu tür mümkündür veya rapor halinde sadece Standart SQL Raporu ama emin olmadığı bu örnek SQL, yani kullanarak aşağıdaki:

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 

Yukarıdaki sql'e dayanarak, bu sql sorgusunun 10 satır döndürdüğünü varsayalım. Şimdi benim sürüş kimliğim olarak onay kutusunu kullanarak, tüm tek kayıtların/satırların, yani 1,3,5,7,9 satırlarının onay kutularını işaretliyorum ve bu satırların her biri için, bir yorumla birlikte bir tarih değeri (f20) giriyorum. (f30)

Bunu göz önünde bulundurarak, kullanıcının "Kaydet" düğmesine bastığında, bu işaretli satırlar boyunca yinelemeye ve her kayıt, tarih ve yorumum için depolamaya başladığında çağrılan bir sayfa işlemi oluşturmak istiyorum. ama sadece seçtiğim satırlar için.

Yani yukarıdaki dayalı, ben şu sütunlu benim tabloda 5 haber satırları olması beklenebilir:

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 

Ne yazık ki apex_application.G_F10.COUNT

kullanarak bunu başarmak için nasıl emin değilim

Bu dizi öğelerinin (f20) ve f (f30) öğelerinin içeriğine, onay kutusunu işaretlediğim her satır için erişmek istiyorum.

Bu mümkün mü veya apex_application.G_Fnn'in nasıl çalıştığını yanlış anlamış mıyım?

Yukarıdakiler mümkün değilse, lütfen bunu nasıl başarabileceğimi bildirin.

Tablo raporlarına mı ihtiyacım var?

Herhangi bir yardım çok takdir edilecektir.

Teşekkürler.

+0

Tonsils, yeni sorunuzu http://stackoverflow.com/q/12163564/814048 kodumda çok aptalca bir hata yaptığımı fark etmemi sağladı. Cevabımı değiştirdim. Bunun için üzgünüm. – Tom

+0

Merhaba Tom - sorun yok. Cevabınızı değiştirdiğini ve şimdi daha net bir şekilde değerlendirildiğini takdir edin. Bir checbox senaryosunu tekrar kullanmam gerektiğinde bunu aklımda tutacağım. BTW, bu düzeltilmiş bir tablo bir SQL Updateable SQL raporu veya sadece standart bir rapor ile ilgilidir? – tonyf

+0

Standart raporla ne demek istediğinize bağlı! Tabular bir form için: kesinlikle evet çünkü burada çalıştığımız türden. – Tom

cevap

8

Çok yakınsınız.

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 

Kendi sütununda istemediğimden gizli öğeyi birleştiriyorum. Düzeni ile Messes.
Ayrıca, onay kutusu nasıl çalıştığı için gizli öğe var. Onay kutuları yalnızca kontrol edilen öğeler için değerlerini gönderir. Bu, dizi 10'un 3 değerine sahip olduğu anlamına gelir. Diğer diziler hala tüm satırların değerlerini içerir.
Bu yüzden gizli impnoyu tekrar ekledim: bu yüzden işaretli değerleri diğer satırlarla eşleştirebiliriz.

Açık sürecini gönderin: hata ayıklama seçeneğini kayıtları 2, 4 ve 6 etkinleştirmek,

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; 

Çalıştır sayfasını gönderin.

record selection and query output

ayıklama çıkışı:

debug output: BLAKE, JONES, FORD

şimdi yapmanız gereken o döngü içinde işleme konur.

+0

Teşekkürler Tom, ama sadece bir şey onaylamak istiyorum ve işlerde bir anahtar atmak isteyebilirsiniz, ama f20 ve f30 ile ilgili olarak, f20 bir kullanıcının bir veritabanı tablosu sütununda değil, f30 ile birlikte girdiği bir tarih alanı olduğunu varsayalım Bir kullanıcının bir yorum girip tekrar yazabileceği bir textarea alanı, bir veritabanı tablosu sütunundan değil. İşleminiz bu senaryo için hala geçerli olacak mı yoksa değişiklikler gerekli mi? – tonyf

+0

Aslında ne demek istediğine bağlı olarak değişir: standart bir sekmeli formda kullanmak istediğiniz standart çok satırlı işlemeyi kullanmayı planlıyorsanız: yapamazsınız. Ayrıca, el ile tablo formları ile tabular form doğrulamaları (doğrulama işleminde bildirilenler) bulunamaz. Ayrıca, eşzamanlı kullanıcılara sahip sistemlerde önemli olan kontrol toplamı ve optimal kilitleme de elde edemezsiniz. – Tom

+0

Oh ve hey, bir tarih alanı için apex_item.date_popup2'yi kullanabilirsiniz! – Tom