Мне нужно получить физический путь к файлу данного документа.
Запустив несколько запросов в базе данных, я понял, что могу получить большую часть информации в некоторых таблицах:
O_path из dms_stor, o_projectcode из dms_proj и o_filename из [dms_doc].
SELECT o_node 'Server'
,c.o_path + '/' + b.o_projectcode + '/' + o_filename 'Path'
FROM [PW_Engevix_ECO].[dbo].[dms_doc] a
JOIN [PW_Engevix_ECO].[dbo].[dms_proj] b ON a.o_projectno = b.o_projectno
JOIN [PW_Engevix_ECO].[dbo].[dms_stor] c ON c.o_storno = a.o_storno
И результат похож на:
Server Path
VIRM-RGR016 D:/PW_RGR_STORAGE/ECX/1197_00/dms00166/
Это работает в 90% случаев.
Проблема в том, что иногда создается еще одна подпапка, она всегда начинается с «ver».
Конечный результат:
New file at:
Server Path
VIRM-RGR016 D:/PW_RGR_STORAGE/ECX/1197_00/dms00166/
Old file at:
Server Path
VIRM-RGR016 D:/PW_RGR_STORAGE/ECX/1197_00/dms00166/ver00000
Иногда это создается как: ver00001, ver00002 …
Я не знаю, где и как я могу узнать, находится ли файл для данного документа в корне или подпапке. Мне нужно точно знать, в какой папке находится файл документа.
Я мог бы примерить папку потом другой, но таким образом я не буду точно знать, принадлежит ли этот файл тому документу.
Я знаю, что PW API (aaApi_CopyOutDocument) делает это, но я не знаю как.
Я не могу использовать PW API в этом текущем приложении.
Спасибо
Попробуйте сменить керри для этого:
SELECT o_node 'Server'
,c.o_path + '/' + b.o_projectcode + '/' + CASE
WHEN o_original <> 0
THEN 'ver' + REPLICATE('0', 5 - LEN(CAST(a.o_version_seq AS NVARCHAR(MAX)))) + CAST(a.o_version_seq AS NVARCHAR(MAX)) + '/'
ELSE ''
END + o_filename 'Path'
FROM [PW_Engevix_ECO].[dbo].[dms_doc] a
JOIN [PW_Engevix_ECO].[dbo].[dms_proj] b ON a.o_projectno = b.o_projectno
JOIN [PW_Engevix_ECO].[dbo].[dms_stor] c ON c.o_storno = a.o_storno
Я думаю, что это будет работать …
Других решений пока нет …