1

我需要获取给定文档的物理文件路径。

在数据库中运行一些查询,我发现我可以在某些表中获取大部分信息:

来自 dms_stor 的 o_path、来自 dms_proj 的 o_projectcode 和来自 [dms_doc] 的 o_filename。

       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。

谢谢

4

1 回答 1

1

尝试为此更改您的进位:

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

我认为这会奏效...

于 2016-07-26T16:16:32.907 回答