Problem
All Images of an Diagram (the ImageIds) shall be determined, so that can be read out from the table t_image (see previous article about BLOB and EA).
Approach – Ansatz
Usage of the tables
– t_diagram
– t_diagramobjects
– t_object
Solution – Lösung
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='{PutInYourDiagramNameHere}'
ORDER BY 12 DESC,1,2,3,4,5,6,7,8,9