Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 server 2008 使用打印的简单基于文本的报表MS SQL Server 2008_Sql Server 2008_Reporting Services - Fatal编程技术网

Sql server 2008 使用打印的简单基于文本的报表MS SQL Server 2008

Sql server 2008 使用打印的简单基于文本的报表MS SQL Server 2008,sql-server-2008,reporting-services,Sql Server 2008,Reporting Services,我的第一项作业快完成了,但最后一个问题把我难住了 它要求: 制作一份故障产品报告,其中显示2010年7月11日因外部损坏而退回的产品 这方面的预期产出是: 故障产品报告 -------------------------------------- 品名:书桌 客户名称:Simon,Kernel 原因:外部损坏 (1行受影响) ---报告结束--- 我发现了SQLPRINT,现在我几乎把它归结为一个T: DECLARE @ProductName varchar(30) SET @ProductNa

我的第一项作业快完成了,但最后一个问题把我难住了

它要求:

制作一份故障产品报告,其中显示2010年7月11日因外部损坏而退回的产品

这方面的预期产出是:

故障产品报告

--------------------------------------

品名:书桌

客户名称:Simon,Kernel

原因:外部损坏

(1行受影响)

---报告结束---

我发现了SQL
PRINT
,现在我几乎把它归结为一个T:

DECLARE @ProductName varchar(30)
SET @ProductName =(SELECT MIN(Products.ProductName) FROM Products)

DECLARE @CustomerName varchar(75)
SET @CustomerName =(SELECT MIN(Customers.FirstName+', '+Customers.Surname) 
FROM Customers,CustomerReturns,Products
WHERE CustomerReturns.ReturnDate='2012/07/11'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID)

DECLARE @Reason varchar(30)
SET @Reason =(SELECT MIN(CustomerReturns.Reason) 
FROM CustomerReturns,Products,Customers
WHERE CustomerReturns.Reason='Damaged Exterior')

PRINT 'FAULTY PRODUCT REPORT';
PRINT '';
PRINT '---------------------';
PRINT 'Product Name: '+@ProductName;
PRINT 'Customer Name: '+@CustomerName;
PRINT 'Reason: '+@Reason;
PRINT '';
PRINT '---END OF REPORT---';
以及我的输出:

故障产品报告

--------------------------------------

品名:书桌

客户名称:Simon,Kernel

原因:外部损坏

---报告结束---

正如你所看到的,我仍然缺少:

(1行受影响)

我怎样才能在不作弊、不打印的情况下让它出现呢?(因为无论返回多少结果,它都将保持不变)

编辑:

我发现这样做:
选择@ProductName…
会产生1条受影响的路径,是否正确

PRINT 'FAULTY PRODUCT REPORT';
PRINT '';
PRINT '---------------------';
PRINT 'Product Name: '+@ProductName;
PRINT 'Customer Name: '+@CustomerName;
PRINT 'Reason: '+@Reason;
SELECT @ProductName,@CustomerName,@Reason
PRINT '';
PRINT '---END OF REPORT---';
EIDT2:

将其更改为:

DECLARE @PName varchar(35)
DECLARE @CName varchar(75)
DECLARE @RName varchar(75)
SELECT @PName=Products.ProductName,
 @CName=Customers.FirstName+', '+Customers.Surname ,
 @RName=CustomerReturns.Reason

FROM Products,Customers,CustomerReturns

WHERE CustomerReturns.ReturnDate='2012/09/28'
AND CustomerReturns.Reason='Damaged Exterior'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID
PRINT @PName
PRINT @CName
PRINT @RName
但还是没有影响到什么


非常感谢您提供的任何帮助。

选择
更新
插入
删除
都使用消息选项卡输出受操作影响的行数。(NOCOUNT标志可能会影响这一点,但我还没有做任何研究来支持这一点)

您已经确定,
SELECT
语句是显示
(受影响的1行)
文本输出的一种方式;然而,有不止一种方法可以产生这种输出


您当前的查询似乎符合作业要求的大部分内容-这可能是一个很好的时机,可以将其提交给您的讲师,并要求他们澄清他们想要的内容。

选择
更新
INSERT
DELETE
都使用Messages选项卡输出受操作影响的行数。(NOCOUNT
标志可能会影响这一点,但我还没有做任何研究来支持这一点)

您已经确定,
SELECT
语句是显示
(受影响的1行)
文本输出的一种方式;然而,有不止一种方法可以产生这种输出


您当前的查询似乎符合作业要求的大部分内容-这可能是一个很好的时机,可以将其提交给您的讲师,并要求澄清他们想要的内容。

在您的查询之后,看看如何使用
@@ROWCOUNT
函数。此函数返回受上一条语句影响的行数

使用上面的第二次编辑,您可以执行以下操作:

DECLARE @PName varchar(35) 
DECLARE @CName varchar(75) 
DECLARE @RName varchar(75)
DECLARE @rowCount int 
SELECT @PName=Products.ProductName, 
 @CName=Customers.FirstName+', '+Customers.Surname , 
 @RName=CustomerReturns.Reason 

FROM Products,Customers,CustomerReturns 

WHERE CustomerReturns.ReturnDate='2012/09/28' 
AND CustomerReturns.Reason='Damaged Exterior' 
AND Products.ProductID=CustomerReturns.ProductID 
AND Customers.CustomerID=CustomerReturns.CustomerID

SET @rowCount = @@ROWCOUNT

PRINT @PName 
PRINT @CName 
PRINT @RName 
--Use @rowCount in your report.
请注意,必须在执行查询后立即获取行计数。这样,无论你得到多少行,你都会得到正确的数字——避免你提到的“作弊”场景


希望这能有所帮助。

在查询之后,看看如何使用
@@ROWCOUNT
函数。此函数返回受上一条语句影响的行数

使用上面的第二次编辑,您可以执行以下操作:

DECLARE @PName varchar(35) 
DECLARE @CName varchar(75) 
DECLARE @RName varchar(75)
DECLARE @rowCount int 
SELECT @PName=Products.ProductName, 
 @CName=Customers.FirstName+', '+Customers.Surname , 
 @RName=CustomerReturns.Reason 

FROM Products,Customers,CustomerReturns 

WHERE CustomerReturns.ReturnDate='2012/09/28' 
AND CustomerReturns.Reason='Damaged Exterior' 
AND Products.ProductID=CustomerReturns.ProductID 
AND Customers.CustomerID=CustomerReturns.CustomerID

SET @rowCount = @@ROWCOUNT

PRINT @PName 
PRINT @CName 
PRINT @RName 
--Use @rowCount in your report.
请注意,必须在执行查询后立即获取行计数。这样,无论你得到多少行,你都会得到正确的数字——避免你提到的“作弊”场景


希望这能有所帮助。

正如我最初提到的:
(受影响的1行)
行是一个标准输出,用于选择、更新、插入、删除等。问题是,您正在从解决方案文本向后工作,并试图找出如何生成该行
(受影响的1行)
。由于有多种方法可以获得该行,因此真正解决问题的唯一方法是询问看到原始查询的人,如您的导师。谢谢,如果没有其他帮助答案,我会将其标记为已解决/答案,如我最初提到的:
(受影响的1行)
行是SELECT使用的标准输出,更新、插入、删除等。问题是您正在从解决方案文本向后操作,并试图找出如何生成行
(受影响的1行)
。因为有多种方法可以得到答案,所以真正解决问题的唯一方法就是问那些看过原始问题的人,比如你的导师。谢谢你,如果没有其他帮助的答案,我会把这个标记为已解决/答案谢谢,这看起来更像我需要的。谢谢你,这看起来更像是我需要的。你是最棒的:P