I am trying to loop through a CDT and replace any null values with 0.

I am trying to loop through a CDT and replace any null values with 0.

To test this out, I added a button on my form and upon clicking the button I am executing:

a!save(ri!BuyerSeller, apply(rule!ReplaceNulls,ri!BuyerSeller)) /*ri!BuyerSeller is the CDT in which I want to loop through and replace nulls*/

My "rule!ReplaceNulls" is as follows (currently I am just trying to get 1 field to work in the CDT, but this will end up being 3 fields)
={
if(isnull(ri!BuyerSeller.feeAmount),0,ri!BuyerSeller.feeAmount)
}

I keep receiving an error about "Invalid index: Cannot index property "buyerProject" of type Text into type Number (Decimal)".
buyerProject is the first element of my CDT, but this is not one of the fields I care to parse through and check for nulls. How can I loop through a CDT and replace nulls values? Thanks

OriginalPostID-202277

OriginalPostID-202277

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Associate Developer
    Instead of using an apply function how about just leveraging the set based nature of expressions? In the example below I have an arbitrary array of decimals and I'm replacing all nulls with 0's - all without an apply. You could run a similar expression on the CDT array at the end of your saveInto set and achieve what, I think, you're looking for.

    load(
    local!test: todecimal({1, 2, 3, null(), 4, null()}),

    updateArray(local!test, wherecontains(todecimal(null()), local!test), 0)
    )
Reply
  • 0
    Certified Associate Developer
    Instead of using an apply function how about just leveraging the set based nature of expressions? In the example below I have an arbitrary array of decimals and I'm replacing all nulls with 0's - all without an apply. You could run a similar expression on the CDT array at the end of your saveInto set and achieve what, I think, you're looking for.

    load(
    local!test: todecimal({1, 2, 3, null(), 4, null()}),

    updateArray(local!test, wherecontains(todecimal(null()), local!test), 0)
    )
Children
No Data