When Fields contained within Repeating tables are promoted to SharePoint, they only contain the first, last, or merged data. Unfortunately, this data is practically useless. The procedure below outlines how to delimit repeating data with semi-colons.
Prerequisites
- An hidden textbox used to contain the merged, delimited data.
- A repeating group with fields
Instructions
The hidden textbox will be populated with the below formula.
xdMath:Eval(xdMath:Eval(<Repeating Group>, 'concat(<Field1>, ";")'), "..")
Let’s break it down.
Repeating Group
xdMath:Eval(xdMath:Eval(<Repeating Group>, 'concat(<Field1>, ";")'), "..")
The Repeating Group is the group that contains the list of fields that are repeated. This parameter will return all the fields within the Repeating Group to the xdMath:Eval function for evaluation in the second parameter. In the “Insert Formula” window when creating a formula, you can use the “Insert Field or Group” button. Be sure to select the Repeating Group and not the field.
Field1
xdMath:Eval(xdMath:Eval(<Repeating Group>, 'concat(<Field1>, ";")'), "..")
Field1 is a field within the repeating group. But this value must contain the field name only, not the path to the field because the location was set by the first parameter of “Repeating Group”. For example, a field in InfoPath is usually referenced by “../my:Group1/my:RepeatField1”. But the Eval function would fail with this entry. Be sure to enter only “my:RepeatField1”. You may have to check the “Edit XPath (advanced)” box to make this change.
Concat Function
xdMath:Eval(xdMath:Eval(<Repeating Group>, 'concat(<Field1>, ";")'), "..")
The concat function above takes Field1 and concatenates it to the semicolon. This function is quoted in single quotes because it is a requirement in order to be evaluated by the xdMath:Eval function.
Inner xdMath:Eval function
xdMath:Eval(xdMath:Eval(<Repeating Group>, 'concat(<Field1>, ";")'), "..")
The inner xdMath:Eval function looks at the first repeating row of data in the Repeating Group, grabs the value of Field1 and concatenates it to a semicolon.
Outer xdMath:Eval function
xdMath:Eval(xdMath:Eval(<Repeating Group>, 'concat(<Field1>, ";")'), "..")
The two dots at the end of the formula is the second parameter for the outer xdMath:Eval function. The two dots tells the xdMath:Eval function to go a level higher and return all instances of the Repeating Group. This is relevant because multiple instances of the Repeating Group will exist as new rows of data are inserted in the form. Then the outer xdMath:Eval function evaluates the inner xdMath:Eval function for all instances of the Repeating Group. This will then return all values in each row of data for Field1 concatenated with semi-colons.
Final output
xdMath:Eval(xdMath:Eval(../my:Group1, 'concat(my:Repeatedfield1, ";")'), "..")
The final output will be similar to this. Note that the “../my:Group1” value will change depending on how deeply the Repeating Group is nested.