Tsql 报表服务和动态字段
我是报告服务新手,所以这个问题可能有点疯狂。我正在寻找一种方法来创建一个空的“模板”报告(基本上是一个表格),而不是为我们系统中的每个客户创建一个。此表单信函的一部分是包含任意数量的25个特定字段的部分。本节的安排如下:Tsql 报表服务和动态字段,tsql,dynamic,reporting-services,Tsql,Dynamic,Reporting Services,我是报告服务新手,所以这个问题可能有点疯狂。我正在寻找一种方法来创建一个空的“模板”报告(基本上是一个表格),而不是为我们系统中的每个客户创建一个。此表单信函的一部分是包含任意数量的25个特定字段的部分。本节的安排如下: Name: Jesse James Date of Birth: 1/1/1800 Address: 123 Blah Blah Street Anywhere, USA 12345 Another Field
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将该表与实际包含数据的表连接起来。也许查询所有可能的字段并使用内部联接进行筛选(如果“配置”表中有匹配项,等等)。这和我想象的不一样:)我想我在想我可以模拟数据集的功能(它将值和字段名烘焙到对象中)。我意识到这不是尝试这样一个壮举的最佳工具,这只是我被迫使用的工具
配置表将保存许多客户/报告的配置,我将根据客户ID进行筛选。配置表将如下所示:
CustID LabelText ColumnName序号
1名字FName 1
1姓LName 2
1出生日期出生日期3
2客户端ID客户端ID 1
2姓LName 2
2地址1地址1 3
2地址2地址2 4
所有这些都表明:
如果没有办法做到这一点,我可能会在自定义代码中弄虚作假;但我的OCD团队希望相信,在我目前的能力之外,还有SQL可以以更灵活的方式完成这项工作。不确定为什么需要将这些数据全部返回到一行中: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实现这一点。谢谢您的回复@jamief。对配置表实际上会保存许多客户/报告的配置,我会按客户ID进行筛选。配置表看起来是这样的:CustID LabelText ColumnName序号1 First Name FName 1 Last Name LName 2 1出生日期DOBirth3 2客户ID客户ID 1 2姓氏2 2地址1地址1 3 2地址2地址2地址2 4我已对我的答案稍加编辑,以说明这些详细信息。(顺便说一句,在Stack Overflow,我们鼓励您返回并编辑原始问题,根据需要添加更多细节。)您的答案完全符合我的需要。谢谢你的帮助。