• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1001
  • Last Modified:

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.
0
vsarma50
Asked:
vsarma50
  • 5
  • 3
  • 3
1 Solution
 
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
Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

 
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
 
vsarma50Author Commented:
thanks i will check my code .
0
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.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now