我想实现一个使用JQueryMobile框架的ORACLE APEX应用程序的问答系统。基本上,页面上会显示问题文本和包含可能答案的报告。单击复选框可以选择答案。点击提交按钮后,包含答案文本,answer_id和当前session_id的所选复选框将插入数据库中的表中。
在Oracle APEX 4.2中,我使用经典报告来实现此目的。 Thich实际上是一个糟糕的解决方案,因为报告中的复选框显示为简单的HTML复选框,而不是简洁的JQueryMobile复选框)。无论如何,这是我目前的解决方案:
使用此代码创建经典报告:
SELECT
APEX_ITEM.CHECKBOX(1,answer_id),
answer_id,
answer_text
FROM ANSWERS
WHERE question_ID = :P10_Question_ID;
数据的插入是通过提交过程“On Submit - After Computations and Validations”完成的。
这是提交过程的代码:
DECLARE
var_session_id NUMBER := :P0_SESSION_ID;
BEGIN
FOR i in 1..APEX_APPLICATION.G_F01.COUNT LOOP
INSERT INTO STUDENT_ANSWERS
(answer_id, answer_text, session_id)
SELECT a.answer_id, a.answer_text, var_session_id
FROM ANSWERS a
WHERE a.answer_id = APEX_APPLICATION.G_F01(i)
END LOOP;
COMMIT;
END;
但是这个解决方案不起作用。相反,没有任何内容插入数据库。
我不知道为什么这个进程没有插入到数据库中,也许这条线路有问题
WHERE a.answer_id = APEX_APPLICATION.G_F01(i)
?
我甚至尝试过一个简单的更新过程用于测试目的,但这也不起作用:
BEGIN
FOR i in 1..APEX_APPLICATION.G_F01.COUNT LOOP
UPDATE STUDENT_ANSWERS
SET text = APEX_APPLICATION.G_F03(APEX_APPLICATION.G_F01(i))
WHERE am_id = APEX_APPLICATION.G_F02(APEX_APPLICATION.G_F01(i));
END LOOP;
COMMIT;
END;
有人可以告诉我如何遍历ORACLE APEX 4.2中的复选框以及如何在点击提交按钮后将值ANSWER_ID,ANSWER_TEXT和SESSION_ID插入表STUDENT_ANSWERS?如果你不知道如何在不使用报告但只使用简单的复选框的情况下做到这一点,这对我来说会更有帮助!
答案 0 :(得分:0)
您的复选框是否位于页面的主表单标记内(您可以通过在运行时查看页面源来检查)? Fnn元素必须位于HTML表单中以提交给服务器。
您知道G_Fnn数组是否已填充?
答案 1 :(得分:0)
使用APEX_ITEM.CHECKBOX2
代替APEX_ITEM.CHECKBOX
以及where条件
在哪里a.answer_id = to_number(APEX_APPLICATION.G_F01(i));