-1

我正在开发一个应用程序,它采用一些原始输入数据并将其转换为通过一系列步骤计算最终结果。在这些步骤中的每一个,都有可能的用户输入(例如,权重、选择相关行等)。我已经设置了基本分析,但我的目标是在多用户环境中部署它。我不希望发生的是一个用户设置他们的输入,让另一个用户更改一些输入,并且都得到意想不到的结果。

当用户进入应用程序时,我希望他们在开始会话时获得所有主数据库表的副本,然后能够更改所有输入(甚至可能添加原始数据),运行分析和生成与所有其他用户的输出分开的输出。此输出可能会导出到 Excel,或者可以在以后提取。然后,如果用户想要对实际的数据库表(所有其他用户都会看到)进行更改,他们可以提交部分或全部更改。

我是 Oracle 和 APEX 新手,并且一直在阅读我可以接触到的所有文档和书籍,但需要帮助确定解决这个问题的好方法,或者至少是相关阅读。

4

1 回答 1

1

我认为您必须使用 APEX 集合。

http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35127/apex_collection.htm

升级版:

您必须寻找顶点集合。首先:当用户登录时,为每个要更改的表创建一个空的顶点集合。集合名称必须像对应的表一样命名。然后你可以为每个集合创建视图,看起来像(让表名是“tmp_tab”):

create or replace view tmp_v as
select
  t.c001 as id
, t.c002 as column1
, t.c003 as column2
 from apex_collections t
 where collection_name = 'tmp_tab';

然后在表 tmp_tab 的每个报告中将该表与他对相应集合的视图连接起来。报告代码如下所示:

select
  t.id
, nvl(v.column1, t.column1) column1
, nvl(v.column2, t.column2) column2
 from tmp_tab t
 left join tmp_v v on v.id = t.id

然后,当用户编辑数据时,将此数据保存在表中,将其保存在集合中。完成所有更改后,如果用户想要保存所有用户的数据,请将数据从相应的集合中移动到表中。这种方式是最正确的,并且您不会更改数据模型。

于 2013-04-17T15:22:11.253 回答