2017-03-03 54 views
1

我们有一些报告,目前正在从我们想要转换为SSRS报告的Access数据库的宏内运行。SSRS从Access转换查询

我想将Access查询转换为共享数据集,这些报告可以共享,因为有两个参数我想要传入此共享数据集,但我遇到了一个问题使此工作。

SELECT * FROM FROM ReportLog WHERE ClientName = [ClientNameParameter] AND 
DateEntered BETWEEN getstartdatedaily() AND DATE() - 1 
ORDER BY DateEntered; 

上面的查询是我想要放进共享Dateset什么,但对于每一个报告,我会传递到查询的客户端名称(我不希望报告提示该用户)和getStartDateDaily是Access中的一个函数,我不确定如何将其转换为SSRS可以使用的内容。下面是运行该函数的代码,因为我不确定如何将其转换为SSRS报告可以使用的参数/函数。

Public Function getStartDateDaily() As Date 
    Dim startDate As Date 
    Dim endDate As Date 
    If Weekday(Date) = 2 Then 
     startDate = Date - 3 
    Else 
     startDate = Date - 1 
    End If 
    getStartDateDaily = startDate 
End Function 

非常感谢任何帮助。

回答

0

罗斯文隐喻例如

Use Northwind 
Go 

Select * from 
(

SELECT [OrderID] 
     ,[CustomerID] 
     ,[EmployeeID] 
     ,[OrderDate] 
     ,[RequiredDate] 
     ,[ShippedDate] 
     ,[ShipVia] 
     ,[Freight] 
     ,[ShipName] 
     ,[ShipAddress] 
     ,[ShipCity] 
     ,[ShipRegion] 
     ,[ShipPostalCode] 
     ,[ShipCountry] 
     ,DATEPART(dw,[OrderDate]) as MyDATEPART 
     , StartDateDaily = 
     CASE 
     WHEN DATEPART(dw,[OrderDate]) = 2 THEN DATEADD(d, -3, CURRENT_TIMESTAMP)--Date - 3 
     ELSE DATEADD(d, -1, CURRENT_TIMESTAMP) -- Date - 1 
     END 
    FROM [Northwind].[dbo].[Orders] 
) as derived1 

Where OrderDate between StartDateDaily and DATEADD(d, - 1, CURRENT_TIMESTAMP) 

上述工作。

我猜你:(提示,暂时低于注释掉where子句看到方程的计算值(MyDATEPART和StartDateDaily),必要时调整的)

Select * from 
(

SELECT * 
     ,DATEPART(dw,DateEntered) as MyDATEPART 
     , StartDateDaily = 
     CASE 
     WHEN DATEPART(dw,DateEntered) = 2 THEN DATEADD(d, -3, CURRENT_TIMESTAMP) 
     ELSE DATEADD(d, -1, CURRENT_TIMESTAMP) 
     END 
    FROM ReportLog 
) as derived1 

Where DateEntered between StartDateDaily and DATEADD(d, - 1, CURRENT_TIMESTAMP) 
+0

这对函数的伟大工程。非常感谢帮助。我不能做一个“向上”的箭头,虽然我不到15分,但帮助很大。非常感谢 –

+0

如果您在很多地方使用getStartDateDaily,可以将其封装在用户定义的(标量)函数中。 https://msdn.microsoft.com/en-us/library/ms191320.aspx?f=255&MSPPError=-2147217396#Scalar功能 – granadaCoder

+0

请注意,您不应在生产代码中使用“select *”。将所有/任何/必要的列名放入查询中。 – granadaCoder