2012-05-15 28 views
0

我有第三方程序使用數據庫表來顯示用戶在屏幕上創建(在應用程序內)字段,所以我有一個名爲User_Created_Fields的表,像根據第二個select語句選擇要包含在select中的列

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表指定表名和字段名如下表,以便PRODUCTS.charge1和PRODUCTS.charge2字段s(對於相應的日期字段也是一樣的)。

現在我需要創建一個報表,選擇存儲在Products表中的值,但是...因爲這些字段將由用戶添加,所以我需要選擇來自表中的列和User_Created_Fields中的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

我可以得到選擇運行,但是...它總是隻返回表格名稱和字段名稱作爲文本...它不會實際執行表格和字段名稱作爲選擇的一部分 – user1023993

+0

您可以使用動態SQL,存儲過程和全局臨時表的組合來實現此目的,有些參考資料可以查看以下鏈接http://www.dbforums.com/crystal-reports/1634385-using-oracle-package-data-source-report .html – psaraj12

回答

0

據我所知,Crystal Reports可以訪問存儲過程而不是sql語句。因此,將您的代碼用於在存儲過程中創建sql語句並將其用作報表的數據源。

您可能需要確定支持的最大列數,並始終返回該列數以使水晶開心。

+0

最終用戶可以更改列數。猜猜我可以添加一個很高的數字,報告將被設置一段時間,但是,如果沒有必要的話會更好 – user1023993

相關問題