2015-12-14 3 views
1

У меня есть отчет о кристалле, в котором перечислены счета-фактуры, и я хотел бы показать путь к файлу счетов-фактур в другом столбце отчета. Следующий запрос позволяет мне искать документы на основе их уникального идентификационного номера. Затем он отображает расположение файла для одного документа, который я ищу, однако я хотел бы, чтобы это применимо ко всем документам, перечисленным в отчете. Может кто-то, пожалуйста, помогите мне с этим?Показать путь к файлу в 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

Ответ зависит от способа получения данных в существующем отчете Crystal Report.

Вариант A: Если ваш источник данных отчета является «Командой» (другими словами, вы создали инструкцию SQL в отчете Crystal, который извлекает нужные вам данные), тогда вы захотите изменить эту команду на потяните эту новую информацию через подзапрос. Так, например, если ваш текущий SQL отчет что-то подобное, вы хотели бы, чтобы это было что-то вроде «выберите х * из обув как х.»:

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 (минус последние 2 строки), а затем присоединиться к существующим основным таблицам отчетов для этого представления в мастере объединения Crystal ,

Смежные вопросы