2016-07-26 83 views
1

我需要获取给定文档的物理文件路径。Bentley ProjectWise Explorer - 如何获取物理文件路径(DMS)

运行在数据库中的一些querys我搞清楚,我可以得到大部分信息在某些表:

从[dms_doc]从目前dms_stor,o_projectcode从dms_proj和o_filename o_path。

 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

试着改变你的携带这样的:

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 

我认为这会工作...

+0

谢谢,它的工作原理就像一个魅力。 –