Problem
The Images of a specific diagram in the data structure of the Sparx Systems Enterprise Architect should be read by diagram name.
Approach
Usage of MDB Plus and Data Mining
Solution
This is SQL for the Access / .eap-File – it should be rewritten for other SQL Servers (i.e. the brackets can be removed and Functions like InStr/Mid shall be replaced)
SELECT dia.Name As Diagram, IIF(Trim(objstart.[Name]) = 'Text', 'Text', objstart.stereotype) As stereotype, diaobj.RectLeft As x, diaobj.RectTop As y, diaobj.RectRight-diaobj.RectLeft As Width, Abs(diaobj.RectBottom-diaobj.RectTop) As Height, objstart.Object_ID, IIF(Trim(objstart.[Name]) = 'Text', 'Text-'& objstart.Object_ID ,objstart.Alias) As [key], IIF(objstart.[Name] = 'Text', objstart.Note, objstart.[Name]) As phaseName, objstart.[ea_guid] As [guid], diaobj.ObjectStyle, IIF( InStr(diaobj.ObjectStyle, "ImageID")>0, Mid(diaobj.ObjectStyle, InStr(diaobj.ObjectStyle, "ImageID")+8 , Len(diaobj.ObjectStyle)- (InStr( diaobj.ObjectStyle, "ImageID")+8) ), '' ) As ImageId FROM (( [t_diagram] dia LEFT JOIN (Select Diagram_ID, Object_ID, RectLeft, RectTop, RectRight, RectBottom, ObjectStyle from [t_diagramobjects]) diaobj ON dia.[Diagram_ID]=diaobj.[Diagram_ID]) LEFT JOIN [t_object] objstart ON objstart.[Object_ID]=diaobj.[Object_ID]) WHERE objstart.Object_Type IN ('Text','Boundary') AND IIF(InStr(diaobj.ObjectStyle, "ImageID")>0, Mid(diaobj.ObjectStyle, InStr(diaobj.ObjectStyle, "ImageID")+8 , Len(diaobj.ObjectStyle)- (InStr( diaobj.ObjectStyle, "ImageID")+8) ), '') <> '' AND dia.Name='0' ORDER BY 12 DESC,1,2,3,4,5,6,7,8,9