2017-03-03 50 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