Appian Community
Site
Search
Sign In/Register
Site
Search
User
DISCUSS
LEARN
SUCCESS
SUPPORT
Documentation
AppMarket
More
Cancel
I'm looking for ...
State
Not Answered
Replies
18 replies
Subscribers
8 subscribers
Views
8421 views
Users
0 members are here
Share
More
Cancel
Related Discussions
Home
»
Discussions
»
AI and Rules
I am trying to loop through a CDT and replace any null values with 0.
johng373
over 9 years ago
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
Jin Pheh
Certified Associate Developer
over 9 years ago
Ok so time for a sanity check - make sure that nothing on the output side of the task node is overwriting the feeAmount field and then check the process history to confirm what your task node is actually spitting out.
Second your a!save statement should (I think) be:
a!save(ri!BuyerSeller.feeAmount,updateArray(ri!BuyerSeller.feeAmount,wherecontains(todecimal(null()), ri!BuyerSeller.feeAmount),0))
My test case wrapped the values in "toDecimal" because it was a test case and I wanted to confirm that my technique worked on decimals. In your case you have a real honest to goodness CDT with a strongly typed field present so you don't need to wrap feeAmount in toDecimal().
Also, you shouldn't be trying to update the entire ri!BuyerSeller object, just the ri!BuyerSeller.feeAmount field.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
Reply
0
Jin Pheh
Certified Associate Developer
over 9 years ago
Ok so time for a sanity check - make sure that nothing on the output side of the task node is overwriting the feeAmount field and then check the process history to confirm what your task node is actually spitting out.
Second your a!save statement should (I think) be:
a!save(ri!BuyerSeller.feeAmount,updateArray(ri!BuyerSeller.feeAmount,wherecontains(todecimal(null()), ri!BuyerSeller.feeAmount),0))
My test case wrapped the values in "toDecimal" because it was a test case and I wanted to confirm that my technique worked on decimals. In your case you have a real honest to goodness CDT with a strongly typed field present so you don't need to wrap feeAmount in toDecimal().
Also, you shouldn't be trying to update the entire ri!BuyerSeller object, just the ri!BuyerSeller.feeAmount field.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
Children
No Data