2016-07-26 11 views
1

Ich muss den physischen Dateipfad eines bestimmten Dokuments abrufen.Bentley ProjectWise Explorer - So erhalten Sie den physischen Dateipfad (DMS)

Laufen einige querys in der Datenbank ich es herausfinden, dass ich die meisten Informationen in einigen Tabellen bekommen:

Die o_path von dms_stor, o_projectcode von dms_proj und der o_filename von [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 

Und das Ergebnis ist ähnlich:

Server  Path 
VIRM-RGR016 D:/PW_RGR_STORAGE/ECX/1197_00/dms00166/ 

Dies funktioniert für 90% der Fälle.

Das Problem ist, dass manchmal ein weiterer Unterordner erstellt wird, der immer mit "ver" beginnt.

Endergebnis:

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 

Manchmal ist es wie geschaffen: ver00001, ver00002 ...

Ich weiß nicht, wo oder wie kann ich wissen, ob die Datei für ein bestimmtes Dokument in der ist root oder ein Unterordner. Ich muss sicher wissen können, in welchem ​​Ordner sich die Dokumentdatei befindet.

Ich könnte Ordner versuchen, dann die andere, aber auf diese Weise werde ich nicht sicher wissen, ob diese Datei das Dokument gehören.

Ich weiß, dass die PW API (aaApi_CopyOutDocument) das tut, aber ich weiß nicht wie.

Ich kann die PW API in dieser aktuellen Anwendung nicht verwenden.

Dank

Antwort

1

Versuchen Sie Ihre Hand für diese Änderung:

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 

ich denke, das funktioniert ...

+0

Dank, es funktioniert wie ein Charme. –

Verwandte Themen