【BluePrism】 컬렉션을 비교하여 차이 추출 및 중복 레코드 삭제

13041 단어 RPAblueprism
두 개의 컬렉션이 있다고 가정합니다.

Base Collection





Target Collection




  • 필드 1⇔⇔Field1
  • 필드 2 ⇔ Field2
  • 필드 3⇔ Field3

  • 에 대응한다고 합니다.
    두 개의 컬렉션을 비교하고 위의 필드에 동일한 매개 변수의 레코드가있는 경우
    레코드 삭제 & 차등 추출할 객체를 만들었습니다.

    개요도





    실행 결과



    비교원과 비교 대상의 컬렉션의 차분 추출, 중복 레코드를 삭제한 결과는 이하와 같습니다.
    Base Collection의 필드 1~3을 대상으로 하고, 대응하는 Target Collection의 Field1~3을 비교한 결과입니다.

    Result Base Collection



    Base Collection과 Target Collection에서 중복되지 않은 레코드를 추출한 컬렉션입니다.
    추출 소스의 컬렉션은 Base Colelction입니다.


    Result Target Collection



    Base Collection과 Target Collection에서 중복되지 않은 레코드를 추출한 컬렉션입니다.
    추출 소스의 컬렉션은 Target Colelction입니다.


    Duplicate Collection



    Base Collection 및 Target Collection에서 중복 레코드를 추출한 컬렉션입니다.
    추출 소스의 컬렉션은 Target Colelction입니다.


    객체 설명



    전체 객체 흐름





    입력



    Base Field와 Target Field가 일치하도록 필드 이름을 설정합니다.
    Base Field1과 Target Field1은 입력 필수입니다.


    Output



    코드



    Base Collection의 레코드 중복을 제외한 후 Collection을 기반으로
    Target Collection과의 대응하는 필드와 비교해 차등 추출, 중복 삭제를 실시하고 있습니다.
    Try
        If Base_Field1 = "" Or Target_Field1 = "" Then
            Success = False
            Message = "Base_Field1, Target_Field1は必須項目です。"
            Exit Sub
        End If
    
        Dim NewBase_Collection As DataTable
        NewBase_Collection = Base_Collection.Clone
    
        Dim count As Long = 0
        For Each r1 As DataRow In Base_Collection.Rows
            If count = 0 Then
                NewBase_Collection.ImportRow(r1)
            Else
                Dim find_rows As DataRow()
                find_rows = NewBase_Collection.Select(Base_Field1 & " = '" & r1(Base_Field1) & "'" & _
                        If(Base_Field2 <> "", " AND " & Base_Field2 & " = '" & r1(Base_Field2) & "'", "") & _
                        If(Base_Field3 <> "", " AND " & Base_Field3 & " = '" & r1(Base_Field3) & "'", ""))
    
                If find_rows.Length = 0 Then
                    NewBase_Collection.ImportRow(r1)
                End If
            End If
            count = count + 1
        Next
    
        Dim Tmp_Duplicate_Collection, Tmp_Result_Target_Collection, Tmp_NewBase_Collection As DataTable
    
    
        Tmp_Duplicate_Collection = Target_Collection.Clone
        Tmp_Result_Target_Collection = Target_Collection.copy()
        Tmp_NewBase_Collection = NewBase_Collection.Clone
    
        For Each r2 As DataRow In NewBase_Collection.Rows
            Dim find_rows As DataRow()
            find_rows = Tmp_Result_Target_Collection.Select(Target_Field1 & " = '" & r2(Base_Field1) & "'" & _
                    If(Target_Field2 <> "", " AND " & Target_Field2 & " = '" & r2(Base_Field2) & "'", "") & _
                    If(Target_Field3 <> "", " AND " & Target_Field3 & " = '" & r2(Base_Field3) & "'", ""))
    
            If find_rows.Length <> 0 Then
                ' Base_CollectionにもTarget_Collectionにも存在する場合
                For Each r3 As DataRow In find_rows
                    Tmp_Duplicate_Collection.ImportRow(r3)
                    r3.Delete()
                Next
            Else
                Tmp_NewBase_Collection.ImportRow(r2)
            End If
        Next
    
        Duplicate_Collection = Tmp_Duplicate_Collection.DefaultView.ToTable
        Result_Target_Collection = Tmp_Result_Target_Collection.DefaultView.ToTable
        Result_Base_Collection = Tmp_NewBase_Collection.DefaultView.ToTable
    
        Success = True
        Message = ""
    Catch e As Exception
        Success = False
        Message = e.Message
    End Try
    

    샘플



    htps : // 기주 b. 코 m / 후 lcs b / b p sm / t ree / 코 c 치온
    BPA 객체 - 컬렉션 차이 비교.xml

    좋은 웹페이지 즐겨찾기