我有一个第三方程序,它使用数据库表来显示用户在屏幕上创建的(在应用程序内)字段,所以我有一个名为User_Created_Fields的表,看起来像
TABLE FIELD_NAME GROUP LABEL
products charge1 1 First Charge
products begin_date1 1 Begin Date
products end_date1 1 End Date
products charge2 2 First Charge
products begin_date2 2 Begin Date
products end_date2 2 End Date
当应用在表格中看到此内容时,它会在应用中显示以下内容
Group 1
First Charge *text area for input*
Begin Date *text area for input*
End Date *text area for input*
----------
Group 2
First Charge *text area for input*
Begin Date *text area for input*
End Date *text area for input*
应用程序将这些字段的数据保存到User_Created_Fields表中指定的表和字段名称,以便PRODUC.charge1和PRODUCTS.charge2字段(对应的日期字段也是如此)。
现在我需要创建一个报告,选择存储在Products表中的值,但是......因为这些字段将由用户添加,我需要选择的列来自User_Created_Fields表中的Table和field_name列
所以输出看起来像
PRODUCTS.Begin_date, PRODUCTS.End_date, PRODUCTS.Charge1, User_Created_Fields.Group
查询看起来(非常粗略)像
select (select Table ||'.'||field_name from User_Created_Fields where Label='First Charge' and Group= (select Group from User_created_fields where label ='First Charge') ) from Products
这是一个水晶报告,所以我不能像我通常那样使用sql来生成sql。可能有更多的水晶esq方式来做到这一点,但我不知道它是什么。这个信息显然会与销售细节结合起来,但是我把这部分留给了简单的部分,因为这部分是非常复杂的。我正在使用水晶11和oracle 10
如果你已经阅读了所有这些,你应该获得奖励....谢谢你。
答案 0 :(得分:0)
据我所知,Crystal Reports可以访问存储过程而不是sql语句。因此,将您的代码用于在存储过程中创建sql语句,并将其用作报告的数据源。
您可能需要确定要支持的最大列数,并始终返回该列数以使水晶满意。