This FirstAid Tutorial will describe how a the source contains no DataRows EXCEPTION can be handled.
Let’s have a look at the following filter data table scenario:
- Filter all rows on a particular Country Code like FR, UK, ES, UK…
- Ensure that all CCode data column values are trimmed
- Ensure that the Filter check is case insensitive
we can implement it e.g. with the help of a LINQ statement:
dtData.AsEnumerable.Where(Function (x) x("CCode").toString.Trim.ToUpper.Equals(strCCFilter.ToUpper)).CopyToDataTable
When the data table will be filtered for “fr” the following result will be received:
When the data table will be filtered for “uk” a the source contains no DataRows EXCEPTION will be thrown
Reason: when the filter result will be empty, there are no rows for copying it to the resulting data table.
The main idea for defensive handling is about collecting all filtered rows to a list. Depending on the list count the CopyToDataTable method will be called or the original data table will be cloned
For the pre-step result, a variable Result of the datatype: List(of DataRow) will be created
instead of CopyToDatatable a ToList will be used
The return of the LINQ will be assigned to the Variable: Result
Within an IF Activity following will be modelled:
Condition: Result.Count > 0
Then Branch: dtResult = Result.CopyToDataTable
Else Branch: dtResult = dtData.Clone
dtData is the origin datatable. With the Clone Method an empty data table with the same data column structure of dtData will be created and assigned to dtResult
with the implementation of the above an empty filter result can be handled defensively and a the source contains no DataRows EXCEPTION can be avoided.
Find starter help here:
ppr_FirstAid_NoSourceRows.xaml (8.4 KB)
For questions on your specific case open a new topic and get individual support