【发布时间】:2017-01-19 12:21:41
【问题描述】:
Crystal Reports 中可以使用动态参数 - 参数选择列表不是固定的,而是在报表中输入的,而是从某个数据库表中获取的。例如在这里描述:
https://www.youtube.com/watch?v=kuHs89yyuEc
我的问题是,以这种方式创建的参数允许从表中的所有值中进行选择。
我想根据报告中的数据对其进行过滤。
例如:我的报告代表一张发票。它按发票 ID 过滤为单个发票。参数允许选择发票的交货地点。但我不想从表中的所有交货地点中进行选择。相反,我希望该参数仅显示发票中客户的交货地点。
假设 customer_id 是报表中的公式字段,而交货地点是类似的表格
id customer_id street city ...
是否可以按照我描述的方式过滤动态参数?
编辑: 也许一个简单的例子会有所帮助。 我创建了一个包含两个表的测试数据库(我正在使用 Sql Server):
CREATE DATABASE TEST
USE TEST
CREATE TABLE [dbo].[DELIVERY_PLACE](
[ID_DELIVERY] [int] NULL,
[ID_CUSTOMER] [int] NULL,
[ADDRESS] [varchar](50) NULL
) ON [PRIMARY]
INSERT [dbo].[DELIVERY_PLACE] ([ID_DELIVERY], [ID_CUSTOMER], [ADDRESS]) VALUES (1, 1, N'Address A1')
INSERT [dbo].[DELIVERY_PLACE] ([ID_DELIVERY], [ID_CUSTOMER], [ADDRESS]) VALUES (2, 1, N'Address A2')
INSERT [dbo].[DELIVERY_PLACE] ([ID_DELIVERY], [ID_CUSTOMER], [ADDRESS]) VALUES (3, 2, N'Address B1')
INSERT [dbo].[DELIVERY_PLACE] ([ID_DELIVERY], [ID_CUSTOMER], [ADDRESS]) VALUES (4, 2, N'Address B2')
CREATE TABLE [dbo].[CUSTOMER](
[ID_CUSTOMER] [int] NULL,
[NAME] [varchar](20) NULL
) ON [PRIMARY]
INSERT [dbo].[CUSTOMER] ([ID_CUSTOMER], [NAME]) VALUES (1, N'Customer A')
INSERT [dbo].[CUSTOMER] ([ID_CUSTOMER], [NAME]) VALUES (2, N'Customer B')
我已经使用这个数据库做了一份报告。你可以在这里得到它: https://www.sendspace.com/file/907wq9
报告过滤到 CUSTOMER_ID=1
报告中的DELIVERY_PLACE 表通过外键链接到CUSTOMER 表:CUSTOMER_ID
我有一个动态参数,它从 DELIVERY_TABLE 获取地址
但它显示所有地址,而我希望它只显示过滤给当前客户的地址
【问题讨论】:
-
如果表之间有正确的链接,那么您可以根据需要创建参数...在创建参数时使用静态而不是动态
-
有可能.. 可以创建动态参数
-
如果我误解了你的问题,请纠正我。它关于显示过滤值(即表格列中的位置)以供选择动态参数(即位置)。过滤后的值取决于发票 ID 和客户 ID 的值。因此,期望水晶报告在显示/刷新报告时应该知道发票 ID 的可用客户 ID。据我所知,在尚未指定客户 ID 时无法显示过滤值。
-
你没有回答我的评论?
-
Siva:我相信我有一个正确的链接,它仍然显示所有值,所以你的回答对我没有帮助。
标签: crystal-reports