有什么方法可以更新BIRT报告中的值,从而更新数据库?我们需要向客户端提供在Microsoft SQL Server中生成的报告,我们尝试以excel格式提供该报告,但是我们的客户端更改了格式,很难在我们的专有工具中再次使用它 (基于Microsoft SQL)。有什么办法可以做到这一点?客户应更新报告中的值,并将其反映在数据库中
答案 0 :(得分:0)
虽然可以使用servlet从BIRT写回wrtie(请参见Eclipse Community Forum),但我不知道BIRT如何跟踪更改后的值。
尽管很难保存excel文件,但从这些excel文件创建csv文件并比较独立于excel格式更改的csv文件应该更简单。
我看到了价值变化的麻烦,并将其作为与报告无关的独立工作流写回数据库。
答案 1 :(得分:0)
报告工具仅用于生成输出。 如果从更抽象的角度考虑,那么一般自动概念是不可能的:
数据库中有数据D(通常分布在多个表T1,...,Tn中,并记录R1,...,Rm)。 报告输出数据O =(o1,o2,...)是或多或少复杂(与平凡相反)函数f(R1,...,Rm)的结果。 像您梦dream以求的任何一种自动反向传播自动机,都必须知道将o1的值从“垃圾邮件”更改为“鸡蛋”对于R1,...,Rm意味着什么。 ...甚至对于未被f选择的记录,例如,如果用户更改了主键列的值。 仅当函数f是双射的(我不知道英语单词是否正确)时才有可能,但通常f不是双射的。即使是这样,反转非平凡函数的任务也非常困难。
因此,如果要让用户更改值并将更改保留在数据库内部,则需要某种数据库UI或某种导入接口。
取决于您的数据库,它可能与让用户使用Oracle SQL * developer或支持从excel表格中导入数据的类似工具一样简单。 但是,顾名思义,这些工具是供SQL开发人员使用的。
OTOH,如果您只想在BIRT中执行DML语句,则可以间接实现:您可以在执行DML的数据库中编写存储过程,然后从BIRT调用这些过程(使用JDBC存储过程查询代替JDBC SQL选择查询)。