[UiPath] Helpful DataTable methods and queries for better sorting, filtering, extracting

Here are a couple of handy DataTable.Select queries that I found useful in managing data tables. I have previously discussed about How to filter multiple dynamic values in a datatable column but this time I'm going to collect my most used ones for future reference. I found this VB.net methods extremely helpful in minimizing the amount of Activities in my Workflow. Also, sometimes the Filter DataTable Wizard doesn't work and I found these methods more accurate.

How to select distinct/unique values in a column

OutputDT = DataTable.DefaultView.ToTable(true,"ColumnName")

Returns a datatable with distinct values from a specific column. This is similar to running a Remove Duplicate Rows activity except you can directly specify which column to affect.

How to rename DataTable column name

DataTable.Columns(4).ColumnName = "New Column Name"

Renames the 3rd column with the value specified in "New Column Name"

How to sort DataTable using multiple columns

DataTable = (From x In DataTable.AsEnumerable() Order By convert.Tostring(x("ColumnName1")), convert.ToString(x("ColumnName2")) Select x).CopyToDataTable

Returns a data table sorted in ascending order by 2 columns. This is similar to running a Sort Data Table activity except that you can use multiple sorting columns.

How to query your DataTable using Select method

OutputDT = DataTable.Select("[Column Name] IN ('Value1', 'Value2', 'Value3')").CopyToDataTable

This will return rows where the specified column contains the indicated values. Similar to filtering a table from Excel.

How to convert a DataTable column to a String Array

StringArray = (From row In DataTable.AsEnumerable() Select Convert.Tostring(row(“Column Name”))).ToArray()

This returns a String array containing all values in a given column

RelatedHow to filter multiple dynamic values in a datatable column

Just a few so far but will add to these as I go along learning UiPath better! :)

[UiPath] How to create Windows user input form using SyForms form designer (IsClosingForm hotfix)

Here's an entry on how to use the SyForms Form Designer package on UiPath which is incredibly helpful in getting user input using a Windows form.

This answers questions on:
✔ How to accept date input from user and
✔ How to accept multiple inputs from user using just one form

But first, a little info on this package:

SyForms is a custom activity developed by Florent Salendres of Symphony as a hackathon entry for UIPath's Power Up Automation 2018. It won Winners Choice and UiPath Grand Prize of Excellence in RPA and is probably one of the most popular form designers from UiPath Gallery. I personally am very thankful I stumbled upon this activity because it provides better user interaction by the way of Windows forms.

Now, all the official documentation you need is here: https://go.uipath.com/component/syforms-uipath-forms-designer

But for the purpose of documenting a how to guide, here's how to use the package and create a simple form that accepts date and text input.

I'm using UiPath Community Edition version 19.8.0

Step 1: Download and install the package

You have two options, you can either download it from the Gallery

OR you can download the hotfix version from this link which addresses the issue of the form not closing upon clicking the submit button (even if the property IsClosingForm is set to True).

If you chose the hotfix version, here's how to install it:

  1. As mentioned above, download hotfix from this link
  2. Save the .nupkg package file under C:\Users\username\AppData\Local\UiPath\app-19.8.0\Packages (or wherever your Packages folder is)
  3. Update the path with the appropriate username and app version folder, in red.
  4. Go back to UiPath Manage Packages and navigate to Local. Symphony should appear.
  5. Install and Save

Step 2: Create a new process and add the activity Show Form

Found under Symphony >> Extensions >> SyForms >> Show Form

Step 3: Create a new form

  1. Click on New
  2. Enter form name
  3. Click OK
  4. It will create a json file. Select it from the dropdown and click Design
Step 4: Design the form

We'll be creating a simple form that accepts Name and Birthday. The designer is pretty straightforward, just click on the type of control you want from the toolbar and position it on the form window.

Step 5: Expose your input arguments

For all your input fields, make sure to set ExposeAsArgument property to True as seen in the above photo. This automatically creates arguments for your fields so that you can access the value later on.

The next thing to do after exposing your arguments is to create Assign To variables to it. I named the 2 variables as var_name and var_bday and set the variable type to Control (System.Windows.Forms.Control).

For the Submit button, you should also set the IsClosingForm property to True so that the form window will close after you click on Submit.

Step 5: Access your input data

Finally, you can access your input data by using the Text property of the Control variable.


Let's try to output it using a message box.

Here's the output:

For the date, you can play around with the text value to output different date formats using the Convert.ToDateTime() and ToString() System methods.

will output the following:

For more DateTime formats and helpful string manipulation techniques, check out:

That's it! Let me know if it works. :)