【问题标题】:CheckBox in Oracle FormsOracle Forms 中的复选框
【发布时间】:2014-04-11 03:27:14
【问题描述】:

我有一个包含 3 列的数据库块。因为都是字符列。 我在一个包含 2 个文本项和一个复选框的表单中创建了一个多记录块。

表格中的数值如下所示

col1 col2 col3

值1 值2 N

值3 值4 N

值 5 值 6 是的

在表单中,我只想在 col3 中查找值为“N”的记录。

我想使用 Enter - Query,Execute Query 方法查找值,但在我的表单中,col3 是复选框。如果勾选 -Y,未勾选的值为 'N'。

我知道,我们无法使用 Enter - Query, Execute Query 方法搜索“N”值。

还有其他方法可以搜索吗?

【问题讨论】:

  • 您可以覆盖块的pre-query触发器并根据复选框的值设置where clause

标签: oracle oracleforms


【解决方案1】:

您的问题是,在输入查询标准功能中,复选框包含一个空值(null)并且未被选中。要搜索未选中的值,只需进入输入查询模式并单击复选框以在您的情况下获得“Y”值,然后再次单击它以获得“N”值。从现在开始,您可以选中和取消选中该值。 如果您犯了一个错误并希望它再次为空,请使用清除项目键将其设置回 null。

【讨论】:

  • 如果您为复选框设置了一个初始值,那么当您进入输入查询模式时它不会为 NULL。
  • 不这样不对,初始值是默认值,只针对新记录。不用于查询
  • 请参阅我的帖子,使用该设置查询确实有效,无需先单击复选框。虽然它可能是初始值和其他值的复选框映射设置为“不允许”的组合。
  • 谢谢。这是我需要的。
【解决方案2】:

如果您想允许基于复选框查询块,您需要将复选框值存储在某处,可能在块所基于的表的 Y/N 列中。

在查询块之前,您只需要确保复选框值已发布到数据库。

如果您无法将它们保存到表本身,另一种方法是将它们保存在其他地方,但它必须是查询本身可以访问的东西 - 例如一个全局临时表。

【讨论】:

  • 我正在存储复选框值。在表单中,我只想查询 col3 中值为“N”的记录。我们如何做到这一点?
  • 我告诉过你。您需要将复选框值存储在数据库可以访问它们的位置。当您在服务器上运行查询时,它无法从在客户端上实现的复选框中读取值。
【解决方案3】:

为什么不使用复选框从 col3 中输入所需的搜索条件?我不明白为什么这是不可能的,我什至快速测试了它。请尝试以下方法

为 col3 设置复选框的属性,如下所示

  • 选中时的值 = Y
  • 未选中时的值 = N
  • 其他值的复选框映射 = 不允许
  • 初始值 = N 或 Y,无论您的业务需要什么
  • 数据库项 = 是
  • 列名 = col3

如果使用这种设置,您可以在进入查询模式下选择是否要查询 col3 = N,方法是确保在执行查询时取消选中该复选框。

【讨论】:

    猜你喜欢
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2022-06-16
    • 2019-07-14
    • 2015-08-03
    相关资源
    最近更新 更多