Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将参数传递到查询水晶报表的命令对象_Sql_Sql Server_Parameters_Crystal Reports_Command - Fatal编程技术网

Sql 将参数传递到查询水晶报表的命令对象

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 )

我刚决定我讨厌水晶报告

我在命令中得到了一个查询,它给出了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
        ), '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任务。。。如果你需要更多的帮助,请告诉我。