Forum Discussion

Rob's avatar
Rob
New Contributor
4 years ago

Clear data on Origin Forms

Does anyone have a piece of code to clear data on the origin Forms member for just a few accounts? The api.data.clearcalculateddata is not possible (data is not calculated) and api.data.setdatacell doesn't work. Thanks. 

  • You can combine calculate with clearcalculateddate like this:

    Dim script as string = pov
    
    api.data.calculate($"{script} = 0 * {script}")
    
    api.data.clearcalculateddata(script)

    The first row will make it calculated, the second row will delete it, because now it is calculated.

  • Thanks Christian, tested this and works as expected. 

  • ChristianW's avatar
    ChristianW
    Valued Contributor

    You can combine calculate with clearcalculateddate like this:

    Dim script as string = pov
    
    api.data.calculate($"{script} = 0 * {script}")
    
    api.data.clearcalculateddata(script)

    The first row will make it calculated, the second row will delete it, because now it is calculated.

    • poswald's avatar
      poswald
      New Contributor III

      I've tried this, but I'm not following how to do this.  I have several accounts where I only want to clear the Forms data.  

       

      I need the forms data cleared for all the accounts where Text 8 Startswith VarPercentofSales

      This was the code I tried:

       

      Dim script As String = "A#All:F#EndBal_Input:V#Periodic:O#Forms:U1#Local_Input:U2#None:U3#None:U4#None:U5#None:U6#None:U7#None:U8#None.Where(Text8 Startswith VarPercentofSales)"

      api.data.calculate($"{script} = 0 * {script}")

      api.data.ClearCalculatedData("TRUE","TRUE","TRUE","TRUE","A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms",,,,,,,,,)

       

      • ChristianW's avatar
        ChristianW
        Valued Contributor

        The script and the syntax is not correct, try this:

        Dim script As String = "A#All"
        
        api.data.calculate($"{script} = 0 * {script}","A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms")
        api.data.ClearCalculatedData(True,True,True,True,"A#IncStmnt.Base.Where(Text8 Startswith VarPercentofSales)",,"O#Forms")

         

    • Krishna's avatar
      Krishna
      Valued Contributor

      The below code will also work.

      Dim Parent As Member = api.Members.GetMember(DimType.Account.Id,"IS")
      
      Dim ActMembers As List (Of Member) = api.members.GetBaseMembers( _
      							api.Pov.AccountDim.DimPk, Parent.MemberId, Nothing)
      							
      If Not ActMembers Is Nothing Then
      	For Each ActMember As Member In ActMembers
      		If ((Not api.Entity.HasChildren()) ) Then
      			api.Data.ClearCalculatedData("A#" & ActMember.Name,True,True,True,True)
      		End If
      	Next
      End If
  • EricOsmanski's avatar
    EricOsmanski
    Valued Contributor

    Can also use the below where amount is 0.0 and isNoData is True.

    api.Data.SetDataCell(memberScript, amount, isNoData, isDurableCalculatedData)

  • Rob's avatar
    Rob
    New Contributor

    Thanks Christian, tested this and works as expected.