Thanks to Tom I was able to get my initial issue solved, I'm now able to have a tabular form send automatic emails out for checked rows, the only issue I have now is that it sends out a copy of the email how ever many time a check box is checked.
If you check off one row, it sends out one email, but if you check off 2 (or more) rows it sends out each email twice, three times for 3 rows.
I'm using the standard ApplyMRU process to update the rows and a separate process to send out the emails.
The process is below.
I know I'm missing something here, any ideas?
DECLARE
l_checked_row NUMBER;
l_id NUMBER;
lc_message VARCHAR2 (4000);
l_pkey NUMBER;
l_r_reqs reqs%ROWTYPE;
BEGIN
FOR i IN 1..apex_application.g_f01.count
LOOP
l_checked_row := apex_application.g_f01(i);
-- assuming that array F02 maps to column PKEY from table REQS
l_pkey := apex_application.g_f02(l_checked_row);
-- get details required for creating the mail body
-- It's generally easier to just fetch the row instead of having to
-- define variables to cover every field you need.
SELECT *
INTO l_r_reqs
FROM reqs
WHERE pkey = l_pkey;
-- Dont forget that select into may generate no_data_found or too_many_rows !
lc_message := 'Date Written :' || l_r_reqs.date_wrote || CHR (10);
lc_message := lc_message || 'Sales :' || l_r_reqs.sales || CHR (10);
lc_message := lc_message || 'Client :' || l_r_reqs.client || CHR (10);
lc_message := lc_message || 'Position :' || l_r_reqs.job || CHR (10);
lc_message := lc_message || 'Who Covered :' || l_r_reqs.who || CHR (10);
lc_message := lc_message || 'Date Covered :' || l_r_reqs.date_covered || CHR (10);
l_id := APEX_MAIL.SEND(
p_to => 'TESTER@TEST.com',
p_from => 'DO_NOT_REPLY@REQS',
p_subj => ''
|| l_r_reqs.who
|| ' Has Covered '
|| l_r_reqs.job
|| ' at '
|| l_r_reqs.client
|| CHR (10),
p_body => lc_message);
-- avoid commits unless ab-so-lu-te-ly necessary. Apex implicit commits can make the flow hard enough to
-- understand as it is.
END LOOP;
apex_mail.push_queue ();
END;
Here's what I get from the APEX debug.
Session State: Save "P14_SALES" - saving same value: "Ian Kimmett" Processes - point: ON_SUBMIT_BEFORE_COMPUTATION Branch point: Before Computation Process point: AFTER_SUBMIT Tabs: Perform Branching for Tab Requests Branch point: Before Validation Validations: Perform basic and predefined validations: Perform custom validations: Branch point: Before Processing Processes - point: AFTER_SUBMIT ...Process "ApplyMRU" - Type: MULTI_ROW_UPDATE ...Process "ApplyMRD" - Type: MULTI_ROW_DELETE ......Skip because condition or authorization evaluates to FALSE ...Process "SEND_MAIL" - Type: PLSQL ......Process row 1 ...Execute Statement: begin DECLARE l_checked_row NUMBER; l_id NUMBER; lc_message VARCHAR2 (4000); l_pkey NUMBER; l_r_reqs reqs%ROWTYPE; BEGIN FOR i IN 1..apex_application.g_f01.count LOOP l_checked_row := apex_application.g_f01(i); l_pkey := apex_application.g_f02(l_checked_row); SELECT * INTO l_r_reqs FROM reqs WHERE pkey = l_pkey; lc_message := 'Date Written :' || l_r_reqs.date_wrote || CHR (10); lc_message := lc_message || 'Sales :' || l_r_reqs.sales || CHR (10); lc_message := lc_message || 'Client :' || l_r_reqs.client || CHR (10); lc_message := lc_message || 'Position :' || l_r_reqs.job || CHR (10); lc_message := lc_message || 'Who Covered :' || l_r_reqs.who || CHR (10); lc_message := lc_message || 'Date Covered :' || l_r_reqs.date_covered || CHR~ ......Process row 2 ...Execute Statement: begin DECLARE l_checked_row NUMBER; l_id NUMBER; lc_message VARCHAR2 (4000); l_pkey NUMBER; l_r_reqs reqs%ROWTYPE; BEGIN FOR i IN 1..apex_application.g_f01.count LOOP l_checked_row := apex_application.g_f01(i); l_pkey := apex_application.g_f02(l_checked_row); SELECT * INTO l_r_reqs FROM reqs WHERE pkey = l_pkey; lc_message := 'Date Written :' || l_r_reqs.date_wrote || CHR (10); lc_message := lc_message || 'Sales :' || l_r_reqs.sales || CHR (10); lc_message := lc_message || 'Client :' || l_r_reqs.client || CHR (10); lc_message := lc_message || 'Position :' || l_r_reqs.job || CHR (10); lc_message := lc_message || 'Who Covered :' || l_r_reqs.who || CHR (10); lc_message := lc_message || 'Date Covered :' || l_r_reqs.date_covered || CHR~ Branch point: After Processing ...Evaluating Branch: "AFTER_PROCESSING" Type: REDIRECT_URL Button: (No Button Pressed) Condition: (Unconditional) Redirecting to f?p=950:14:0::::: Stop APEX Engine detected Stop APEX Engine detected Final commit
apex_debug.message(...)
lines in? I can't imagine this loop is doing this but hey. When I run a deconstructed piece I have no issues, but I'm not sending mails out too. – Tom