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/SQLSQL,为了表示某项的值如

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:无法使用数组引用项目名称的主要内容,如果未能解决你的问题,请参考以下文章

添加对 Xamarin.Forms 的项目引用

Xamarin.Forms 调试

在 Oracle Forms 10g 中动态设置“Copy value from item”的值

Oracle Forms 编译器将类型标记为函数

Oracle Forms Builder:无法执行查询

SQL Server2008 存储过程传入表名称和列名称,如何在语句中使用表明引用列名?