Oracle窗体中的For循环
我有一个Oracle表单项目。 这个项目是这样进行的 我有一个数据库,它有一个名为Oracle窗体中的For循环,oracle,oracle12c,oracleforms,Oracle,Oracle12c,Oracleforms,我有一个Oracle表单项目。 这个项目是这样进行的 我有一个数据库,它有一个名为students\u payment的表。 表单只有两个块 第一个名为date\u 1的块包含from\u date和to\u date 当你把2019年3月14日定为2020年3月14日时 然后按enter键 第二个块名为details\u 1。它是表格,将有三个显示项目: 学生国籍 支付 非付费 它将像这样填充表格 Nationality USA paid 65 Non_p
students\u payment
的表。
表单只有两个块
第一个名为date\u 1
的块包含from\u date和to\u date当你把2019年3月14日定为2020年3月14日时
然后按enter键
第二个块名为
details\u 1
。它是表格,将有三个显示项目:
Nationality USA
paid 65
Non_paid 36
这意味着缴纳大学学费的美国学生是65岁,不缴纳的是36岁
我做了所有这些,但问题是,我把我的代码没有国籍条件,所以它会带来所有国籍。但它只带来了美国的第一张唱片
如何将select语句放入FOR循环中,将第一个国家/地区放入第一条记录,将第二个国家/地区放入第二条记录,依此类推,适用于所有国家/地区 你说的是一件事,展示的是另一件事,而这两件事并不匹配 如果第二个块是表格,那么它的布局应该如下所示
Nationality Paid Non-paid
----------- ---- --------
USA 65 35
France 70 30
i、 不是你拥有它的方式;您的布局是表单,而不是表格。我建议您删除该块并从头开始创建,但这次请注意向导的要求
它还将解决您当前遇到的问题;表单布局一次显示一条记录。表格布局显示多条记录
据我所知,这两个街区之间没有关系。第一个块中使用的值用于限制第二个块中返回的行。因此,第二个块必须是基于表的数据库块(如果您现在有控制块,请不要将其设为控制块)。这样做,即使第一个块中没有任何内容,当您定位到第二个块并执行查询时,您也会得到该表中存储的所有行。表单自动完成这项工作,您不必编写一行代码
用于您提到的
循环?在我看来,你应该避免。它在数据库块中几乎总是错误的选择,但可以在控制块中使用。但是,为什么要麻烦呢?让表格来做肮脏的工作
现在,回到结果限制:您可以在第二个块上使用PRE-BLOCK
触发器,并使用SET\u BLOCK\u属性
内置&itsONETIME\u WHERE
属性,使用第一个块中的日期项,例如
set_block_property('second_block',
onetime_where,
'date_column between :first_block.date_from and :second_block.date_to');
或者,使用第二个块的特性选项板并将WHERE
子句设置为
where date_column between :first_block.date_from and :second_block.date_to
我知道你的意思,当我把我的代码,它只是显示我的第一个记录美国学生,然后第二列没有什么,这就是为什么我需要一个for循环对吗?不;很可能是错的。如果它是一个数据库块,那么表单将返回满足条件的所有行。你唯一的条件是约会。这意味着只有USA满足条件,并且只返回该行。在SQL*Plus(或SQL Developer或TOAD或您使用的任何工具)中测试它。