How to update Manual Tabular Form
Hi There,
I have a manual tabular form on an apex 4.1 page and I would like to update the records when I click on a submit button.
Below is the query of the form:
SELECT '#ROWNUM#' sno,
apex_item.checkbox(01, wo_line_id) del,
apex_item.hidden(02,wo_line_id)||apex_item.hidden(03,wwv_flow_item.md5(adjusted_amount)) wo_line_id,
apex_item.text(17, adjusted_amount, 10, 10,'onchange="set_innerHTML(this);"','f17_' ||'#ROWNUM#') adjusted_amount
from work_order_lines
where wo_header_id = :P302_WO_HEADER_ID;
Below is the code in the "After Submit" process
DECLARE
v_header_result VARCHAR2(1);
v_line_result VARCHAR2(1);
v_error_count NUMBER:= 0;
BEGIN
FOR i in 1..apex_application.g_f02.COUNT
LOOP
BEGIN
update_wo_lines_prc(:APP_USER
,:P302_WO_HEADER_ID
,APEX_APPLICATION.G_F02(i)
,APEX_APPLICATION.G_F17(i)
,v_line_result);
END;
END LOOP;
COMMIT;
END;
Somehow the LOOP doesn't get executed.
Please advise.
Thanks
Yogi
Hi,
I found the reason for this.
For the column wo_line_id the show option in the report attributes was not checked.
Thats why apex_application.g_f02.count is returning 0 and the loop was never executed.
Thanks
Yogi
Similar Messages
-
How to Multi Row Update function in Manual Tabular Form
Hi All,
In my application I am using manual tabular form, for Update and insert i have written pl/sql process,
but i want to make use of MULTI_ROW_UPDATE function for update and insert operations.
How can I implement default tabular form behaviour in manual tabular form.
I am using:
Oracle Database 11g
ApEx Version 4.0
please help me, it's urgent.
thanks
MRHi Joao,
First Can u pl let us know your view is based on how many
tables?
If it is a simple view ,you can open the form in update mode
passing a parameter to it thru a procedure or thru a url or what
ever you feel like(form to form,etc)..I will give you an example
on how to open the form in update mode like below..
1.develop a form based on a simple view
2.Call that form Thru a simple URL
3.In the above you are opening a form with module id
ex:1234567890 in update mode and change portal30 to suit
accordingly..
4.You are passing a parameter called "ABCDEF" TO "NAME" Field to
that form for querrying..
5.Now the form will be opened in update mode and all the fields
are pertaining to the parameter "ABCDEF" and you can update the
fields....
II..Now regarding the check boxes i need to know which version
of the portal are u using..As for as my knowledge goes (up to
3.0.6) there are lot of bugs with the check boxes and check box
checked value is always "yes"(if u want to insert in to the data
base).So try not to depend on checkboxes and instead Combo is
the right answer till oracle portal is free of bugs.
No triggers are required for your requirement....
Hope i have answered your problem ...If any please revert back
with full details
Thanks
Vishnu Singireddy -
Issue with APEX_ITEM.CHECKBOX in Manual Tabular Form report
Hi,
I have a simple manual tabular form report with query :
SELECT
APEX_ITEM.CHECKBOX(1,order_id) ,
APEX_ITEM.TEXT(3,Ord_number) ,
APEX_ITEM.TEXT(4,ord_flag)
from
tbl_order
and a process to update the value of Ord_number & ord_flag columns for the selected (Checked) rows.
FOR i in 1..apex_application.g_f01.count
loop
UPDATE
tbl_order
SET
Ord_number = apex_application.g_f03(i),
ord_flag = apex_application.g_f04(i)
WHERE
order_id = apex_application.g_f01(i);
END LOOP;
But the values getting updated wrongly , how can I ensure the exact values is retrieved in apex_application.g_f03(i) & apex_application.g_f04(i) ?
Regards.
BenzI think the row selector is there if you create an tabular form. However, you can create it yourself following this example:
http://apex.oracle.com/pls/otn/f?p=31517:170
Basically,
apex_item.checkbox (30,
'#ROWNUM#',
'onclick="highlight_row(this,' || ROWNUM || ')"',
NULL,
'f30_' || LPAD (ROWNUM, 4, '0')
) delete_checkboxDenes Kubicek
http://deneskubicek.blogspot.com/
http://www.opal-consulting.de/training
http://apex.oracle.com/pls/otn/f?p=31517:1
http://www.amazon.de/Oracle-APEX-XE-Praxis/dp/3826655494
------------------------------------------------------------------- -
Hi everyone,
I have created a maual tabular form with the help of (HOW TO) document in OTN.For that I wrote maual update and manual delete process and evething is working fine.But in the manual update process i did not include the code to compare the checksum of the submitted data with the old data (still its working fine).But in my application i have created several manual tabular forms like this .Do the application get any problem in the futher as i am not checking the checksum.If i compare the checksum i am getting error.I decoded that error by
inserting the checksum values to a (test table).The checksum values for a row is changing even if there is no change in the data of the table.
any suggestions please
Here is my code
declare
l_cks wwv_flow_global.vc_arr2;
j pls_integer := 1;
begin
-- Get original MD5 checksum
-- select wwv_flow_item.md5( column1,column2,column3,column4) cks
-- BULK COLLECT INTO
--l_cks
-- from table;
-- Compare the original checksum, l_cks,
-- with submitted checksum, htmldb_application.g_fcs.
-- If they are different, raise an error.
-- for i in 1..l_cks.count
--loop
--if htmldb_application.g_fcs(i) != l_cks(i) then
-- rollback;
--raise_application_error(
-- -20001,
-- 'Current version of data in database has changed '||
-- 'since user initiated update process.');
-- return;
--end if;
--end loop;
-- update EMP
for i in 1..htmldb_application.g_f07.count
loop
if htmldb_application.g_f07(i) is not null then
update table
set
column2 = replace(htmldb_application.g_f08(i),'%'||'null%',NULL)
where column1 = htmldb_application.g_f07(i);
else
if htmldb_application.g_f08(i) is not null then
insert into table
( column1 ,
column2,
column3)
values
replace(htmldb_application.g_f08(i),'%'||'null%',NULL));
end if;
end if;
end loop;
end;
Thanks
phaniPhani,
I don't understand what you have working, what does not work, and what that code does (much of it is commented out). Can you put an example on apex.oracle.com that shows the problem?
Scott -
Checksum error in Manual Tabular Form
Hi everyone,
I have created 2 (manual tabular forms) on a same page but i am getting checksum error for one of the tabular form.
Here is my code:
1 st Tabular Form:
select
x.del,
x.ECGEXST_ID,
x.LEAD_CD,
x.ST_ID,
x.ENTERED_DTS,
X.ENTERED_BY_NM,
X.UPDATED_DTS,
X.UPDATED_BY_NM,
x.cks
from (
select
htmldb_item.checkbox(1,ECGEXST_ID) del,
htmldb_item.hidden(2,ECGEXST_ID) ECGEXST_ID,
htmldb_item.select_list_from_query (3, LEAD_CD,'select lead_cd , lead_cd from lslead order by display_seq ',15) LEAD_CD,
htmldb_item.select_list_from_query(5,ST_ID,'select lkup_dsc,lkup_id from lkup where lkup_grp_id = 17',25) ST_ID,
wwv_flow_item.display_and_save(6,to_char(ENTERED_DTS,'MM/DD/YYYY')) ENTERED_DTS,
au.LAST_NM || ', ' || au.FIRST_NM ENTERED_BY_NM,
wwv_flow_item.display_and_save(7,to_char(UPDATED_DTS,'MM/DD/YYYY')) UPDATED_DTS,
au1.LAST_NM || ', ' || au1.FIRST_NM UPDATED_BY_NM,
htmldb_item.md5_checksum(ECGEXDT_ID,LEAD_CD,ST_ID,ENTERED_DTS,ENTERED_BY_MSPR_ID) cks
from ECGEXST,
app_user au,app_user au1 where au.MSPR_ID(+) = ECGEXST.ENTERED_BY_MSPR_ID and au1.MSPR_ID(+) = ECGEXST.UPDATED_BY_MSPR_ID
and ECGEXDT_ID = :P65_ECGEXDT_ID
union all
select
htmldb_item.checkbox(1,null) del,
htmldb_item.hidden(2,null) ECGEXST_ID,
htmldb_item.select_list_from_query (3,null,'select lead_cd , lead_cd from lslead order by display_seq ',15) LEAD_CD,
htmldb_item.select_list_from_query(5,null,'select lkup_dsc,lkup_id from lkup where lkup_grp_id = 17',25) ST_ID,
wwv_flow_item.display_and_save(6,null) ENTERED_DTS,
null ENTERED_BY_NM,
wwv_flow_item.display_and_save(7,null) UPDATED_DTS,
null UPDATED_BY_NM,
htmldb_item.md5_checksum(null,null,null,null,null) cks
from dual) x
UPDATE PROCESS:
declare
l_cks wwv_flow_global.vc_arr2;
j pls_integer := 1;
val1 varchar2(100);
val2 varchar2(100);
begin
-- Get original MD5 checksum
select wwv_flow_item.md5(ECGEXDT_ID,LEAD_CD,ST_ID,ENTERED_DTS,ENTERED_BY_MSPR_ID) cks
BULK COLLECT INTO
l_cks
from ECGEXST where ECGEXDT_ID = :P65_ECGEXDT_ID;
-- Compare the original checksum, l_cks,
-- with submitted checksum, htmldb_application.g_fcs.
-- If they are different, raise an error.
for i in 1..l_cks.count
loop
if htmldb_application.g_fcs(i) != l_cks(i) then
rollback;
raise_application_error(
-20001,
'Current version of data in database has changed '||
'since user initiated update process.');
-- return;
end if;
end loop;
-- update ECGRSTST
for i in 1..htmldb_application.g_f02.count
loop
if htmldb_application.g_f02(i) is not null then
update ECGEXST
set
ECGEXDT_ID = :P65_ECGEXDT_ID,
LEAD_CD = replace(htmldb_application.g_f03(i),'%'||'null%',NULL),
ST_ID = replace(htmldb_application.g_f05(i),'%'||'null%',NULL)
where ECGEXST_ID = htmldb_application.g_f02(i);
else
if htmldb_application.g_f03(i) is not null then
insert into ECGEXST
(ECGEXST_ID ,
ECGEXDT_ID,
LEAD_CD,
ST_ID)
values
(ECGEXST_SEQ.nextval,
:P65_ECGEXDT_ID,
replace(htmldb_application.g_f03(i),'%'||'null%',NULL),
replace(htmldb_application.g_f05(i),'%'||'null%',NULL));
end if;
end if;
end loop;
end;
The first tabular form is working fine.But for the second tabular form i am getting the checksum error.I have created a test table and checked the checksum values.The checksum values are changing.
Here is the code of my 2nd tabularform:
select
x.del,
x.ECGEXT_ID,
x.LEAD_CD,
x.T_ID,
x.ENTERED_DTS,
X.ENTERED_BY_NM,
X.UPDATED_DTS,
X.UPDATED_BY_NM,
x.cks
from (
select
htmldb_item.checkbox(11,ECGEXT_ID) del,
htmldb_item.hidden(12,ECGEXT_ID) ECGEXT_ID,
htmldb_item.select_list_from_query (13, LEAD_CD,'select lead_cd , lead_cd from lslead order by display_seq ',15) LEAD_CD,
htmldb_item.select_list_from_query(15,T_ID,'select lkup_dsc,lkup_id from lkup where lkup_grp_id = 18',25) T_ID,
wwv_flow_item.display_and_save(16,to_char(ENTERED_DTS,'MM/DD/YYYY')) ENTERED_DTS,
au.LAST_NM || ', ' || au.FIRST_NM ENTERED_BY_NM,
wwv_flow_item.display_and_save(17,to_char(UPDATED_DTS,'MM/DD/YYYY')) UPDATED_DTS,
au1.LAST_NM || ', ' || au1.FIRST_NM UPDATED_BY_NM,
htmldb_item.md5_checksum(ECGEXDT_ID,LEAD_CD,T_ID,ENTERED_DTS,ENTERED_BY_MSPR_ID) cks
from ECGEXT,
app_user au,app_user au1 where au.MSPR_ID(+) = ECGEXT.ENTERED_BY_MSPR_ID and au1.MSPR_ID(+) = ECGEXT.UPDATED_BY_MSPR_ID
and ECGEXDT_ID = :P65_ECGEXDT_ID
union all
select
htmldb_item.checkbox(11,null) del,
htmldb_item.hidden(12,null) ECGEXT_ID,
htmldb_item.select_list_from_query (13,null,'select lead_cd , lead_cd from lslead order by display_seq ',15) LEAD_CD,
htmldb_item.select_list_from_query(15,null,'select lkup_dsc,lkup_id from lkup where lkup_grp_id = 18',25) T_ID,
wwv_flow_item.display_and_save(16,null) ENTERED_DTS,
null ENTERED_BY_NM,
wwv_flow_item.display_and_save(17,null) UPDATED_DTS,
null UPDATED_BY_NM,
htmldb_item.md5_checksum(null,null,null,null,null) cks
from dual) x
UPDATE PROCESS:
declare
l_cks wwv_flow_global.vc_arr2;
j pls_integer := 1;
val1 varchar2(100);
val2 varchar2(100);
begin
-- Get original MD5 checksum
select wwv_flow_item.md5(ECGEXDT_ID,LEAD_CD,T_ID,ENTERED_DTS,ENTERED_BY_MSPR_ID) cks
BULK COLLECT INTO l_cks
from ECGEXT where ECGEXDT_ID = :P65_ECGEXDT_ID;
-- Compare the original checksum, l_cks,
-- with submitted checksum, htmldb_application.g_fcs.
-- If they are different, raise an error.
for i in 1..l_cks.count
loop
if htmldb_application.g_fcs(i) != l_cks(i) then
-- val1 := htmldb_application.g_fcs(i);
-- val2 := l_cks(i);
-- insert into test2 (val_1,val_2) values (val1,val2);
rollback;
raise_application_error(
-20001,
'Current version of data in database has changed '||
'since user initiated update process.');
return;
end if;
end loop;
-- update ECGRSTST
for i in 1..htmldb_application.g_f12.count
loop
if htmldb_application.g_f12(i) is not null then
update ECGEXT
set
ECGEXDT_ID = :P65_ECGEXDT_ID,
LEAD_CD = replace(htmldb_application.g_f13(i),'%'||'null%',NULL),
T_ID = replace(htmldb_application.g_f15(i),'%'||'null%',NULL)
where ECGEXT_ID = htmldb_application.g_f12(i);
else
if htmldb_application.g_f13(i) is not null then
insert into ECGEXT
(ECGEXT_ID ,
ECGEXDT_ID,
LEAD_CD,
T_ID)
values
(ECGEXT_SEQ.nextval,
:P65_ECGEXDT_ID,
replace(htmldb_application.g_f13(i),'%'||'null%',NULL),
replace(htmldb_application.g_f15(i),'%'||'null%',NULL));
end if;
end if;
end loop;
end;
please help me in solving this.The same code its good for one tabular form and for the other it giving the checksum error.
Thanks in advance
phaniHi patrick,
Thanks for the reply i am getting the checksum error even if i used my primary key in the select statement of the MD5 checksum.
My primary key in the second tabular form is
htmldb_item.hidden(12,ECGEXT_ID) ECGEXT_ID
so i changed the process to:
for i in 1..htmldb_application.g_f12.count
loop
if htmldb_application.g_f12(i) is not null
then
select wwv_flow_item.md5(ECGEXDT_ID,LEAD_CD,T_ID,ENTERED_DTS,ENTERED_BY_MSPR_ID) cks
BULK COLLECT INTO l_cks
from ECGEXT where ECGEXT_ID = htmldb_application.g_f12(i);
-- Compare the original checksum, l_cks,
-- with submitted checksum, htmldb_application.g_fcs.
-- If they are different, raise an error.
if htmldb_application.g_fcs(i) != l_cks(i) then
-- val1 := htmldb_application.g_fcs(i);
-- val2 := l_cks(i);
-- insert into test2 (val_1,val_2) values (val1,val2);
rollback;
raise_application_error(
-20001,
'Current version of data in database has changed '||
'since user initiated update process.');
end if;
end if;
end loop;
It's not possible to use BULK COLLECT to get the MD5 checksum of all >>>rows. Because the index positions in the MD5 array and the >>>apex_application.g_fxx array index will probably not match, especially if you >>>don't order or if you are on a second page.How come the first tabular form is running i used the bulk collect in the first tabular form
HERE IS THE CODE FOR THE FIRST TABULAR FORM:
-- Get original MD5 checksum
select wwv_flow_item.md5(ECGEXDT_ID,LEAD_CD,ST_ID,ENTERED_DTS,ENTERED_BY_MSPR_ID) cks
BULK COLLECT INTO
l_cks
from ECGEXST where ECGEXDT_ID = :P65_ECGEXDT_ID;
-- Compare the original checksum, l_cks,
-- with submitted checksum, htmldb_application.g_fcs.
-- If they are different, raise an error.
for i in 1..l_cks.count
loop
if htmldb_application.g_fcs(i) != l_cks(i) then
rollback;
raise_application_error(
-20001,
'Current version of data in database has changed '||
'since user initiated update process.');
-- return;
end if;
end loop; -
Delete Functionality in manual tabular form
Hi everyone,
I have created 2 tabular forms on the same page.everthing is working fine.Both the tabular form are able to insert and update.I am getting problem to implement the DELETE functionality in those tabular form.
I inserted this code htmldb_item.checkbox(6, id) del in the region and i created a delete process.But i am getting (no data found) error.
could anyone help me in solving this.
thanks
phani
===========================================================
DELETE PROCESS:
FOR i in 1..HTMLDB_APPLICATION.G_F01.count
LOOP
DELETE FROM (TABLE NAME)
WHERE id = HTMLDB_APPLICATION.G_F06(i);
END LOOP;
=============================================================
TABULAR FORM 1:
REGION:
select x.column1,
x.column2,
x.column3,
x.column4,
x.column5,
x.del,
x.cks
from (
select htmldb_item.hidden(1,column1) column1,
htmldb_item.text(2,column2,10) column2,
htmldb_item.text(3,column3,10) column3,
htmldb_item.text(4,column4,10) column4,
wwv_flow_item.date_popup(5,null,column5) column5,
htmldb_item.checkbox(6,column1) del,
htmldb_item.md5_checksum(column2,column3,column4,column5) cks
from TABLENAME
union all
select htmldb_item.hidden(1,null) column1,
htmldb_item.text(2,null,10) column2,
htmldb_item.text(3,null,10) column3,
htmldb_item.text(4,null,10) column4,
wwv_flow_item.date_popup(5,null,null) column5,
htmldb_item.checkbox(6,null) del,
htmldb_item.md5_checksum(null,null,null,null) cks
from dual) x
==================================================================
PROCESS:
declare
l_cks wwv_flow_global.vc_arr2;
j pls_integer := 1;
begin
-- Get original MD5 checksum
select wwv_flow_item.md5(column2,column3,column4,column5) cks
BULK COLLECT INTO
l_cks
from TABLE;
-- Compare the original checksum, l_cks,
-- with submitted checksum, htmldb_application.g_fcs.
-- If they are different, raise an error.
-- for i in 1..l_cks.count
-- loop
-- if htmldb_application.g_fcs(i) != l_cks(i) then
-- rollback;
-- raise_application_error(
-- -20001,
-- 'Current version of data in database has changed '||
-- 'since user initiated update --process.');
--return;
-- end if;
-- end loop;
-- update
for i in 1..htmldb_application.g_f01.count
loop
if htmldb_application.g_f01(i) is not null then
update TABLENAME
set column2= htmldb_application.g_f02(i),
column3 = htmldb_application.g_f03(i),
column4 = htmldb_application.g_f04(i),
column5 = htmldb_application.g_f05(i)
where column1 = htmldb_application.g_f01(i);
else
if htmldb_application.g_f03(i) is not null then
insert into TABLE
(column2,
column3,
column4,
column5
values
(htmldb_application.g_f02(i),
htmldb_application.g_f03(i),
htmldb_application.g_f04(i),
htmldb_application.g_f05(i));
end if;
end if;
end loop;
end;
I created the other tabular form on the same page with
htmldb_application.g_f11(i)
htmldb_application.g_f12(i)
htmldb_application.g_f13(i)
htmldb_application.g_f14(i)
used the same code.Have you got any response on this? I would like to know how to do it too. I am trying to implement a manual tabular form on a page and need this functionality.
I do know one thing. After attending the ODTUG conference last week, Raj said something about you have to process check boxes and radio groups separately from the rest of the form.
Thanks,
Michelle -
Apex 3.2
I have written a manual tabular form and it has a validation to check if a column contains negative numbers.
If it does then it returns a validation error.
I also have the same validation in my database procedure which raises
RAISE_APPLICATION_ERROR(-20000, 'The update procedure does not accept negative numbers.');My problem is withmy page validation.
If the column value was 16 and the user types in, eg, -12, then the validation fires and returns the message.
The problem is that once the message is returned, the column value is reset to the original value, eg, 16.
If I disable my page validation and use my database exception.
Then the error message from the database displays. If I click ok, then the form displays the new value, eg, -12.
I want to use my page validation, but I need the page to show the new value.
I have made all my processes and branches conditional to run only if there are no inline validations displayed,
but this did not affect anything.
Any help appreciated
GusGus C wrote:
It works exactly how I want mine to, without using collections, ie, it keeps the new values in the page.
Unfortunatley I cannot figure out how he does thatUpgraded to 4.2 ;)
One of the differences between version 3 and 4 is that retaintion/caching of the changed values in tabular forms.
In other words in apex 4 the builder takes care of showing the new changed value.
By not fetching the data from the database on a validation error.
Where as in Apex 3 you have to do that when there is a validation error and the message is shown on the same page.
The report fetches the data from the database even when there is a validation error.
There are 2 options
1) Let the validation message be shown on the error page. Going back in the browser history doesn't fetch the data form the database up on rerendering.
This option is mentioned in the thread the demo was inspired by.
2) Work with a collection. Where you take care of the caching. This method gives the posibility to so multiple validation messages where as the "show on error page" shows only one validation message.
Nicolette -
How to build a tabular form with a by the user insertable primary key
I have build a build a tabular form with the wizzard. Wat should I do to make the primary key insertable by the user.
When I change the PK from 'hidden' to 'text field', I get a checksum error when i am trying to insert.Fred: When you use the tabular form wizard, notice the help text on the right hand side of each page. The help page where you define the type of primary key (Existing trigger, PL/SQL function, existing sequence) clearly states
Tabular forms do not support user entered primary key values
Makes sense when you think about it. The MRU process needs to determine whether to update a record or insert a new record. It does that by comparing the checksums (and/or) pk values from when the page was first rendered and then when you make changes and submit it. Newly inserted rows will have a blank PK/checksum.
If you allow user to change the PK, how will the system know which rows are new and which ones are old?
For example, lets say you have
create table t
pk int primary key,
data varchar2(10)
)You have 2 rows
1 red
2 yellow
If the PK were to be editable, user could go in and change the above to
2 red
1 yellow
Now what? Would you like the system to create a new row with 1/yellow or change the existing pk=1 row to yellow? Same with the other row.
Bottom line: The built-in processes dont support this. You can always write your own manual tabular form and implement whatever you logic you wish in your After Submit processes.
Hope this helps. -
Hi friends,
I am new to Apex and am making a timesheet application. I have 2 main tables which I am using and their structures are as follows:
TB_OPMI_PROJ_ACT_MAP:
PROJ_REF VARCHAR2
REL_ID VARCHAR2
ACT_CODE VARCHAR2
TB_OPTI_EMP_TS:
PROJ_REF VARCHAR2
REL_ID VARCHAR2
EMP_ID VARCHAR2
ACT_CODE VARCHAR2
TS_WDI NUMBER
TS_WD2 NUMBER
TS_WD3 NUMBER
TS_WD4 NUMBER
TS_WD5 NUMBER
TS_WD6 NUMBER
TS_WD7 NUMBER
TS_REMARKS VARCHAR2
TS_STATUS VARCHAR2
Now I have to create a manual tabular form based on data from these 2 tables and either insert or update data into the timesheet table.
The page structure is such that I have created page items for emp_id, proj_ref and rel_id(all are LOV’s). And there is a button that submits the page. So when the user inputs the data and clicks on submit, the report whose source code is as follows shows up with data from both tables:
DECLARE
v_query varchar2(10000);
BEGIN
IF :P7_RELEASE_ID is not null THEN
v_query := 'SELECT b.act_code activities,
apex_item.text (1, a.ts_wd1, 10, 10) monday,
apex_item.text (2, a.ts_wd2, 10, 10) tuesday,
apex_item.text (3, a.ts_wd3, 10, 10) wednesday,
apex_item.text (4, a.ts_wd4, 10, 10) thursday,
apex_item.text (5, a.ts_wd5, 10, 10) friday,
apex_item.text (6, a.ts_wd6, 10, 10) saturday,
apex_item.text (7, a.ts_wd7, 10, 10) sunday,
apex_item.text (8, a.ts_remarks, 70, 128) remarks
from tb_opti_emp_ts a, tb_opmi_proj_act_map b
WHERE a.proj_ref = b.proj_ref
AND a.rel_id = b.rel_id
AND a.act_code = b.act_code
AND a.emp_id = '''||:P7_EMPLOYEE||'''
AND b.rel_id = '''||:P7_RELEASE_ID||'''
AND a.proj_ref = '''||:P7_PROJ_REF||''';';
ELSE
v_query := 'SELECT 1 FROM dual WHERE 1=0';
END IF;
return(v_query);
END;
Now this query is working fine. The data in the tb_opmi_proj_act_map is basically the activities mapped on each project reference and release id.
Now when there is no corresponding data for the emp_id,proj_ref,rel_id and act_code in the main timesheet table, even then I need to generate to a tabular form structure with all the activities listed for the input proj_ref and rel_id and the 8 respective columns for the days of the week and remarks for each row or activity. I don’t know how to progress and am stuck. I just had a thought of modifying my region source a bit something like this.
DECLARE
v_query varchar2(10000);
v_count number;
BEGIN
+Select count(*) into v_count from tb_opti_emp_ts where emp_id=P7_EMPLOYEE and proj_ref=P7 PROJREF and rel_id=P7_REL_ID;+
IF (:P7_RELEASE_ID is not null) and (v_count>0) THEN
v_query := 'SELECT b.act_code activities,
apex_item.text (1, a.ts_wd1, 10, 10) monday,
apex_item.text (2, a.ts_wd2, 10, 10) tuesday,
apex_item.text (3, a.ts_wd3, 10, 10) wednesday,
apex_item.text (4, a.ts_wd4, 10, 10) thursday,
apex_item.text (5, a.ts_wd5, 10, 10) friday,
apex_item.text (6, a.ts_wd6, 10, 10) saturday,
apex_item.text (7, a.ts_wd7, 10, 10) sunday,
apex_item.text (8, a.ts_remarks, 70, 128) remarks
from tb_opti_emp_ts a, tb_opmi_proj_act_map b
WHERE a.proj_ref = b.proj_ref
AND a.rel_id = b.rel_id
AND a.act_code = b.act_code
AND a.emp_id = '''||:P7_EMPLOYEE||'''
AND b.rel_id = '''||:P7_RELEASE_ID||'''
AND a.proj_ref = '''||:P7_PROJ_REF||''';';
ELSIF (:P7_RELEASE_ID is null) then
v_query := 'SELECT 1 FROM dual WHERE 1=0';
else
[code for generating my requirement in case the input is legit and there is no data in the timesheet table.]
END IF;
return(v_query);
END;
Please could someone help me????
Also in either case, whether data is generated from the join if already existing or if no data exists, I need to then insert the data or update it accordingly and have no idea how to proceed.
I know the solution will be a lengthy one but please its urgent and I am stuck. Please any help would be greatly appreciated.
Thanks in advance……Hi all,
In response to my previous post, I would like to update that I have been able to generate my required region.
Now the final query is as follows:
DECLARE
v_query varchar2(10000);
v_count number;
BEGIN
select count(*) into v_count from tb_opti_emp_ts where emp_id=:P7_EMPLOYEE and proj_ref=:P7_PROJ_REF and rel_id=:P7_RELEASE_ID;
IF ((:P7_RELEASE_ID is not null) and (v_count>0)) THEN
v_query := 'SELECT b.act_code activities,apex_item.text (1, a.ts_wd1, 10, 10) monday,apex_item.text (2, a.ts_wd2, 10, 10) tuesday,apex_item.text (3, a.ts_wd3, 10, 10) wednesday,apex_item.text (4, a.ts_wd4, 10, 10) thursday,apex_item.text (5, a.ts_wd5, 10, 10) friday,apex_item.text (6, a.ts_wd6, 10, 10) saturday,apex_item.text (7, a.ts_wd7, 10, 10) sunday,apex_item.text (8, a.ts_remarks, 70, 128) remarks from tb_opti_emp_ts a, tb_opmi_proj_act_map b WHERE a.proj_ref = b.proj_ref
AND a.rel_id = b.rel_id
AND a.emp_id = '''||:P7_EMPLOYEE||'''
AND b.rel_id = '''||:P7_RELEASE_ID||'''
AND a.proj_ref = '''||:P7_PROJ_REF||''';';
ELSIF (:P7_RELEASE_ID is null) then
v_query := 'SELECT 1 FROM dual WHERE 1=0';
else
v_query:='select (select act_desc from tb_opmi_act_code a where a.act_code=b.act_code) as activities,apex_item.text(1,null) Monday,apex_item.text(2,null) Tuesday,apex_item.text(3,null) Wednesday,apex_item.text(4,null) Thursday,apex_item.text(5,null) Friday,apex_item.text(6,null) Saturday,apex_item.text(7,null) Sunday,apex_item.text(8,null) Remarks from tb_opmi_proj_act_map b where proj_ref='''||:P7_PROJ_REF||''' and rel_id='''||:P7_RELEASE_ID||''';';
END IF;
return(v_query);
END;
Now I have created a button which have dynamic action as its on click action. Now in the dynamic action I have to write the code for inserting/updating the data in the timesheet table.
I need help with it please its urgent.......... -
Can't get Delete Process to work on Manual Tabular Form
Help. My insert and update process works just fine. I can't get the delete process to work. I've searched the forum and found a couple of examples on what to do, but I can't get the examples to work. I get an ORA-01403: no data found error.
Report SQL:
select apex_item.checkbox (1, ceah_people_lang_id,'unchecked') delete_checkbox,
--'onclick="highlight_row(this,' || ROWNUM || ')"',
--null,
--'F1_' || LPAD (ROWNUM, 4, '0')) delete_checkbox,
Delete Process:
declare
begin
for i in 1..apex_application.g_f02.count
loop
--if apex_application.g_f01(i) = 'Y'
--then
delete from ceah_people_language
where ceah_people_lang_id = to_number(apex_application.g_f01(i));
--end if;
end loop;
end;
I've spent more time than I care to admit on the manual tabular form. Any help would be appreciated. Thanks, Elizabethselect apex_item.checkbox (1, ceah_people_lang_id,'unchecked') delete_checkbox,
--'onclick="highlight_row(this,' || ROWNUM || ')"',
--null,
--'F1_' || LPAD (ROWNUM, 4, '0')) delete_checkbox,
apex_item.hidden(2,ceah_people_lang_id)
||
apex_item.select_list_from_query(3,language_id,'select language_name, language_id from foreign_language') language_id,
apex_item.hidden(4,ceah_people_id) ||
apex_item.select_list_from_query(5,proficiency,'select name, id from proficiency') proficiency
from ceah_people_language where ceah_people_language.ceah_people_id = :P152_person_id
union all
select apex_item.checkbox
(1,
null,
'onclick="highlight_row(this,' || ROWNUM || ')"',
null,
'F1_' || LPAD (ROWNUM, 4, '0')) delete_checkbox,
apex_item.hidden(2,null) ||
apex_item.select_list_from_query(3,null,'select language_name, language_id from foreign_language',
'style="width:170px" ' ,
'YES',
'0',
'- Select Foreign Language -',
'f3_' || LPAD (9900 + ROWNUM, 4, '0'),
NULL,
'NO'
) language_id,
apex_item.hidden(4,null) ||
apex_item.select_list_from_query(5,null,'select name, id from proficiency',
'style="width:170px" ' ,
'YES',
'0',
'- Select Proficiency -',
'f5_' || LPAD (9900 + ROWNUM, 4, '0'),
NULL,
'NO'
) proficiency
from dual where :request = 'ADD_ROWS'
connect by level <= 2 -
Select List in Manual Tabular Form based on a previous column
I have a manual tabular form that have several columns One column (vendor) is a select list that should be based on a previous column (Vendor Type - Internal/External). So if the user selects Internal for Vendor Type, the Vendor column's select list should only contain those vendors with type of Internal. By the way, it also uses APEX collections.
select
apex_item.hidden (1,C015) STATUS,
apex_item.checkbox (2,SEQ_ID,'title="check to delete"') CHECKBOX,
case
when (c001 is not null and c002 is not null) then
'<a onclick="return false;" href="f?p='||:APP_ID||':20:'||:APP_SESSION||'::NO:20:P20_ID,P20_REQ_ID,P20_SEQ_ID:'||C001||','||C002||','||SEQ_ID||'"><img alt="" src="/i/ed-item.gif"></a>'
end ||
apex_item.hidden (4,C001) ID,
apex_item.hidden (5,C002) JOB_QUOTE_ID,
apex_item.date_popup2 (6,C003,'MM/DD/YYYY',11,2000,'onChange="f_set_end_date(this.id,'|| ROWNUM || ');"') ||
apex_item.select_list_from_query (7,C004,'select svcs_description d, svcs_code r from csrsr_service_codes order by 1 asc',null,'YES',null,'-Select-') || '<BR />' ||
apex_item.date_popup2 (8,C005,'MM/DD/YYYY',11) ||
apex_item.text (9,C006,8,15,'style="text-align:right;"') || '<BR />' ||
apex_item.select_list (10,C007,'Staff;S,External;E',null,'YES',null,'-Select-') ||
apex_item.select_list_from_query_xl(11,C008,'select vendor_name d, vendor_number r from csrsr_vendors_v',null,'YES',null,'-Select-') || '<BR />' ||
apex_item.text (12,C009,50,100,'colspan=2') COL12,
apex_item.text (13,to_char(to_number(C010),'FML999G999G999G999G990D00'),10,15,'style="text-align:right;"') AMT1,
apex_item.text (14,to_char(to_number(C011),'FML999G999G999G999G990D00'),10,15,'style="text-align:right;"') AMT2,
apex_item.text (15,to_char(to_number(C012),'FML999G999G999G999G990D00'),10,15,'style="text-align:right;"') AMT3,
apex_item.text (16,to_char(to_number(C013),'FML999G999G999G999G990D00'),10,15,'style="text-align:right;"') AMT4,
apex_item.hidden (24,C001) ||
apex_item.hidden (25,C002) ||
apex_item.hidden (3,SEQ_ID) ||
apex_item.text (17,to_char(to_number(C014),'FML999G999G999G999G990D00'),10,15,'style="text-align:right;"') CHBK_AMT,
'value' COLTYPE
from
apex_collections
where
collection_name = 'CSRSR_JOBCOSTS_C' and
C015 in ('O','U','N')
union all
select
apex_item.hidden (1,null) STATUS,
apex_item.checkbox (2,null,'title="check to delete"') CHECKBOX,
apex_item.hidden (24,null) ||
apex_item.hidden (4,null) ID,
apex_item.hidden (25,null) ||
apex_item.hidden (5,null) JOB_QUOTE_ID,
apex_item.date_popup2 (6,null,'MM/DD/YYYY',11,2000,'onChange="f_set_end_date(this.id,'|| ROWNUM || ');"') ||
apex_item.select_list_from_query (7,null,'select svcs_description d, svcs_code r from csrsr_service_codes order by 1 asc',null,'YES',null,'-Select-') || '<BR />' ||
apex_item.date_popup2 (8,null,'MM/DD/YYYY',11) ||
apex_item.text (9,null,8,15,'style="text-align:right;"') || '<BR />' ||
apex_item.select_list (10,null,'Staff;S,External;E',null,'YES',null,'-Select-') ||
apex_item.select_list_from_query_xl(11,null,'select vendor_name d, vendor_number r from csrsr_vendors_v',null,'YES',null,'-Select-') || '<BR />' ||
apex_item.text (12,null,50,100,'colspan=2') COL12,
apex_item.text (13,null,10,15,'style="text-align:right;"') AMT1,
apex_item.text (14,null,10,15,'style="text-align:right;"') AMT2,
apex_item.text (15,null,10,15,'style="text-align:right;"') AMT3,
apex_item.text (16,null,10,15,'style="text-align:right;"') AMT4,
apex_item.hidden (24,null) ||
apex_item.hidden (25,null) ||
apex_item.hidden (3,null) ||
apex_item.text (17,null,10,15,'style="text-align:right;"') CHBK_AMT,
'value' COLTYPE
from
dual
How can I accomplish this?
Application Express 4.1.2
Oracle 10g Rel 2
RobertHi,
Then you are probably looking cascading select list in tabular form?
http://dbswh.webhop.net/htmldb/f?p=BLOG:READ:0::::ARTICLE:2003800346210117
Regards,
Jari -
Display select list from query on manual tabular form
Hello,
I'm trying to display a select list from query on a manual tabular form. I'm using a collection to store the data. I can't seem to get the query to work. I can display the item as a text item. Any help would be appreciated. Thanks, Elizabeth.
SELECT
-- Notice how I'm keeping the idx value the same as the column value in the collection. This helps to keep things organized
-- I also apply an id to each entry
-- I append the error value to the empname and sal
-- The Seq_id. Usefull when hiding rows (for delete) and then submitting from
apex_item.hidden(1,x.seq_id, null, x.seq_id || '_seq_id') ||
-- The Primary Key of the column
apex_item.hidden(2, x.ceah_people_id, null, x.seq_id || '_ceah_people_id') || x.ceah_people_id ceah_people_id,
-- Employee Name
case when x.seq_id = -1
then
apex_item.select_list_from_query (3,
NULL,
'select distinct language_name d, '
|| 'language_id r from foreign_language',
'style="width:170px" ' ,
'YES',
'0',
'- Select Language -',
'x.seq_id_' || LPAD (9900 + LEVEL, 4, '0'),
NULL,
'NO'
else
apex_item.text (3,(select language_name from foreign_language where x.language_id = foreign_language.language_id),
80,
100,
'style="width:170px" readonly="readonly"',
'f32_' || LPAD (ROWNUM, 4, '0')
end
|| err.language_id language_id,
/* apex_item.text(3,x.language_id,null, null, null, x.seq_id || '_language_id') || err.language_id language_id,
-- Employee Salary
apex_item.text(4,x.proficiency, null, null, null, x.seq_id || '_proficiency') || err.proficiency ||
-- Store the sql action type as well.
apex_item.hidden(50,x.sql_action_typ, null, x.seq_id || '_sql_action_typ_id') proficiency,
-- Last but not least the row error
err.row_error
FROM (SELECT ac.c001 seq_id,
ac.c002 ceah_people_id,
ac.c003 language_id,
ac.c004 proficiency,
ac.c049 modifiable_flag,
ac.c050 sql_action_typ
FROM apex_collections ac
WHERE ac.collection_name = 'DATA_COLLECTION'
ORDER BY ac.seq_id) x,
-- Error Collection
(SELECT ac.seq_id seq_id,
ac.c002 ceah_people_id,
ac.c003 language_id,
ac.c004 proficiency,
ac.c050 row_error -- Useful when individual data is correct, however the row of data is not. Ex: start/end dates
FROM apex_collections ac
WHERE ac.collection_name = 'ERROR_COLLECTION'
ORDER BY ac.seq_id) err
WHERE x.seq_id = err.seq_id(+)I got so frustrated I started over. I'm following the how to create a manual form.
http://www.oracle.com/technology/products/database/application_express/howtos/tabular_form.html#MANUAL
The problem I'm now having is even though I display items as hidden, there is a column holder on the report for them. If I go into the report attributes and toggle the show attribute off I cannot reference an items value in my logic. I used / / for the column heading but I still get the little sort arrow where the column heading should be. I tried to toggle the sort attribute off but the sort arrow still shows up. How can I use the apex_item.hidden and not get a place holder for the column on a report? Thanks, Elizabeth
Here is the code I'm using to generate the report:
select x.ceah_people_lang_id,
x.language_id,
x.proficiency,
x.ceah_people_id
from (
select apex_item.hidden(1,ceah_people_lang_id) ceah_people_lang_id,
apex_item.select_list_from_query(2,language_id,'select language_name, language_id from foreign_language') language_id,
apex_item.select_list_from_query(3,proficiency,'select name, id from proficiency') proficiency,
apex_item.hidden(4,ceah_people_id) ceah_people_id
from ceah_people_language where ceah_people_language.ceah_people_id = :P152_person_id
union all
select apex_item.hidden(1,null) ceah_people_lang_id,
apex_item.select_list_from_query(2,null,'select language_name, language_id from foreign_language') language_id,
apex_item.select_list_from_query(3,null,'select name, id from proficiency') proficiency,
apex_item.hidden(4,null) ceah_people_id
from dual) x -
Column Link is not working on a Manual Tabular Form
Hello,
I am having some issues creating a link on a column based on a manual tabular form (I am using Apex 4.1.1.00.27, Oracle DB 10.2.0.5.0):
On my page 1, I created a process that deletes and creates a collection based on the “emp” table; then, I have a manual tabular form based on that collection; and finally, a link on the “deptno” column of the manual tabular form that points to my Page 2 (department form) and it’s passing the parameter P2_DEPTNO:#DEPTNO#.
The problem is that when I press the link, the page is not submitting the DEPTNO value. Also, I notice that as soon as I specify the column as a link column, it does not show the value in my tabular form, but if I remove the link, it shows the value correctly.
I created an example on apex.oracle.com in case some of you want to look into it:
Workspace: EDIAZJORGE
Username: test
Password: test123
App Name: Sample App
App Number: 12231
I appreciate any ideas or suggestions on how to solve this issue.
Thank you,
ErickHello,
Try following code
SELECT APEX_ITEM.HIDDEN(1,C001) EMPNO,
APEX_ITEM.TEXT(2,C002) ENAME,
APEX_ITEM.TEXT(3,C003) JOB,
APEX_ITEM.TEXT(4,C004) MGR,
APEX_ITEM.TEXT(5,C005) HIREDATE,
APEX_ITEM.TEXT(6,C006) SAL,
APEX_ITEM.TEXT(7,C007) COMM,
'<a href="f?p=&APP_ID.:2:&APP_SESSION.:::2:P2_DEPTNO:'||C008||'"><img src="/i/ws/small_page.gif"></a>' DEPTNO
FROM APEX_COLLECTIONS
WHERE COLLECTION_NAME = 'EMP_COLLECTION'
UNION ALL
SELECT APEX_ITEM.HIDDEN(1,NULL) EMPNO,
APEX_ITEM.TEXT(2,NULL) ENAME,
APEX_ITEM.TEXT(3,NULL) JOB,
APEX_ITEM.TEXT(4,NULL) MGR,
APEX_ITEM.TEXT(5,NULL) HIREDATE,
APEX_ITEM.TEXT(6,NULL) SAL,
APEX_ITEM.TEXT(7,NULL) COMM,
APEX_ITEM.TEXT(8,NULL) DEPTNO
FROM DUALFor existing data, it will display as link and for new data, it will still display as text box.
Please note that you should display DEPTNO as standard column and not as LINK.
Regards,
Hari
Escaped < in tags :) -
Query for create manual tabular form using apex collection using item textfield with autocomplete
can we create a manual tabular form inside item textfield with autocomplete ?
how it is possible?
with Apex_item API used for this item.
i used this code for creat cascading select list
select seq_id,
APEX_ITEM.SELECT_LIST_FROM_QUERY(
p_idx => 1,
p_value => c001,
p_query => 'SELECT C001 D
, C002 R
FROM APEX_COLLECTIONS
WHERE COLLECTION_NAME = ''col1''',
p_attributes => 'style="width:150px" onchange="f__name(this,parseInt(#ROWNUM#));"',
p_show_null => 'Yes',
p_null_value => null,
p_null_text => '- Select name -',
p_item_id => 'f01_'|| LPAD (ROWNUM, 4, '0'),
p_item_label => 'Label for f01_#ROWNUM#',
p_show_extra => 'NO') name,
APEX_ITEM.SELECT_LIST_FROM_QUERY(
p_idx => 2,
p_value => c002,
p_query => ' SELECT null d, null r FROM dual WHERE 1 = 2
p_attributes => 'style="width:150px"',
p_show_null => 'Yes',
p_null_value => null,
p_null_text => '- Select name -',
p_item_id => 'f02_'|| LPAD (ROWNUM, 4, '0'),
p_item_label => 'Label for f02_#ROWNUM#',
p_show_extra => 'NO')name2,
from apex_collections
where
collection_name = 'COLLECTION1'
It is fine .
but i want item in tabular form textfield with autocomplete and remove select list. my requirement is using textfield with autocomplete select a employee name and second item textfield with autocomplete display dependent perticular employee related multiple task.
how it is created.i have no idea related textfield with autocomplete.Please help me....pt_user1
I understand that the add row button is currently doing a submit.
To not submit the page you need a dynamic action on the page.
Does the javascript function addRow do what you want?
Otherwise have a look at the following two threads Add row in manual tabular form using dynamic action and Accessing Tabular Form & Add Elements to Collection without Page Submit.
You're process could be something like:
Add the new values to the collection using the idea's in the second thread and at the same time add the new row.
And as second action refresh your tabular form.
If you get stuck set up what you have done on apex.oracle.com using the tables from the demo application.
Nicolette -
Sorting on date (date_popup2) in manual tabular form does not work
Hi All,
I created a manual tabular form (based on a collection) with 1 date_popup2 field in it. This field is defined in the query as follows:
, apex_item.date_popup2( p_idx => 18
, p_value => c004
, p_date_format => 'dd-mm-yyyy'
, p_item_id => 'f18_' || lpad (rownum, 4, '0')
, p_item_label => 'Start date'
) as tf_br_start_date
In the report attributes I marked this column to be sortable.
However, in the page the sorting is not working. It looks like it's always sorted in the order of the seq_id.
Can anyone tell me how to solve this?
Regards,
RenéI'd call it a bug/missing feature.
It appears that within a Basic report, sorting on a column created using APEX_ITEM.DATE_POPUP2() does not sort by date.
I'd file this with Oracle Support and see what they say.
Include a link to this thread and your workspace login information.
I got something to work by: (probably not what you want.)
using the C004 column directly. (I just added it to the SQL code)
setting the column's attribute "Display As" to "Date Picker"
setting the column's attribute "Number /Date Format" to DD-MM-YYYY
I suspect: since you don't start with p_idx => 1, this column becomes "1" ==> g_f01
MK
Maybe you are looking for
-
Strange error when starting tnslsnr on AIX machine
Hello! I have the following system: there are two nodes (say, node1 and node2) in HACMP cluster (OS is AIX 5.2). ORACLE runs on node2 and our software - on node1 (in normal state). Also there is an external storage, where ORACLE's and software's file
-
i want to submit trans MB5B and move the data of table BESTand (is this itab?) to my ITAB in my program
-
Kind of a noob question - difference mattes.
Hi all. I'm working on a new graphics package, and the content was supplied as targa sequnces. Anything that's keyable was also suppled as a black and white matte sequence. I'm exporting the image sequences as MOVs from QuickTime, and my question is,
-
How to create a Loading page?
I have a servlet that uploads file to the server, i want to add a loading page to inform the user that the file is uploading to the server, but i dont know how to do so. I was thinking making another servlet that can be called by the upload file serv
-
Selecting multiple rows in ALV
Hi Experts, I am using REUSE_ALV_GRID_DISPLAY FM in my program for my ALV output . I need to select multiple rows and will click a custom button on the appln toolbar. How can I know which all rows are selected? Please help. Many Thanks, Neeraj