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获取地址的动态参数
但是它显示了所有地址,而我希望它只显示过滤到当前客户的地址
答案 0 :(得分:0)
我应该将此作为评论发布,但我没有积分等。
根据我的理解,您需要连接CustomerID上的表。这将自动将客户链接到其地址。其次,您不需要参数来选择正确的客户地址,您应该将数据库字段地址放在DELIVERY_PLACE中。我没有你的数据库,所以如果两个表已经链接,我就缺乏知识。请右键单击databasefileds节点并显示sql查询..然后发布以便更好地理解。 您还可以将RecordSelection公式更改为{CUSTOMER.ID_CUSTOMER} = 1并{DELIVERY_PLACE.ID_CUSTOMER} = 1
这将根据表中的条目为每个客户显示两个地址。如果要在运行时从地址表中选择单个地址。你需要把它放在记录选择公式中说.. {DELIVERY_PLACE.ID_DELIVERY} = {?DeliveryPlace} 此外,最好将ID_DELIVERY提供给参数而不是完整地址。