命令对象将参数传递给查询水晶报表

时间:2015-03-12 11:44:45

标签: sql sql-server parameters crystal-reports command

我刚刚决定讨厌水晶报道......

我在命令中有一个查询,它会向我提供增值税更改历史记录的结果。

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 =' SI150000004' 至     s.InvNo = {InvN}

其中要求我在保存时链接到列,我这样做是为了InvNo。

这没有显示正确的费率,并且每个条目重复约100次 - 发票行中只有5行,而且我的页面超过200页。

通过抑制具有相同描述和净价的行来解决重复问题。

我的报告是基本的>描述,净价,增值税,费率,总价。

对于2010年1月1日至2011年1月3日期间创建的发票,费率应为17.5%但我每次只能获得20%...

这有意义吗?我很困惑......

0 个答案:

没有答案