apex logical delete

Hi
in my application i have
I have a form with report and buttons add row, delete and cancel.

this is tabular form with checkboxes. when i clicke on delete button after checking the check boxes it is deleting in the database completely but my requirement
i want to customize the delete process and when checkbox checked
that record should update in emp table as logical_delete='Y'

How can we customize the delete as follow in a process associated with delete button
update emp set logical_delete='Y' where check box checked is true.
 
 thanks in advance.
vsarma50Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

sdstuberCommented:
Are you letting APEX manage the dml for you automatically?  If so, you'll have to change it and write your own processing instructions on submit.
0
gatorvipCommented:
Create a PL/SQL page process whose only action is to perform the update while looping through your tabular form.
Set the execution point for this process (under Conditions) to the Delete button being pressed.
Disable the current deletion by setting its conditional clause to Never (or remove it altogether)

Your loop will look something like this:

for i IN 1..APEX_APPLICATION.G_F01.COUNT
loop

if apex_application.g_f<nn>(i) = <value>  then
update emp 
set logical_delete='Y'
where.... ;
end if;
end loop;

Open in new window


where you need to replace <nn> and <value> with your actual values
0
vsarma50Author Commented:
i didn't understand the below line as I want the selected to be deleted. but how can iget the row selector name. here my chekbox created by apex is
if apex_application.g_f<nn>(i) = <value>  then

if apex_application.g_f [row selector] (i) = 'checked'  then
of
if apex_application.g_f EMPID(i) = TRUE  then

giving me error
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

gatorvipCommented:
Typically I get the <nn> values by looking at the page source of the generated HTML code.  Typically it's a two digit number.

The checkbox value is whatever you allow it to be when you create the checkbox
0
vsarma50Author Commented:
when i wrote code as follow it is deleting all rows i want to delete only selected row

for i IN 1..APEX_APPLICATION.G_F01.COUNT
loop
if APEX_APPLICATION.G_F01(i)=1 THEN
update emp set LOGICAL_DELETE ='Y';
--where empID=APEX_APPLICATION.G_F01(i);
end if;
end loop;

if i have condition nothing getting updated. else all records are getting deleted.
please advice.
0
sdstuberCommented:
you have removed the where clause on your update statement.

that means if you have any rows selected you will update all of them
and, you'll update all of them for each row you selected.

so, you need to put the where clause back on, but fix it so that it chooses the correct row.
0
vsarma50Author Commented:
with condition removed nothing is deleted i tried that
0
sdstuberCommented:
>>with condition removed nothing is deleted i tried that

that's surprising.  it "should" delete everything when the condition is removed.
if it's not, then you're either not getting into the loop, or the if condition is false for every element.  in either case, having or not having the condition would be irrelevant then.



it looks like you have copied gatorvip's template FOR and IF verbatim

Do you have the correct value? Do you have the correct item name?
0
vsarma50Author Commented:
i apologize i mean type error.

>>with condition removed everything is deleted i tried that

and with condition nothing is removed/deleted.

Do you have the correct value? Do you have the correct item name?

how to get the correct item name i checked in page source. but could not found any 2 digit number

could you please give me example of the syntax you posted. thanks.
0
gatorvipCommented:
>>for i IN 1..APEX_APPLICATION.G_F01.COUNT
>>if APEX_APPLICATION.G_F01(i)=1 THEN
>>where empID=APEX_APPLICATION.G_F01(i);

You are using the same array here, which I doubt is what you want. If G_F01 holds the empid values, then your checkbox array will most likely going to be a higher index.

Search the page source code for ' <input type="checkbox" name=   '  and get the fnn index from there.

Also, did you explicity give the checkbox the value 1 (or 0) in the Lists of Values definition for the checkbox? If not, your verification will fail as the assignment is not implicit.
See the docs here:
http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21672/toc.htm#CACHEAGC
for a brief description and example on using checkboxed. The default behavior changed drastically between 3.2-4.1.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
vsarma50Author Commented:
thanks i will check my code .
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Oracle Database

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.