PL/SQL 和 Oracle Forms Builder

Posted

技术标签:

【中文标题】PL/SQL 和 Oracle Forms Builder【英文标题】:PL/SQL and Oracle Forms Builder 【发布时间】:2013-07-26 01:31:16 【问题描述】:

所以我需要把这个项目放在一起上学,但我只能使用 oracle forms builder。

我正在尝试做一个简单的查询,并根据我从查询中得到的内容为表单对象分配值,但我的表单项出现时未声明。有谁知道我可以如何修改这样的表单属性?这个程序的用户界面很糟糕,所以如果我能在 PL/SQL 中实现的话,我真的很想避免通过向导来完成。

这是我所拥有的: 仍在努力寻找可行的解决方案。

我稍微修改了我的代码:

DECLARE
    pmrn patient.p_mrn%TYPE;
    var_ptuple patient%ROWTYPE;
BEGIN
    pmrn := NAME_IN('MRN_FIELD');
    SELECT * INTO var_ptuple from patient WHERE patient.p_mrn = pmrn;
    :PATIENT_BLOCK.FNAME := var_ptuple.p_fname;
    :PATIENT_BLOCK.LNAME := var_ptuple.p_lname;
END;

在数据块上使用 where 并不真正适合这些目的,因为我想根据用户输入检索数据。 IE。用户需要输入正确的用户 ID 才能查看他们的记录。

【问题讨论】:

【参考方案1】:

表单项在Forms PL/SQL中可以称为绑定变量,例如

pmrn := :PATIENT_BLOCK.MRN_FIELD;
:PATIENT_BLOCK.FNAME := var_ptuple.p_fname;

等等

但是请注意,您很可能不需要编写所有这些代码。只需将块源设置为表并对其执行查询 - 表单将负责为您加载记录。

【讨论】:

那么我可以写一个这样的查询吗? select p_fname, plname from patient where patient.p_mrn = :PATIENT_BLOCK.MRN_FIELD 我试图禁止访问用户没有必要信息(如 ID 号和密码等)的记录。似乎基于 GUI 的设置不提供这些功能。 GUI 正是您用来进行布局的工具。 Forms 的功能非常强大,并且由对象属性释放出来。有时您确实必须编写一些 PL/SQL,但对于这类事情,这不是必需的。例如,如果您想确保用户只看到某些记录,您可以在块的DEFAULT_WHERE 属性中放置一个谓词(如果子句应该是动态的,您甚至可以通过编程方式设置它)。 我已经稍微更改了我的代码,但我仍然不清楚如何访问表单对象并将数据放入其中和/或从中检索数据。如果我能做到这一点,我应该可以接受这个项目。语法对于您的建议是正确的,但是运行表单并没有按照我的预期执行。具体来说,它什么也没做。我希望用户能够将他们的 ID 输入到“MRN_FIELD”中,获取表单中的值,将其用于数据库查询,然后从记录中获取信息并将其放入表单中以供输出。 没关系!不管是什么不喜欢我使用的是 ENTER KEY PRESSED 触发器。我只是把它绑在一个按钮上,它就像一个魅力。非常感谢! 是的,避免使用“键”触发器——它们仅在您需要特定键盘键发生特定事情时才有用。最好将触发器挂在通用事件上,例如“WHEN-NEW-FORM-INSTANCE”(在第一次打开表单时运行某些东西)或“WHEN-BUTTON-PRESSED”(在按下按钮时运行某些东西 -无论如何按下它,例如鼠标或键盘)

以上是关于PL/SQL 和 Oracle Forms Builder的主要内容,如果未能解决你的问题,请参考以下文章

在 Oracle Forms 中打开 PL/SQL 库 .pll 内容

oracle forms builder pl/sql - 访问从其他列派生的列

Oracle Forms:无法使用数组引用项目名称

Oracle PL/SQL语句基础学习笔记(上)

oracle pl/sql 简介

oracle SQL语句中怎么样调用存储过程