2012-08-27 10 views
5

मैं ओरेकल apex_application.gfnn कैसे काम करता हूं और यह केवल ओरेकल एपेक्स में मानक SQL रिपोर्ट के लिए या केवल SQL (अद्यतन करने योग्य रिपोर्ट, यानी टैब्यूलर रूपों) के साथ मानक SQL रिपोर्ट के लिए काम करता है।ओरेकल Apex_Aplication.G_Fnn को समझना और इसका उपयोग कैसे करें

असल में मैं प्राप्त करने के लिए कोशिश कर रहा हूँ इस नमूने एसक्यूएल, जो सिर्फ एक मानक SQL रिपोर्ट लेकिन अनिश्चित है कि मैं क्या हासिल करने की कोशिश कर रहा हूँ इस प्रकार के साथ संभव है या रिपोर्ट यदि अर्थात का उपयोग कर निम्न:

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 

उपरोक्त एसक्यूएल के आधार पर, मान लें कि यह एसक्यूएल क्वेरी 10 पंक्तियां लौटाती है। अब मेरी ड्राइविंग आईडी के रूप में चेकबॉक्स का उपयोग करके, मैं सभी विषम रिकॉर्ड/पंक्तियों, यानी पंक्तियों में से प्रत्येक के लिए चेकबॉक्स चेक करता हूं और इनमें से प्रत्येक पंक्ति के लिए, मैं एक टिप्पणी मूल्य (एफ 20) भी एक टिप्पणी के साथ दर्ज करता हूं (एफ 30)

इसे ध्यान में रखते हुए, मैं फिर एक पृष्ठ प्रक्रिया बनाना चाहता हूं जिसे उपयोगकर्ता "सहेजें" बटन दबाता है जो इन चेक पंक्तियों के माध्यम से फिर से चालू होगा और प्रत्येक रिकॉर्ड, मेरी तिथि और मेरी टिप्पणी के लिए स्टोर करेगा लेकिन केवल उन पंक्तियों के लिए जिन्हें मैंने चुना है।

तो ऊपर के आधार पर, मैं अपनी तालिका में 5 खबर पंक्तियों की उम्मीद करेंगे निम्नलिखित कॉलम के साथ:

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 

दुर्भाग्य से मैं अनिश्चित कैसे apex_application.G_F10.COUNT

का उपयोग कर इस लक्ष्य को हासिल करने के लिए कर रहा हूँ

मैं प्रत्येक पंक्ति के लिए इन सरणी तत्वों (एफ 20) और एफ (एफ 30) की सामग्री तक पहुंचने में सक्षम होना चाहता हूं, जिसके साथ मैंने चेकबॉक्स को चुना है।

क्या यह संभव है या क्या मुझे गलत समझा गया है कि apex_application.G_Fnn कैसे काम करता है?

यदि उपरोक्त संभव नहीं है, तो कृपया मुझे बताएं कि मैं इसे कैसे प्राप्त कर सकता हूं?

क्या मुझे एक सारणीबद्ध रिपोर्ट की आवश्यकता है?

किसी भी मदद की बहुत सराहना की जाएगी।

धन्यवाद।

+0

टोंसिल, आपका नया प्रश्न http://stackoverflow.com/q/12163564/814048 मुझे एहसास हुआ कि मैंने अपने कोड में एक बहुत बेवकूफ गलती की है। मैंने अपना जवाब संशोधित किया। उसके लिए माफ़ करना। – Tom

+0

हाय टॉम - कोई समस्या नहीं है। सराहना करें कि आपने अपना जवाब संशोधित किया है, अब भी बहुत स्पष्ट है। जब मैं एक checbox परिदृश्य फिर से उपयोग करने की जरूरत है मैं इस दिमाग को रखूंगा। बीटीडब्लू, क्या यह संशोधित उत्तर एक सारणीबद्ध एसक्यूएल अपडेट करने योग्य एसक्यूएल रिपोर्ट या सिर्फ एक मानक रिपोर्ट से संबंधित है? – tonyf

+0

मानक रिपोर्ट के साथ आपका क्या मतलब है निर्भर करता है! एक सारणीबद्ध रूप के लिए: निश्चित रूप से हाँ, क्योंकि यह वही तरीका है जिसके साथ हम यहां काम कर रहे हैं। – Tom

उत्तर

8

आप बहुत करीब हैं।

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 

मैं छुपे हुए आइटम को जोड़ रहा हूं क्योंकि मैं इसे अपने कॉलम में नहीं चाहता हूं। लेआउट के साथ मेस।
इसके अलावा, छुपा आइटम वहां है क्योंकि चेकबॉक्स कैसे काम करते हैं। चेकबॉक्स केवल चेक किए गए आइटमों के लिए अपने मान सबमिट करते हैं। इसका मतलब यह होगा कि सरणी 10 में 3 मान हैं। अन्य सरणी में अभी भी सभी पंक्तियों के मान शामिल होंगे।
यही कारण है कि मैंने छुपा empno फिर से जोड़ा: इसलिए हम चेक किए गए मानों को अन्य पंक्तियों से मेल कर सकते हैं।

पर प्रक्रिया प्रस्तुत:,

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; 

भागो पेज डिबग, चयन रिकॉर्ड 2, 4 और 6 को सक्षम, सबमिट करें।

record selection and query output

डिबग आउटपुट:

debug output: BLAKE, JONES, FORD

तुम सब अब क्या करने की जरूरत है कि पाश में अपने संसाधन डाल दिया है।

+0

धन्यवाद फिर से टॉम, लेकिन सिर्फ कुछ पुष्टि करना चाहते हैं और कार्यों में एक स्पैनर फेंक सकते हैं, लेकिन एफ 20 और एफ 30 के संबंध में, मान लें कि एफ 20 एक डेट फ़ील्ड है जो उपयोगकर्ता वास्तव में डेटाबेस तालिका कॉलम से टाइप करता है और नहीं, f30 के साथ , जो एक टेक्स्टरेरा फ़ील्ड है जिसे उपयोगकर्ता एक बार टिप्पणी दर्ज कर सकता है डेटाबेस तालिका कॉलम से नहीं है। क्या आपकी प्रसंस्करण अभी भी इस परिदृश्य के लिए काम करेगी या बदलाव आवश्यक हैं? – tonyf

+0

यह वास्तव में आपके वास्तविक अर्थों पर निर्भर करता है: यदि आप मानक बहु-पंक्ति प्रसंस्करण का उपयोग करने की योजना बना रहे हैं जिसका उपयोग आप मानक टैब्यूलर फ़ॉर्म के लिए करेंगे: आप नहीं कर सकते। साथ ही, मैन्युअल टैब्यूलर रूपों के साथ आपके पास टैब्यूलर फॉर्म सत्यापन नहीं हो सकते हैं (सत्यापन प्रक्रियाओं में घोषित किए गए हैं)। आपको चेकसमिंग और इष्टतम लॉकिंग भी नहीं मिलती है, जो समवर्ती उपयोगकर्ताओं के साथ सिस्टम में महत्वपूर्ण हैं। – Tom

+0

ओह और हे, आप डेट फ़ील्ड के लिए apex_item.date_popup2 का उपयोग कर सकते हैं! – Tom

संबंधित मुद्दे