2015-12-14 24 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连接向导中的此视图。