2012-02-13 127 views
0

我是新來的報告服務,所以這個問題可能是瘋了。我正在尋找一種方法來創建一個空的「模板」報告(基本上是一個表格字母),而不必爲我們系統中的每個客戶創建一個報告。該表格信件的一部分是具有任意數量的25個特定字段的部分。的部分被安置成這樣:報告服務和動態字段

Name:   Jesse James 
Date of Birth: 1/1/1800 
Address:  123 Blah Blah Street 
       Anywhere, USA 12345 
Another Field: Data 
Another Field2: More Data 

這些(以及任何其他字段客戶端指定的)可以以任何順序排列,並在左側的標籤可以是任何客戶端決定(例如:「DOB」而不是「出生日期」)。理想情況下,我希望能夠擁有一個Web界面,您可以點擊所需的字段,指定它們出現的順序,並指定自定義標籤的內容。我想出了一種方法來指定標籤並對它們進行排序(並在報告中「動態」加載它們),但是如果可以並允許動態字段(右側)選擇和排序,我想進一步採取這一步驟。問題是,我想在不使用動態SQL的情況下執行此操作。我走了一條包含序號,自定義標籤文本和實際列名的配置表,並嘗試將該表與包含通過information_schema.columns實際包含數據的表連接起來。也許查詢所有的潛在領域,並有一個INNER JOIN做我的過濾(如果有'配置'表等匹配)。這並不像我想的那樣工作:)我猜我在想我可以模擬數據集的功能(它的值和字段名稱已烘焙到對象中)。我意識到這不是嘗試這種壯舉的最佳工具,這正是我被迫與之合作的原因。

配置表將保存許多客戶/報告的配置,我將通過客戶ID過濾。該配置表看起來財產以後這樣的:

客戶ID LabelText的的ColumnName序 1名FName參數1 1姓LName的2 1個出生DOBirth日期3 2客戶端ID的ClientID 1 2姓LName的2 2地址1地址1 3 2地址2地址2 4

所有這一切說:

  1. 有沒有辦法拉斷上述查詢?
  2. 我是否太挑剔不使用動態SQL,因爲相關部分只會拉回一行?然而,有數百個客戶每天運行這個報告(信件)兩三次。

另外,請記住,我沒有試圖在報表上動態創建文本框。我將把這些字段連接成單個字符串並將其轉儲到文本框中,或者我將有多個報告,每個報告都具有期望通用字段名稱(「field1」等)的一定數量的文本框。我輸入的越多,這聽起來就越瘋狂...... 如果沒有辦法做到這一點,我可能會在自定義代碼中找到一些東西;但我的強迫症方想要相信有超過我目前的權力,可以做到這一點在一個閃爍的方式SQL。

回答

0

不知道爲什麼你需要將這一切全部返回到一行中:似乎SSRS會進一步規範化:爲當前報表的配置表中的每一行返回一行。如果您確實需要連接,那麼在報告的嵌入式代碼中執行該操作,或者考慮將表格放在表單中。下面的查詢對你的配置表做了一些假設。它只保存當前報告的配置,還是一次保存許多客戶/報告的配置?此外,您沒有提供有關如何篩選到相應記錄的更多信息,因此我只使用了客戶ID。

SELECT 
    config.ordinal, 
    config.LabelText, 
    CASE config.ColumnName 
     WHEN 'FName' THEN DataRecord.FirstName 
     WHEN 'LName' THEN DataRecord.LastName 
     WHEN 'ClientID' THEN DataRecord.ClientID 
     WHEN 'DOBirth' THEN DataRecord.DOB 
     WHEN 'Address' THEN DataRecord.Address 
     WHEN 'Field' THEN DataRecord.Field 
     WHEN 'Field2' THEN DataRecord.Field2 
     ELSE 
     NULL 
     END AS response 
FROM 
    ConfigurationTable AS config 
LEFT OUTER JOIN 
    DataTable AS DataRecord 
ON config.CustID = DataRecord.CustomerID 
WHERE DataRecord.CustomerID = @CustID 
ORDER BY 
    config.Ordinal 

還有其他方法可以在SSRS或SQL中執行此操作,具體取決於需求的更多詳細信息。

+0

感謝您的回覆@jamief。是的,配置表確實會保存許多客戶/報告的配置,並且我將通過客戶ID進行過濾。該配置表看起來財產以後這樣的: 客戶ID LabelText的的ColumnName序 1名FName參數1 1姓LName的2 1日出生DOBirth的3 2客戶端ID的ClientID 1 2姓LName的2個 2地址1地址1 3 2地址2地址2 4 – DerPflug 2012-02-14 14:16:53

+0

我已經編輯了我的答案,以解釋這些細節。 (順便說一句,在堆棧溢出,我們鼓勵你回去編輯你原來的問題,根據需要添加更多的細節。) – 2012-02-14 14:36:52

+0

你的答案完全適合我的需求。謝謝你的幫助。 – DerPflug 2012-02-14 16:59:21