Oracle Forms:无法使用数组引用项目名称
Posted
技术标签:
【中文标题】Oracle Forms:无法使用数组引用项目名称【英文标题】:Oracle Forms: Cant reference item name with an array 【发布时间】:2021-08-25 11:52:37 【问题描述】:我正在学习使用 Oracle Forms,但在 pl/sql 编辑器中遇到了问题。
我在画布上有许多复选框,并带有“按下按钮时”触发器,我想检查哪些复选框被“选中”。
起初我用复选框的名称声明了一个可变数组 - 例如 ('box_1','box_2',...)。
现在我正在尝试以下语法,但它不起作用:
for i in 1..example_array.count loop
if checkbox_checked(:example_block.array1(i)) then
.....;
它说:错误 49 at line ..., column ... - bad bind variable 'example_block.array1('
但是当我使用复选框的名称时,它会起作用:
for i in 1..example_array.count loop
if checkbox_checked(:example_block.box_1) then
.....;
我无法引用该数组,或者我使用了错误的语法。你能帮帮我吗?
【问题讨论】:
【参考方案1】:您可以使用Name_In
函数,与它一起属于 Forms 不作为预定义例程存在于 PL/SQL 或SQL,为了表示某项的值如
for i in 1..example_array.count
loop
if checkbox_checked(Name_In('example_block.box_'||i)) then ...
【讨论】:
不幸的是它不起作用。它说:错误 222 at line ...,column ... 此范围内不存在名称为“COPY”的函数。是否需要安装“复制”功能? 目前我没有安装 oracleforms,因此无法重现。复制是一个内部函数,不需要安装,用于赋值,可能会产生错误。你能通过直接使用Name_In
函数重试使用checkbox_checked(Name_In('example_block.box_'||i))
吗...@IronMan3000
感谢您提供 Name_In 和 Copy 的提示。 Name_In 在选中时返回复选框的值,所以我以这种方式解决了它,它现在可以工作: ... v_cdummy := to_char('example_block.'||example_array(i)); ...如果 checkbox_checked(v_cdummy) 那么 ...
好消息,我刚刚删除了与Copy
函数相关的部分,可以在以后使用@IronMan3000以上是关于Oracle Forms:无法使用数组引用项目名称的主要内容,如果未能解决你的问题,请参考以下文章