16
Automation Interface, Add-Ins and Tools / Re: VBScript retrieve ONLE value from SQLQuery
« on: August 08, 2021, 12:00:40 am »
So, I did it. Like this: good enough - for me 
option explicit
!INC Local Scripts.EAConstants-VBScript
!INC EAScriptLib.VBScript-Logging
Sub Main
Repository.EnsureOutputVisible "Script"
Repository.ClearOutput "Script"
dim currentDiagram as EA.Diagram
set currentDiagram = Repository.GetCurrentDiagram()
for each currentDiagram in currentDiagram.SelectedObjects
dim theElement as EA.Element
set theElement = Repository.GetElementByID( currentDiagram.ElementID )
Dim sqlCmd
Dim queryResult
sqlCmd = "SELECT " & _
" Object_1.Object_ID AS DestID " & _
"FROM " & _
" t_object " & _
" INNER JOIN t_connector INNER JOIN t_object AS Object_1 ON t_connector.End_Object_ID = Object_1.Object_ID " & _
" ON t_object.Object_ID = t_connector.Start_Object_ID " & _
"WHERE " & _
" t_object.Object_ID = " & theElement.ElementID
queryResult = Repository.SQLQuery( sqlCmd )
'Session.Output ( queryResult )
Session.Output ( getDestObjectID ( queryResult ) )
next
End Sub
Function getDestObjectID ( queryResult )
' FUnkcia vráti ID asociované (<<use>>) objektu
Dim str1, str2, retVal
str1 = InStr ( queryResult, "<DestID" )
str2 = len(queryResult)
retVal = MID( queryResult, str1, str2 )
retVal = replace(retVal, "</Row></Data></Dataset_0></EADATA>", "")
retVal = replace(retVal, "<DestID>", "")
retVal = replace(retVal, "</DestID>", "")
'Session.Output ( retVal )
getDestObjectID = retVal
End Function
Main

option explicit
!INC Local Scripts.EAConstants-VBScript
!INC EAScriptLib.VBScript-Logging
Sub Main
Repository.EnsureOutputVisible "Script"
Repository.ClearOutput "Script"
dim currentDiagram as EA.Diagram
set currentDiagram = Repository.GetCurrentDiagram()
for each currentDiagram in currentDiagram.SelectedObjects
dim theElement as EA.Element
set theElement = Repository.GetElementByID( currentDiagram.ElementID )
Dim sqlCmd
Dim queryResult
sqlCmd = "SELECT " & _
" Object_1.Object_ID AS DestID " & _
"FROM " & _
" t_object " & _
" INNER JOIN t_connector INNER JOIN t_object AS Object_1 ON t_connector.End_Object_ID = Object_1.Object_ID " & _
" ON t_object.Object_ID = t_connector.Start_Object_ID " & _
"WHERE " & _
" t_object.Object_ID = " & theElement.ElementID
queryResult = Repository.SQLQuery( sqlCmd )
'Session.Output ( queryResult )
Session.Output ( getDestObjectID ( queryResult ) )
next
End Sub
Function getDestObjectID ( queryResult )
' FUnkcia vráti ID asociované (<<use>>) objektu
Dim str1, str2, retVal
str1 = InStr ( queryResult, "<DestID" )
str2 = len(queryResult)
retVal = MID( queryResult, str1, str2 )
retVal = replace(retVal, "</Row></Data></Dataset_0></EADATA>", "")
retVal = replace(retVal, "<DestID>", "")
retVal = replace(retVal, "</DestID>", "")
'Session.Output ( retVal )
getDestObjectID = retVal
End Function
Main