Your datatable variable ‘in_FilteredDT’ has not been initialized. Doublecheck in your workflow that you either have a ‘Build data table’ activity saving to your datatable variable, or have some other activity that is outputting to the ‘in_FilteredDT’ variable
EDIT: It looks like in_FilteredDT is an argument. Make sure that you are passing in the value in your argument correctly when invoking the workflow. Also, make sure you don’t have a variable with the same name, as variables take precedence over arguments. This means you could pass in a value to the argument when making your workflow, but you also have a variable with the same name that does not have a value and is null. When this happens the variable is null and you’d get the error shown in the screenshot.
It was suggested by @amarasto and @Dave that your argument could be empty.
I just wanted to add that Arguments are case-sensitive, so make sure the case is the same in both the Invoke and Workflow. Like, both should be in_FilteredDT or both should be in_FilteredDt - so you should check the case too
You are correct that ‘in_FilteredDT’ is an argument. I do not have ‘in_FilteredDT’ set as a variable in that sequence. In the below process I am using DataScraping to build the table and output as variable ‘ExtractDataTable’ which i then assign to out_FilteredDT where I also filter for Type= “WI5”.
How do I pass the data from the variable ‘out_FilteredDT’ to the new sequence “ProcessWorkItems” where I want to use the values in the For Each loop in the photo from my first post? Do I create a new variable or new argument?
Throw in a write line activity after your assign to count the rows and make sure data is grabbed in your select statement - it would look like: out_FilteredDT.Rows.Count.ToString
To pass the data to the next sequence, you need to use the ‘Invoke Workflow File’ activity. Choose the correct workflow, then click import arguments. Assign out_FilteredDT to the in_FilteredDT argument. I would also put a write line in at the very first thing in your sequence to count the rows and make sure they match - use the same code as above in a write line activity to do that
14:39:25.0000 => [INFO] [UiPath.Studio.Shared.Logging.OutputLogger] [23] ACME_Calc_Client_Hash execution started
14:39:32.0000 => [INFO] [UiPath.Studio.Shared.Logging.OutputLogger] [23] Opening applications…
14:40:50.0000 => [ERROR] [UiPath.Studio.Shared.Logging.OutputLogger] [13] Assign: Index was outside the bounds of the array.
14:40:50.0000 => [ERROR] [UiPath.Studio.Shared.Logging.OutputLogger] [41] Invoke Workflow File: Index was outside the bounds of the array.
14:40:50.0000 => [ERROR] [UiPath.Studio.Shared.Logging.OutputLogger] [13] Invoke RetrieveSecurityHash workflow: Index was outside the bounds of the array.
14:40:50.0000 => [ERROR] [UiPath.Studio.Shared.Logging.OutputLogger] [41] Invoke ProcessWorkItems workflow: Index was outside the bounds of the array.
14:40:50.0000 => [INFO] [UiPath.Studio.Shared.Logging.OutputLogger] [23] ACME_Calc_Client_Hash execution ended in: 00:01:25
What is written in the assign activity that threw the error?
An array has a fixed upper and lower bound (meaning it has a fixed number of items within it). If you try and reference an item that doesn’t exist, you’ll get that error. For example, you have an array of 3 strings arrStr = {str1, str2, str3} - if you try and reference the 5th string in the array (which doesn’t exist) you’ll get that error. It commonly occurs when you expect the array to have a number of values, but in fact has no values in it.
@Jonathan_Martens sorry you replied while I was typing! - you should make sure your array is not empty. Similar to the datatable approach a simple and quick way is to add a write line activity at a point where you expect it to have data with the code StrArray.Length.ToString
Where are you getting the StrArray from? The error comes because it doesn’t have at least 7 strings in the array - note that you are getting the 3rd, 5th, and 7th string in the array since arrays have a 0-based index. If you meant to get the 2nd, 4th, and 6th string you should change it to StrArray(1).Trim+“-”+StrArray(3).Trim+“-”+StrArray(5).Trim
After using Get Text to pull the client information I am assigning the Ouput value: RetrievedStr.
Then I am assigning:
To: StrArray
Value: RetrievedStr.Split({“:”,“Client”},StringSplitOptions.RemoveEmptyEntries)
The removal of Empty Entries is why I am then doing 2,4, 6 on the next Assign:
To: Out_SearchString
Value: StrArray(2).Trim+“-”+StrArray(4).Trim+“-”+StrArray(6).Trim
I suggest checking RetrievedStr to see if it has a string… sometimes Get Text fails to get the string.
Also, check StrArray to see if has all the values it is supposed to have. you can check an array like this: String.Join("||", strArray), which will output all the values in that array to WriteLine or Message Box.
Although the error takes me to the Assign block in my “GetClientDetailsandSearchString” sequence the errors in the output show the Index was outside the bounds of the array in two different workflows:
The workflow fails there because that’s where you’re trying to read the array. The source of the error is the data, which @ClaytonM points out starts in your Get Text activity, so you should first make sure the source string exists, then follow it along the line until find where it went wrong
I put in a message box first where it grabs the “in_WIID” to navigate to the client information details. This showed the correct WIID (although it was for the very last client in the data table).
Next message box below is the RetrievedStr (looks good).