2015-12-14 39 views
1

我有一份列出發票的水晶報告,我希望能夠在報告的另一列中顯示發票的文件路徑。以下查詢允許我根據其唯一ID號搜索文檔。然後顯示我搜索的一個文檔的文件位置,但是我希望這適用於報告中列出的所有文檔。有人能幫我解決這個問題嗎?在Crystal Report中顯示文檔的文件路徑

`DECLARE @entryID INT = 35793 

SELECT dbo.toc.name AS DocumentName, dbo.doc.pagenum + 1 AS PageNum, dbo.vol.fixpath + '\' + 
SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2),1,2) + '\' + 
SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2),3,2) + '\' + 
SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2),5,2) + '\' + 
CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2) + '.TIF' AS FullPathAndFilename 
FROM dbo.doc 
LEFT JOIN dbo.toc ON dbo.doc.tocid = dbo.toc.tocid 
LEFT JOIN dbo.vol ON dbo.toc.vol_id = dbo.vol.vol_id 
WHERE dbo.doc.tocid = @entryID 
ORDER BY dbo.doc.pagenum` 
+0

無法理解您的要求? – Siva

回答

0

的答案取決於你目前如何檢索現有的水晶報表數據。

選項A:如果報表數據源是「命令」(換句話說,你已經寫在檢索您需要的數據的水晶報表SQL語句),那麼你將要修改命令通過子查詢拉入這些新的信息。因此,例如,如果你目前的報告SQL是一樣的東西,你會希望它是像「選擇X *從富爲x」:

select x.*, 
    (SELECT dbo.vol.fixpath + '\' 
    + SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2),1,2) + '\' 
    + SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2),3,2) + '\' 
    + SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2),5,2) + '\' 
    + CONVERT(VARCHAR(8),CONVERT(VARBINARY(4), dbo.doc.storeid),2) 
    + '.TIF' AS FullPathAndFilename 
    FROM dbo.doc 
    LEFT JOIN dbo.toc ON dbo.doc.tocid = dbo.toc.tocid 
    LEFT JOIN dbo.vol ON dbo.toc.vol_id = dbo.vol.vol_id 
    WHERE dbo.doc.tocid = x.tocid //this line joining the new SQL to all report rows 
    ) 
from foo as x; 

選項B:相反,如果你拉你的數據Crystal使用連接嚮導,那麼最好在數據庫中創建一個與您提供的SQL相匹配的新視圖(減去最後兩行),然後將您現有的主要報表連接到Crystal連接嚮導中的此視圖。