我正在尝试在VS2015中创建一个Crystal Report,但是我遇到了存储过程的问题。当我在没有存储过程的情况下运行报表时,它会获得所需的所有数据,并且所有组和公式都能正常工作。下面是我的主要SQL代码。
SELECT type, description, hire_status, fleet_no, location, date_starting, time_finishing, date_finishing, type, week_number, changes
FROM XXXXXX INNER JOIN XXXXXX ON fleet_no= XXXXXX.fleet_no
WHERE week_number= @weekNo
当我尝试向报告添加存储过程时,我只收到一个空白报告,我丢失了报告中的所有数据。存储过程如下:
USE [xxxxxx]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [XXXXXXX].[getCurrentLocation]
@fleet varchar(50) = NULL
AS
Begin
SELECT TOP 1 (dbo.tbl_job_planning.location)
FROM dbo.tbl_job_planning
WHERE (fleet_no = @fleet) AND (date_starting <= DATEADD(week, DATEDIFF(day, 0, GETDATE()) / 7, 5))
ORDER BY date_starting DESC
end;
我将参数传递给记录选择中的此存储过程。 我希望存储过程在报告的每一行显示一个位置。当我仅使用存储过程运行报表时,我只返回1个值,而不是报表中每个项目的值,这是我需要的。
答案 0 :(得分:1)
因为您正在指定,您将获得1个值
SELECT TOP 1 (dbo.tbl_job_planning.location)
。只需删除TOP 1
或将1
设置为您想要限制的数量,但肯定不是您指定的结果