Sql 将参数传递到查询水晶报表的命令对象
我刚决定我讨厌水晶报告 我在命令中得到了一个查询,它给出了VAT更改历史的结果Sql 将参数传递到查询水晶报表的命令对象,sql,sql-server,parameters,crystal-reports,command,Sql,Sql Server,Parameters,Crystal Reports,Command,我刚决定我讨厌水晶报告 我在命令中得到了一个查询,它给出了VAT更改历史的结果 SELECT v1.StartDate, isnull(( SELECT TOP 1 v2.StartDate -1 FROM [HISTVAT] AS v2 WHERE v2.StartDate > v1.StartDate and v1.VATCode=v2.VATCode ORDER BY v2.StartDate asc )
SELECT v1.StartDate,
isnull((
SELECT TOP 1 v2.StartDate -1
FROM [HISTVAT] AS v2
WHERE v2.StartDate > v1.StartDate and v1.VATCode=v2.VATCode
ORDER BY v2.StartDate asc
), '9999-12-31') AS EndDate,
v1.VATCode,
v1.Rate
FROM [HISTVAT] AS v1
这个结果是:
+-----------+------------+---------+------+
| StartDate | EndDate | VATCode | Rate |
+-----------+------------+---------+------+
|2001-01-01 | 9999-12-31 | VAT1 | 0% |
|2001-01-01 | 9999-12-31 | VAT2 | 0% |
|2008-12-01 | 2009-12-31 | VAT3 | 20% |
|2010-01-01 | 2011-01-03 | VAT3 |17.5% |
|2011-01-04 | 9999-12-31 | VAT3 | 20% |
+-----------------------------------------+
我已将查询更改为:
SELECT innerTable.*
FROM (
SELECT v1.StartDate,
isnull((
SELECT TOP 1 v2.StartDate - 1
FROM HISTVAT AS v2
WHERE v2.StartDate > v1.StartDate
AND v1.VATCode = v2.VATCode
ORDER BY v2.StartDate
), '9999-12-31') AS 'EndDate',
v1.VATCode,
v1.Rate
FROM HISTVAT AS v1
) AS innerTable
INNER JOIN VAT T
ON innerTable.VATCode = T.VATCode
INNER JOIN INVOICES s
ON s.VATCode = T.VATCode
WHERE s.InvNo = 'SI150000004'
AND s.InvDate BETWEEN innerTable.StartDate
AND innerTable.EndDate
ORDER BY s.InvNo ASC
现在我要做的是将发票号作为参数传递,该参数来自主报表上的选择,因此我的查询使用选择数据的发票号来过滤查询本身
为此,我更改了:
s、 InvNo='SI15000004'
到
s、 InvNo={InvN}
它要求我在保存时链接到一个列,我这样做是为了InvNo
这并没有显示正确的费率,而且每个条目重复了大约100次——发票行中只有5行,我得到了200多页
我通过抑制具有相同描述和净价的行来解决重复问题
我的报告是基本描述、净价、增值税、税率、总价
对于2010年1月1日至2011年1月3日之间创建的发票,费率应为17.5%,但我每次只能得到20%
这有意义吗?我很困惑……第一个问题是更改查询的目的是什么?其次,如果数据重复次数
100次
,则不应禁止,您需要检查查询和水晶报表设计。现在,为什么您总是依赖查询来获得所需的结果。。为什么不尝试使用crystal reports功能来完成这项任务呢。最后,停止憎恨crystal reports并开始理解它,然后你将获得你的taskHi Siva,在我的db上,我有一个表,它只保存每个VAT代码的起始日期,如果一个VAT代码被更改,它将保留记录,复制具有相同代码但不同起始日期的条目。我的任务是给一个文档编号,我需要将其日期与命令的日期范围进行比较。现在,我用正确的值和100多条记录的复制使它工作(好的,差不多)。我现在的问题是将它实现到Sage X3,但我不认为这里的任何人都能提供帮助:)无论如何,谢谢你我很高兴你能够完成你的crystal report任务。。。如果你需要更多的帮助,请告诉我。