Sub Action(Query, QueryBrowser)
For i = 1 To Query.RowCount
Set CellPipe = Query.Cell(i, "Object")
Set CellStart = Query.Cell(i, "Start")
Set CellEnd = Query.Cell(i, "End")
If (Not CellStart Is Nothing) And (Not CellEnd Is Nothing) Then
Set ObjStart = CellStart.Object
Set ObjEnd = CellEnd.Object
Set ObjPipe = CellPipe.Object
If (Not ObjStart Is Nothing) And (Not ObjEnd Is Nothing) Then
ValueStartEnd = Split(GetStartEndPipe(ObjPipe),"@")
ObjStart.Value = ValueStartEnd(0)
ObjEnd.Value = ValueStartEnd(1)
End If
End If
Next
QueryBrowser.RefreshRows
' or for complete Refresh:
Query.Refresh
QueryBrowser.Refresh
End Sub
Sub CreateSearchCondition(sm, logicalOperator, numberOfOpeningParentheses, attributeType, attribute, comparisonOperator, value, numberOfClosingParentheses)
Set cond = sm.GetSearchCondition
cond.LogicalOperator = logicalOperator
cond.NumberOfOpeningParentheses = numberOfOpeningParentheses
cond.AttributeType = attributeType
cond.Attribute = attribute
cond.ComparisonOperator = comparisonOperator
cond.Value = value
cond.NumberOfClosingParentheses = numberOfClosingParentheses
sm.SearchConditions.Add cond
End Sub
Function GetStartEndPipe(Pipe)
Set searchManager = Pipe.WorkSet.GetSearchManager
Set rootObjects = searchManager.RootObjects
rootObjects.add Pipe
searchManager.SystemType = 10
searchManager.IsUserAbortAllowed = true
CreateSearchCondition searchmanager, "", 0, "PROPERTY", "NAME", "=", "Y00A02607", 0
CreateSearchCondition searchmanager, "OR", 0, "PROPERTY", "NAME", "=", "Y00A02577", 0
Set resultSet = searchManager.Start
searchManager.RetrieveData(0)
Set dictfrom = CreateObject("Scripting.Dictionary")
Set dictto = CreateObject("Scripting.Dictionary")
For i = 1 To resultSet.count
If (resultSet.Item(i).GetSpecOwner.Spec("Y00T00001.Y00A02607").DisplayValue <> "") And _
(resultSet.Item(i).GetSpecOwner.Spec("Y00T00001.Y00A02577").DisplayValue <> "") Then
If Not resultSet.Item(i).GetSpecOwner.Elements.Item("SEG1") Is Nothing Then
Set SEG = resultSet.Item(i).GetSpecOwner.Elements.Item("SEG1")
If Not SEG.BackPointerDocObjs.Item(1) Is Nothing Then
If resultSet.Item(i).Name = "Y00A02607" Then
If resultSet.Item(i).LinkObject.ClassificationExists(1,"M22.A040.A030") Then 'T PIECE
newtext1 = resultSet.Item(i).LinkObject.OwnerByClass("P").spec("Y00T00402.Y00A07320AA01").DisplayValue
TPiece = resultSet.Item(i).LinkObject.OwnerByClass("P").spec("Y00T00402.Y00A07320AA01").DisplayValue
Else
If resultSet.Item(i).LinkObject.spec("Y00T00402.Y00A07320AA01").DisplayValue = "" Then
newtext1 = resultSet.Item(i).DisplayValue
Else
newtext1 = resultSet.Item(i).LinkObject.spec("Y00T00402.Y00A07320AA01").DisplayValue
End If
End If
dictfrom.Add newtext1, newtext1
On Error resume Next
End If
If resultSet.Item(i).Name = "Y00A02577" Then
If resultSet.Item(i).LinkObject.ClassificationExists(1,"M22.A040.A030") Then 'T PIECE
newtext2 = resultSet.Item(i).LinkObject.OwnerByClass("P").spec("Y00T00402.Y00A07320AA01").DisplayValue
Else
If resultSet.Item(i).LinkObject.spec("Y00T00402.Y00A07320AA01").DisplayValue = "" Then
newtext1 = resultSet.Item(i).DisplayValue
Else
newtext2 = resultSet.Item(i).LinkObject.spec("Y00T00402.Y00A07320AA01").DisplayValue
End If
End If
dictto.Add newtext2, newtext2
On Error resume Next
End If
End If
End If
End If
Next
For Each m In dictfrom.keys
If dictto.Exists(m) Then
dictto.Remove(m)
dictfrom.Remove(m)
Else
If ValFrom = "" Then
ValFrom = dictfrom(m)
Else
ValFrom = Valfrom & " / " & dictfrom(m)
End If
End If
Next
For Each n In dictto.keys
If dictfrom.Exists(n) Then
dictfrom.Remove(n)
dictto.Remove(n)
Else
If ValTo = "" Then
ValTo = dictto(n)
Else
ValTo = Valto & " / " & dictto(n)
End If
End If
Next
If (dictfrom.count = 0 And dictto.count = 0) Or _
(dictfrom.count = 1 And dictto.count = 0) Or _
(dictfrom.count = 0 And dictto.count = 1) Then
ValFrom = "SAME PIPE: " & TPiece
ValTo = "SAME PIPE: " & TPiece
End If
GetStartEndPipe = ValFrom & "@" & ValTo
searchManager.Stop()
End Function