Bentley ProjectWise Explorer - 如何获取物理文件路径(DMS)

时间:2016-07-26 13:46:45

标签: c++ sql projectwise

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

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

来自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。

由于

1 个答案:

答案 0 :(得分: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

我认为这会奏效......