Print Report
Prints a report file using the selected printer.
Command availability: IBM RPA SaaS and IBM RPA on premises
Script syntax
IBM RPA's proprietary script language has a syntax similar to other programming languages. The script syntax defines the command's syntax in the script file. You can work with this syntax in IBM RPA Studio's Script mode.
printReport --usedefaultprinter(Boolean) --printername(String) --asset(String) [--automap(Boolean)] --mappings(String) --watermark(ReportWatermark) --text(String) --textcolor(String) [--textfont(String)] --textsize(Numeric) --image(String) --transparency(Numeric) [--pagerange(String)] (Numeric)=pagecount
Input parameters
The following table displays the list of input parameters available in this command. In the table, you can see the parameter name when working in RPA Studio's Script mode and its Designer mode equivalent label.
Designer mode label | Script mode name | Required | Accepted variable types | Description |
---|---|---|---|---|
Use default printer | usedefaultprinter |
Required |
Boolean |
Enable it to use the system's default printer. |
Printer name | printername |
Only when Use default printer is False |
Text |
Name of the printer that prints the report. |
Asset | asset |
Required |
Text |
Asset that contains the report template. |
Automap | automap |
Optional |
Boolean |
Enable it to map variables that have the same name as the report parameters. |
Mappings | mappings |
Only when Automap is False |
Text, Database connection |
Maps which variables will fill the report parameters. The Parameter field receives the report name and the Value field receives the variable with the value. Check the Example to have a context on how to use it. |
Watermark | watermark |
Required |
ReportWatermark |
Watermark present in the report. The command accepts the following types: Image, Text, or None. See the watermark parameter options for details. |
Text | text |
Only when Watermark is Text |
Text |
Text used as a watermark. |
Text color | textcolor |
Only when Watermark is Text |
Text |
Color of the text, in hexadecimal format. |
Text font | textfont |
Only when Watermark is Text |
Text |
Text font to use in the watermark. |
Text size | textsize |
Only when Watermark is Text |
Number |
Font size used. |
Image | image |
Only when Watermark is Image |
Text, Image |
Image used as a watermark. |
Transparency | transparency |
Only when Watermark is Text or Image |
Number |
Degree of transparency of the watermark. |
Page range | pagerange |
Optional when Watermark is Text or Image |
Text |
Range of pages where the watermark appears. |
watermark
parameter options
The following table displays the options available for the watermark
input parameter. The table shows the options available when working in Script mode and the equivalent label in the Designer mode.
Designer mode label | Script mode name | Description |
---|---|---|
Image | image |
The watermark is an Image. |
Text | text |
The watermark is a Text. |
Output parameters
Designer mode label | Script mode name | Accepted variable types | Description |
---|---|---|---|
Page count | pagecount |
Number |
Return the amount of printed pages. |
Example
The following example creates a simple client report using an SQLite database as a data source. The report is sent as a file to print using the default printer.
import --name report --type "File" --content 77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxYdHJhUmVwb3J0c0xheW91dFNlcmlhbGl6ZXIgU2VyaWFsaXplclZlcnNpb249IjIzLjEuMy4wIiBSZWY9IjEiIENvbnRyb2xUeXBlPSJEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlh0cmFSZXBvcnQsIERldkV4cHJlc3MuWHRyYVJlcG9ydHMudjIzLjEsIFZlcnNpb249MjMuMS4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YSIgTmFtZT0iUmVwb3J0MSIgUGFnZVdpZHRoPSI4NTAiIFBhZ2VIZWlnaHQ9IjExMDAiIFZlcnNpb249IjIzLjEiIERhdGFTb3VyY2U9IiNSZWYtMCIgRm9udD0iQXJpYWwsIDkuNzVwdCI+DQogIDxCYW5kcz4NCiAgICA8SXRlbTEgUmVmPSIyIiBDb250cm9sVHlwZT0iVG9wTWFyZ2luQmFuZCIgTmFtZT0iVG9wTWFyZ2luIiAvPg0KICAgIDxJdGVtMiBSZWY9IjMiIENvbnRyb2xUeXBlPSJCb3R0b21NYXJnaW5CYW5kIiBOYW1lPSJCb3R0b21NYXJnaW4iPg0KICAgICAgPENvbnRyb2xzPg0KICAgICAgICA8SXRlbTEgUmVmPSI0IiBDb250cm9sVHlwZT0iWFJQYWdlSW5mbyIgTmFtZT0icGFnZUluZm8xIiBQYWdlSW5mbz0iRGF0ZVRpbWUiIFNpemVGPSIzMjUsMjMiIExvY2F0aW9uRmxvYXQ9IjAsMCIgU3R5bGVOYW1lPSJQYWdlSW5mbyIgLz4NCiAgICAgICAgPEl0ZW0yIFJlZj0iNSIgQ29udHJvbFR5cGU9IlhSUGFnZUluZm8iIE5hbWU9InBhZ2VJbmZvMiIgVGV4dEZvcm1hdFN0cmluZz0iUGFnZSB7MH0gb2YgezF9IiBUZXh0QWxpZ25tZW50PSJUb3BSaWdodCIgU2l6ZUY9IjMyNSwyMyIgTG9jYXRpb25GbG9hdD0iMzI1LDAiIFN0eWxlTmFtZT0iUGFnZUluZm8iIC8+DQogICAgICA8L0NvbnRyb2xzPg0KICAgIDwvSXRlbTI+DQogICAgPEl0ZW0zIFJlZj0iNiIgQ29udHJvbFR5cGU9IlJlcG9ydEhlYWRlckJhbmQiIE5hbWU9IlJlcG9ydEhlYWRlciIgSGVpZ2h0Rj0iNjAiPg0KICAgICAgPENvbnRyb2xzPg0KICAgICAgICA8SXRlbTEgUmVmPSI3IiBDb250cm9sVHlwZT0iWFJMYWJlbCIgTmFtZT0ibGFiZWwxIiBUZXh0PSJDbGllbnQgUmVwb3J0cyIgU2l6ZUY9IjY1MCwyNC4xOTQzMzQiIExvY2F0aW9uRmxvYXQ9IjAsMCIgU3R5bGVOYW1lPSJUaXRsZSIgLz4NCiAgICAgIDwvQ29udHJvbHM+DQogICAgPC9JdGVtMz4NCiAgICA8SXRlbTQgUmVmPSI4IiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsIiBIZWlnaHRGPSIwIiAvPg0KICAgIDxJdGVtNSBSZWY9IjkiIENvbnRyb2xUeXBlPSJEZXRhaWxSZXBvcnRCYW5kIiBOYW1lPSJEZXRhaWxSZXBvcnQiIExldmVsPSIwIiBEYXRhTWVtYmVyPSJjbGllbnRzIiBEYXRhU291cmNlPSIjUmVmLTAiPg0KICAgICAgPEJhbmRzPg0KICAgICAgICA8SXRlbTEgUmVmPSIxMCIgQ29udHJvbFR5cGU9Ikdyb3VwSGVhZGVyQmFuZCIgTmFtZT0iR3JvdXBIZWFkZXIxIiBHcm91cFVuaW9uPSJXaXRoRmlyc3REZXRhaWwiIExldmVsPSIxIiBIZWlnaHRGPSIyNyI+DQogICAgICAgICAgPEdyb3VwRmllbGRzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTEiIEZpZWxkTmFtZT0iZW1haWwiIC8+DQogICAgICAgICAgPC9Hcm91cEZpZWxkcz4NCiAgICAgICAgICA8Q29udHJvbHM+DQogICAgICAgICAgICA8SXRlbTEgUmVmPSIxMiIgQ29udHJvbFR5cGU9IlhSVGFibGUiIE5hbWU9InRhYmxlMSIgU2l6ZUY9IjY1MCwyNSIgTG9jYXRpb25GbG9hdD0iMCwyIj4NCiAgICAgICAgICAgICAgPFJvd3M+DQogICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTMiIENvbnRyb2xUeXBlPSJYUlRhYmxlUm93IiBOYW1lPSJ0YWJsZVJvdzEiIFdlaWdodD0iMSI+DQogICAgICAgICAgICAgICAgICA8Q2VsbHM+DQogICAgICAgICAgICAgICAgICAgIDxJdGVtMSBSZWY9IjE0IiBDb250cm9sVHlwZT0iWFJUYWJsZUNlbGwiIE5hbWU9InRhYmxlQ2VsbDEiIFdlaWdodD0iMC4wNjcxNDY3MTc5NTE4NDc5NTYiIFRleHQ9IkVNQUlMIiBTdHlsZU5hbWU9Ikdyb3VwQ2FwdGlvbjIiIC8+DQogICAgICAgICAgICAgICAgICAgIDxJdGVtMiBSZWY9IjE1IiBDb250cm9sVHlwZT0iWFJUYWJsZUNlbGwiIE5hbWU9InRhYmxlQ2VsbDIiIFdlaWdodD0iMC45MzI4NTMzNDY2MDQ1NjczMSIgU3R5bGVOYW1lPSJHcm91cERhdGEyIj4NCiAgICAgICAgICAgICAgICAgICAgICA8RXhwcmVzc2lvbkJpbmRpbmdzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTYiIEV2ZW50TmFtZT0iQmVmb3JlUHJpbnQiIFByb3BlcnR5TmFtZT0iVGV4dCIgRXhwcmVzc2lvbj0iW2VtYWlsXSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICA8L0V4cHJlc3Npb25CaW5kaW5ncz4NCiAgICAgICAgICAgICAgICAgICAgPC9JdGVtMj4NCiAgICAgICAgICAgICAgICAgIDwvQ2VsbHM+DQogICAgICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICAgICAgPC9Sb3dzPg0KICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICA8L0NvbnRyb2xzPg0KICAgICAgICA8L0l0ZW0xPg0KICAgICAgICA8SXRlbTIgUmVmPSIxNyIgQ29udHJvbFR5cGU9Ikdyb3VwSGVhZGVyQmFuZCIgTmFtZT0iR3JvdXBIZWFkZXIyIiBHcm91cFVuaW9uPSJXaXRoRmlyc3REZXRhaWwiIExldmVsPSIyIiBIZWlnaHRGPSIyNyI+DQogICAgICAgICAgPEdyb3VwRmllbGRzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTgiIEZpZWxkTmFtZT0ibGFzdF9uYW1lIiAvPg0KICAgICAgICAgIDwvR3JvdXBGaWVsZHM+DQogICAgICAgICAgPENvbnRyb2xzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTkiIENvbnRyb2xUeXBlPSJYUlRhYmxlIiBOYW1lPSJ0YWJsZTIiIFNpemVGPSI2NTAsMjUiIExvY2F0aW9uRmxvYXQ9IjAsMiI+DQogICAgICAgICAgICAgIDxSb3dzPg0KICAgICAgICAgICAgICAgIDxJdGVtMSBSZWY9IjIwIiBDb250cm9sVHlwZT0iWFJUYWJsZVJvdyIgTmFtZT0idGFibGVSb3cyIiBXZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgPENlbGxzPg0KICAgICAgICAgICAgICAgICAgICA8SXRlbTEgUmVmPSIyMSIgQ29udHJvbFR5cGU9IlhSVGFibGVDZWxsIiBOYW1lPSJ0YWJsZUNlbGwzIiBXZWlnaHQ9IjEyMjYxMjcuMzc1IiBUZXh0PSJMQVNUIE5BTUUiIFN0eWxlTmFtZT0iR3JvdXBDYXB0aW9uMiIgLz4NCiAgICAgICAgICAgICAgICAgICAgPEl0ZW0yIFJlZj0iMjIiIENvbnRyb2xUeXBlPSJYUlRhYmxlQ2VsbCIgTmFtZT0idGFibGVDZWxsNCIgV2VpZ2h0PSI5NDIzNDcyIiBTdHlsZU5hbWU9Ikdyb3VwRGF0YTIiPg0KICAgICAgICAgICAgICAgICAgICAgIDxFeHByZXNzaW9uQmluZGluZ3M+DQogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbTEgUmVmPSIyMyIgRXZlbnROYW1lPSJCZWZvcmVQcmludCIgUHJvcGVydHlOYW1lPSJUZXh0IiBFeHByZXNzaW9uPSJbbGFzdF9uYW1lXSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICA8L0V4cHJlc3Npb25CaW5kaW5ncz4NCiAgICAgICAgICAgICAgICAgICAgPC9JdGVtMj4NCiAgICAgICAgICAgICAgICAgIDwvQ2VsbHM+DQogICAgICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICAgICAgPC9Sb3dzPg0KICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICA8L0NvbnRyb2xzPg0KICAgICAgICA8L0l0ZW0yPg0KICAgICAgICA8SXRlbTMgUmVmPSIyNCIgQ29udHJvbFR5cGU9Ikdyb3VwSGVhZGVyQmFuZCIgTmFtZT0iR3JvdXBIZWFkZXIzIiBHcm91cFVuaW9uPSJXaXRoRmlyc3REZXRhaWwiIExldmVsPSIzIiBIZWlnaHRGPSIyNyI+DQogICAgICAgICAgPEdyb3VwRmllbGRzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMjUiIEZpZWxkTmFtZT0iZmlyc3RfbmFtZSIgLz4NCiAgICAgICAgICA8L0dyb3VwRmllbGRzPg0KICAgICAgICAgIDxDb250cm9scz4NCiAgICAgICAgICAgIDxJdGVtMSBSZWY9IjI2IiBDb250cm9sVHlwZT0iWFJUYWJsZSIgTmFtZT0idGFibGUzIiBTaXplRj0iNjUwLDI1IiBMb2NhdGlvbkZsb2F0PSIwLDIiPg0KICAgICAgICAgICAgICA8Um93cz4NCiAgICAgICAgICAgICAgICA8SXRlbTEgUmVmPSIyNyIgQ29udHJvbFR5cGU9IlhSVGFibGVSb3ciIE5hbWU9InRhYmxlUm93MyIgV2VpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDxDZWxscz4NCiAgICAgICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMjgiIENvbnRyb2xUeXBlPSJYUlRhYmxlQ2VsbCIgTmFtZT0idGFibGVDZWxsNSIgV2VpZ2h0PSIwLjEyMDAzMTMyNzQ2NzY5ODMyIiBUZXh0PSJGSVJTVCBOQU1FIiBTdHlsZU5hbWU9Ikdyb3VwQ2FwdGlvbjIiIC8+DQogICAgICAgICAgICAgICAgICAgIDxJdGVtMiBSZWY9IjI5IiBDb250cm9sVHlwZT0iWFJUYWJsZUNlbGwiIE5hbWU9InRhYmxlQ2VsbDYiIFdlaWdodD0iMC44Nzk5Njg3MzEyMTk5NTE4OSIgU3R5bGVOYW1lPSJHcm91cERhdGEyIj4NCiAgICAgICAgICAgICAgICAgICAgICA8RXhwcmVzc2lvbkJpbmRpbmdzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMzAiIEV2ZW50TmFtZT0iQmVmb3JlUHJpbnQiIFByb3BlcnR5TmFtZT0iVGV4dCIgRXhwcmVzc2lvbj0iW2ZpcnN0X25hbWVdIiAvPg0KICAgICAgICAgICAgICAgICAgICAgIDwvRXhwcmVzc2lvbkJpbmRpbmdzPg0KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0yPg0KICAgICAgICAgICAgICAgICAgPC9DZWxscz4NCiAgICAgICAgICAgICAgICA8L0l0ZW0xPg0KICAgICAgICAgICAgICA8L1Jvd3M+DQogICAgICAgICAgICA8L0l0ZW0xPg0KICAgICAgICAgIDwvQ29udHJvbHM+DQogICAgICAgIDwvSXRlbTM+DQogICAgICAgIDxJdGVtNCBSZWY9IjMxIiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsMSIgSGVpZ2h0Rj0iMCIgLz4NCiAgICAgICAgPEl0ZW01IFJlZj0iMzIiIENvbnRyb2xUeXBlPSJHcm91cEZvb3RlckJhbmQiIE5hbWU9Ikdyb3VwRm9vdGVyMSIgR3JvdXBVbmlvbj0iV2l0aExhc3REZXRhaWwiIEhlaWdodEY9IjYiPg0KICAgICAgICAgIDxDb250cm9scz4NCiAgICAgICAgICAgIDxJdGVtMSBSZWY9IjMzIiBDb250cm9sVHlwZT0iWFJMYWJlbCIgTmFtZT0ibGFiZWwyIiBTaXplRj0iNjUwLDIuMDgiIExvY2F0aW9uRmxvYXQ9IjAsMCIgU3R5bGVOYW1lPSJHcm91cEZvb3RlckJhY2tncm91bmQzIiBCb3JkZXJzPSJOb25lIj4NCiAgICAgICAgICAgICAgPFN0eWxlUHJpb3JpdHkgUmVmPSIzNCIgVXNlQm9yZGVycz0iZmFsc2UiIC8+DQogICAgICAgICAgICA8L0l0ZW0xPg0KICAgICAgICAgIDwvQ29udHJvbHM+DQogICAgICAgIDwvSXRlbTU+DQogICAgICA8L0JhbmRzPg0KICAgIDwvSXRlbTU+DQogICAgPEl0ZW02IFJlZj0iMzUiIENvbnRyb2xUeXBlPSJEZXRhaWxSZXBvcnRCYW5kIiBOYW1lPSJEZXRhaWxSZXBvcnQxIiBMZXZlbD0iMSIgRGF0YU1lbWJlcj0ib3JkZXJfaXRlbXMiIERhdGFTb3VyY2U9IiNSZWYtMCI+DQogICAgICA8QmFuZHM+DQogICAgICAgIDxJdGVtMSBSZWY9IjM2IiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsMiIgSGVpZ2h0Rj0iMCIgLz4NCiAgICAgIDwvQmFuZHM+DQogICAgPC9JdGVtNj4NCiAgICA8SXRlbTcgUmVmPSIzNyIgQ29udHJvbFR5cGU9IkRldGFpbFJlcG9ydEJhbmQiIE5hbWU9IkRldGFpbFJlcG9ydDIiIExldmVsPSIyIiBEYXRhTWVtYmVyPSJvcmRlcnMiIERhdGFTb3VyY2U9IiNSZWYtMCI+DQogICAgICA8QmFuZHM+DQogICAgICAgIDxJdGVtMSBSZWY9IjM4IiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsMyIgSGVpZ2h0Rj0iMCIgLz4NCiAgICAgIDwvQmFuZHM+DQogICAgPC9JdGVtNz4NCiAgICA8SXRlbTggUmVmPSIzOSIgQ29udHJvbFR5cGU9IkRldGFpbFJlcG9ydEJhbmQiIE5hbWU9IkRldGFpbFJlcG9ydDMiIExldmVsPSIzIiBEYXRhTWVtYmVyPSJwcm9kdWN0cyIgRGF0YVNvdXJjZT0iI1JlZi0wIj4NCiAgICAgIDxCYW5kcz4NCiAgICAgICAgPEl0ZW0xIFJlZj0iNDAiIENvbnRyb2xUeXBlPSJEZXRhaWxCYW5kIiBOYW1lPSJEZXRhaWw0IiBIZWlnaHRGPSIwIiAvPg0KICAgICAgPC9CYW5kcz4NCiAgICA8L0l0ZW04Pg0KICA8L0JhbmRzPg0KICA8U3R5bGVTaGVldD4NCiAgICA8SXRlbTEgUmVmPSI0MSIgTmFtZT0iVGl0bGUiIEJvcmRlclN0eWxlPSJJbnNldCIgUGFkZGluZz0iNiw2LDAsMCwxMDAiIEZvbnQ9IkFyaWFsLCAxNC4yNXB0IiBGb3JlQ29sb3I9IjI1NSw3NSw3NSw3NSIgQmFja0NvbG9yPSJUcmFuc3BhcmVudCIgQm9yZGVyQ29sb3I9IkJsYWNrIiBTaWRlcz0iTm9uZSIgU3RyaW5nRm9ybWF0PSJOZWFyO05lYXI7MDtOb25lO0NoYXJhY3RlcjtHZW5lcmljRGVmYXVsdCIgQm9yZGVyV2lkdGhTZXJpYWxpemFibGU9IjEiIC8+DQogICAgPEl0ZW0yIFJlZj0iNDIiIE5hbWU9Ikdyb3VwQ2FwdGlvbjIiIEJvcmRlclN0eWxlPSJJbnNldCIgUGFkZGluZz0iNiwyLDAsMCwxMDAiIEZvbnQ9IkFyaWFsLCA4LjI1cHQsIHN0eWxlPUJvbGQiIEZvcmVDb2xvcj0iMjU1LDIyOCwyMjgsMjI4IiBCYWNrQ29sb3I9IjI1NSwxMTEsMTExLDExMSIgQm9yZGVyQ29sb3I9IldoaXRlIiBTaWRlcz0iQm90dG9tIiBTdHJpbmdGb3JtYXQ9Ik5lYXI7Q2VudGVyOzA7Tm9uZTtDaGFyYWN0ZXI7R2VuZXJpY0RlZmF1bHQiIFRleHRBbGlnbm1lbnQ9Ik1pZGRsZUxlZnQiIEJvcmRlcldpZHRoU2VyaWFsaXphYmxlPSIyIiAvPg0KICAgIDxJdGVtMyBSZWY9IjQzIiBOYW1lPSJHcm91cERhdGEyIiBCb3JkZXJTdHlsZT0iSW5zZXQiIFBhZGRpbmc9IjYsMiwwLDAsMTAwIiBGb250PSJBcmlhbCwgOC4yNXB0LCBzdHlsZT1Cb2xkIiBGb3JlQ29sb3I9IldoaXRlIiBCYWNrQ29sb3I9IjI1NSwxMTEsMTExLDExMSIgQm9yZGVyQ29sb3I9IldoaXRlIiBTaWRlcz0iQm90dG9tIiBTdHJpbmdGb3JtYXQ9Ik5lYXI7Q2VudGVyOzA7Tm9uZTtDaGFyYWN0ZXI7R2VuZXJpY0RlZmF1bHQiIFRleHRBbGlnbm1lbnQ9Ik1pZGRsZUxlZnQiIEJvcmRlcldpZHRoU2VyaWFsaXphYmxlPSIyIiAvPg0KICAgIDxJdGVtNCBSZWY9IjQ0IiBOYW1lPSJHcm91cEZvb3RlckJhY2tncm91bmQzIiBCb3JkZXJTdHlsZT0iSW5zZXQiIFBhZGRpbmc9IjYsMiwwLDAsMTAwIiBGb250PSJBcmlhbCwgOC4yNXB0LCBzdHlsZT1Cb2xkIiBGb3JlQ29sb3I9IjI1NSwyMjgsMjI4LDIyOCIgQmFja0NvbG9yPSIyNTUsMTMxLDEzMSwxMzEiIEJvcmRlckNvbG9yPSJXaGl0ZSIgU2lkZXM9IkJvdHRvbSIgU3RyaW5nRm9ybWF0PSJOZWFyO0NlbnRlcjswO05vbmU7Q2hhcmFjdGVyO0dlbmVyaWNEZWZhdWx0IiBUZXh0QWxpZ25tZW50PSJNaWRkbGVMZWZ0IiBCb3JkZXJXaWR0aFNlcmlhbGl6YWJsZT0iMiIgLz4NCiAgICA8SXRlbTUgUmVmPSI0NSIgTmFtZT0iUGFnZUluZm8iIEJvcmRlclN0eWxlPSJJbnNldCIgUGFkZGluZz0iNiw2LDAsMCwxMDAiIEZvbnQ9IkFyaWFsLCA4LjI1cHQsIHN0eWxlPUJvbGQiIEZvcmVDb2xvcj0iMjU1LDc1LDc1LDc1IiBTdHJpbmdGb3JtYXQ9Ik5lYXI7TmVhcjswO05vbmU7Q2hhcmFjdGVyO0dlbmVyaWNEZWZhdWx0IiAvPg0KICA8L1N0eWxlU2hlZXQ+DQogIDxDb21wb25lbnRTdG9yYWdlPg0KICAgIDxJdGVtMSBSZWY9IjAiIE9iamVjdFR5cGU9IkRldkV4cHJlc3MuRGF0YUFjY2Vzcy5TcWwuU3FsRGF0YVNvdXJjZSxEZXZFeHByZXNzLkRhdGFBY2Nlc3MudjIzLjEiIE5hbWU9InNxbERhdGFTb3VyY2UiIEJhc2U2ND0iUEZOeGJFUmhkR0ZUYjNWeVkyVWdUbUZ0WlQwaWMzRnNSR0YwWVZOdmRYSmpaU0krUEVOdmJtNWxZM1JwYjI0Z1RtRnRaVDBpWTJ4cFpXNTBjeUlnVUhKdmRtbGtaWEpMWlhrOUlsTlJUR2wwWlNJK1BGQmhjbUZ0WlhSbGNuTStQRkJoY21GdFpYUmxjaUJPWVcxbFBTSmtZWFJoWW1GelpTSWdWbUZzZFdVOUlrTTZYRlZ6WlhKelhGY3dNREF6T0RZek1WeEVaWE5yZEc5d1hHTnNhV1Z1ZEhNdVpHSWlJQzgrUEZCaGNtRnRaWFJsY2lCT1lXMWxQU0p5WldGa0lHOXViSGtpSUZaaGJIVmxQU0l4SWlBdlBqeFFZWEpoYldWMFpYSWdUbUZ0WlQwaVoyVnVaWEpoZEdWRGIyNXVaV04wYVc5dVNHVnNjR1Z5SWlCV1lXeDFaVDBpWm1Gc2MyVWlJQzgrUEM5UVlYSmhiV1YwWlhKelBqd3ZRMjl1Ym1WamRHbHZiajQ4VVhWbGNua2dWSGx3WlQwaVUyVnNaV04wVVhWbGNua2lJRTVoYldVOUltTnNhV1Z1ZEhNaVBqeFVZV0pzWlhNK1BGUmhZbXhsSUU1aGJXVTlJbU5zYVdWdWRITWlJQzgrUEM5VVlXSnNaWE0rUEVOdmJIVnRibk0rUEVOdmJIVnRiaUJVWVdKc1pUMGlZMnhwWlc1MGN5SWdUbUZ0WlQwaVkyeHBaVzUwWDJsa0lpQXZQanhEYjJ4MWJXNGdWR0ZpYkdVOUltTnNhV1Z1ZEhNaUlFNWhiV1U5SW1acGNuTjBYMjVoYldVaUlDOCtQRU52YkhWdGJpQlVZV0pzWlQwaVkyeHBaVzUwY3lJZ1RtRnRaVDBpYkdGemRGOXVZVzFsSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW1Oc2FXVnVkSE1pSUU1aGJXVTlJbVZ0WVdsc0lpQXZQand2UTI5c2RXMXVjejQ4TDFGMVpYSjVQanhSZFdWeWVTQlVlWEJsUFNKVFpXeGxZM1JSZFdWeWVTSWdUbUZ0WlQwaWIzSmtaWEpmYVhSbGJYTWlQanhVWVdKc1pYTStQRlJoWW14bElFNWhiV1U5SW05eVpHVnlYMmwwWlcxeklpQXZQand2VkdGaWJHVnpQanhEYjJ4MWJXNXpQanhEYjJ4MWJXNGdWR0ZpYkdVOUltOXlaR1Z5WDJsMFpXMXpJaUJPWVcxbFBTSnZjbVJsY2w5cGRHVnRYMmxrSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW05eVpHVnlYMmwwWlcxeklpQk9ZVzFsUFNKdmNtUmxjbDlwWkNJZ0x6NDhRMjlzZFcxdUlGUmhZbXhsUFNKdmNtUmxjbDlwZEdWdGN5SWdUbUZ0WlQwaWNISnZaSFZqZEY5cFpDSWdMejQ4UTI5c2RXMXVJRlJoWW14bFBTSnZjbVJsY2w5cGRHVnRjeUlnVG1GdFpUMGljWFZoYm5ScGRIa2lJQzgrUEM5RGIyeDFiVzV6UGp3dlVYVmxjbmsrUEZGMVpYSjVJRlI1Y0dVOUlsTmxiR1ZqZEZGMVpYSjVJaUJPWVcxbFBTSnZjbVJsY25NaVBqeFVZV0pzWlhNK1BGUmhZbXhsSUU1aGJXVTlJbTl5WkdWeWN5SWdMejQ4TDFSaFlteGxjejQ4UTI5c2RXMXVjejQ4UTI5c2RXMXVJRlJoWW14bFBTSnZjbVJsY25NaUlFNWhiV1U5SW05eVpHVnlYMmxrSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW05eVpHVnljeUlnVG1GdFpUMGlZMnhwWlc1MFgybGtJaUF2UGp3dlEyOXNkVzF1Y3o0OEwxRjFaWEo1UGp4UmRXVnllU0JVZVhCbFBTSlRaV3hsWTNSUmRXVnllU0lnVG1GdFpUMGljSEp2WkhWamRITWlQanhVWVdKc1pYTStQRlJoWW14bElFNWhiV1U5SW5CeWIyUjFZM1J6SWlBdlBqd3ZWR0ZpYkdWelBqeERiMngxYlc1elBqeERiMngxYlc0Z1ZHRmliR1U5SW5CeWIyUjFZM1J6SWlCT1lXMWxQU0p3Y205a2RXTjBYMmxrSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW5CeWIyUjFZM1J6SWlCT1lXMWxQU0p1WVcxbElpQXZQanhEYjJ4MWJXNGdWR0ZpYkdVOUluQnliMlIxWTNSeklpQk9ZVzFsUFNKd2NtbGpaU0lnTHo0OEwwTnZiSFZ0Ym5NK1BDOVJkV1Z5ZVQ0OFVtVnpkV3gwVTJOb1pXMWhQanhFWVhSaFUyVjBJRTVoYldVOUluTnhiRVJoZEdGVGIzVnlZMlVpUGp4V2FXVjNJRTVoYldVOUltTnNhV1Z1ZEhNaVBqeEdhV1ZzWkNCT1lXMWxQU0pqYkdsbGJuUmZhV1FpSUZSNWNHVTlJa2x1ZERZMElpQXZQanhHYVdWc1pDQk9ZVzFsUFNKbWFYSnpkRjl1WVcxbElpQlVlWEJsUFNKVGRISnBibWNpSUM4K1BFWnBaV3hrSUU1aGJXVTlJbXhoYzNSZmJtRnRaU0lnVkhsd1pUMGlVM1J5YVc1bklpQXZQanhHYVdWc1pDQk9ZVzFsUFNKbGJXRnBiQ0lnVkhsd1pUMGlVM1J5YVc1bklpQXZQand2Vm1sbGR6NDhWbWxsZHlCT1lXMWxQU0p2Y21SbGNsOXBkR1Z0Y3lJK1BFWnBaV3hrSUU1aGJXVTlJbTl5WkdWeVgybDBaVzFmYVdRaUlGUjVjR1U5SWtsdWREWTBJaUF2UGp4R2FXVnNaQ0JPWVcxbFBTSnZjbVJsY2w5cFpDSWdWSGx3WlQwaVNXNTBOalFpSUM4K1BFWnBaV3hrSUU1aGJXVTlJbkJ5YjJSMVkzUmZhV1FpSUZSNWNHVTlJa2x1ZERZMElpQXZQanhHYVdWc1pDQk9ZVzFsUFNKeGRXRnVkR2wwZVNJZ1ZIbHdaVDBpU1c1ME5qUWlJQzgrUEM5V2FXVjNQanhXYVdWM0lFNWhiV1U5SW05eVpHVnljeUkrUEVacFpXeGtJRTVoYldVOUltOXlaR1Z5WDJsa0lpQlVlWEJsUFNKSmJuUTJOQ0lnTHo0OFJtbGxiR1FnVG1GdFpUMGlZMnhwWlc1MFgybGtJaUJVZVhCbFBTSkpiblEyTkNJZ0x6NDhMMVpwWlhjK1BGWnBaWGNnVG1GdFpUMGljSEp2WkhWamRITWlQanhHYVdWc1pDQk9ZVzFsUFNKd2NtOWtkV04wWDJsa0lpQlVlWEJsUFNKSmJuUTJOQ0lnTHo0OFJtbGxiR1FnVG1GdFpUMGlibUZ0WlNJZ1ZIbHdaVDBpVTNSeWFXNW5JaUF2UGp4R2FXVnNaQ0JPWVcxbFBTSndjbWxqWlNJZ1ZIbHdaVDBpUkc5MVlteGxJaUF2UGp3dlZtbGxkejQ4TDBSaGRHRlRaWFErUEM5U1pYTjFiSFJUWTJobGJXRStQRU52Ym01bFkzUnBiMjVQY0hScGIyNXpJRU5zYjNObFEyOXVibVZqZEdsdmJqMGlkSEoxWlNJZ0x6NDhMMU54YkVSaGRHRlRiM1Z5WTJVKyIgLz4NCiAgPC9Db21wb25lbnRTdG9yYWdlPg0KPC9YdHJhUmVwb3J0c0xheW91dFNlcmlhbGl6ZXI+ --extension ".repx"
defVar --name databaseConnection --type DbConnection --output
defVar --name hasResult --type Boolean
defVar --name path --type String
defVar --name result --type String
defVar --name connectionString --type String
getSpecialFolder --folder "Desktop" path=value
setVar --name "${connectionString}" --value "Server=(localdb)\\mssqllocaldb;Database=automation;User Id=<user>;Password=<pass>"
sqlServerConnect --connectionstring "${connectionString}"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS clients (client_id INTEGER PRIMARY KEY AUTOINCREMENT,first_name TEXT NOT NULL,last_name TEXT NOT NULL,email TEXT NOT NULL);"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS products (product_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,price REAL NOT NULL);"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS orders (order_id INTEGER PRIMARY KEY AUTOINCREMENT,client_id INTEGER,FOREIGN KEY(client_id) REFERENCES clients(client_id));"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS order_items (order_item_id INTEGER PRIMARY KEY AUTOINCREMENT,order_id INTEGER,product_id INTEGER NOT NULL,quantity INTEGER NOT NULL,FOREIGN KEY(order_id) REFERENCES orders(order_id),FOREIGN KEY(product_id) REFERENCES products(product_id));"
sqlExecuteScalar --connection ${databaseConnection} --statement "SELECT COUNT(*) FROM orders;" result=value hasResult=hasresult
if --left "${hasResult}" --operator "Is_True" --negate
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO clients (first_name, last_name, email)\r\nVALUES\r\n(\'John\', \'Doe\', \'john.doe@example.com\'),\r\n(\'Jane\', \'Doe\', \'jane.doe@example.com\'),\r\n(\'Peter\', \'Parker\', \'peter.parker@example.com\'),\r\n(\'Bruce\', \'Wayne\', \'bruce.wayne@example.com\'),\r\n(\'Clark\', \'Kent\', \'clark.kent@example.com\');"
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO products (name, price)\r\nVALUES\r\n(\'Espresso\', 3.99),\r\n(\'Latte\', 4.99),\r\n(\'Capuccino\', 5.99),\r\n(\'Macchiato\', 4.50),\r\n(\'Americano\', 3.50),\r\n(\'Iced coffee\', 4.50),\r\n(\'Cold brew coffee\', 5.00),\r\n(\'Frappuccino\', 6.00),\r\n(\'Mocha\', 5.50),\r\n(\'White chocolate mocha\', 6.00);"
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO orders (client_id)\r\nVALUES\r\n(1),\r\n(2),\r\n(3),\r\n(4),\r\n(5);"
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO order_items (order_id, product_id, quantity)\r\nVALUES\r\n(1, 1, 2),\r\n(1, 2, 1),\r\n(2, 3, 3),\r\n(2, 4, 1),\r\n(3, 5, 2),\r\n(3, 6, 1),\r\n(4, 7, 3),\r\n(4, 8, 1),\r\n(5, 9, 2),\r\n(5, 10, 1);"
endIf
printReport --usedefaultprinter --asset "${asset.report}" --automap --watermark "None"
Server=(localdb)\\mssqllocaldb;Database=automation;User Id=<user>;Password=<pass>
with a valid
connection string.If you use a database as a data source and you want to map variables individually, check the name of the database variable under the Properties tab in the Report view in IBM RPA Studio. By default, the database variable is named
sqlDataSource
. The previous script with manually mapped parameters looks as follows:
import --name report --type "File" --content 77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxYdHJhUmVwb3J0c0xheW91dFNlcmlhbGl6ZXIgU2VyaWFsaXplclZlcnNpb249IjIzLjEuMy4wIiBSZWY9IjEiIENvbnRyb2xUeXBlPSJEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlh0cmFSZXBvcnQsIERldkV4cHJlc3MuWHRyYVJlcG9ydHMudjIzLjEsIFZlcnNpb249MjMuMS4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YSIgTmFtZT0iUmVwb3J0MSIgUGFnZVdpZHRoPSI4NTAiIFBhZ2VIZWlnaHQ9IjExMDAiIFZlcnNpb249IjIzLjEiIERhdGFTb3VyY2U9IiNSZWYtMCIgRm9udD0iQXJpYWwsIDkuNzVwdCI+DQogIDxCYW5kcz4NCiAgICA8SXRlbTEgUmVmPSIyIiBDb250cm9sVHlwZT0iVG9wTWFyZ2luQmFuZCIgTmFtZT0iVG9wTWFyZ2luIiAvPg0KICAgIDxJdGVtMiBSZWY9IjMiIENvbnRyb2xUeXBlPSJCb3R0b21NYXJnaW5CYW5kIiBOYW1lPSJCb3R0b21NYXJnaW4iPg0KICAgICAgPENvbnRyb2xzPg0KICAgICAgICA8SXRlbTEgUmVmPSI0IiBDb250cm9sVHlwZT0iWFJQYWdlSW5mbyIgTmFtZT0icGFnZUluZm8xIiBQYWdlSW5mbz0iRGF0ZVRpbWUiIFNpemVGPSIzMjUsMjMiIExvY2F0aW9uRmxvYXQ9IjAsMCIgU3R5bGVOYW1lPSJQYWdlSW5mbyIgLz4NCiAgICAgICAgPEl0ZW0yIFJlZj0iNSIgQ29udHJvbFR5cGU9IlhSUGFnZUluZm8iIE5hbWU9InBhZ2VJbmZvMiIgVGV4dEZvcm1hdFN0cmluZz0iUGFnZSB7MH0gb2YgezF9IiBUZXh0QWxpZ25tZW50PSJUb3BSaWdodCIgU2l6ZUY9IjMyNSwyMyIgTG9jYXRpb25GbG9hdD0iMzI1LDAiIFN0eWxlTmFtZT0iUGFnZUluZm8iIC8+DQogICAgICA8L0NvbnRyb2xzPg0KICAgIDwvSXRlbTI+DQogICAgPEl0ZW0zIFJlZj0iNiIgQ29udHJvbFR5cGU9IlJlcG9ydEhlYWRlckJhbmQiIE5hbWU9IlJlcG9ydEhlYWRlciIgSGVpZ2h0Rj0iNjAiPg0KICAgICAgPENvbnRyb2xzPg0KICAgICAgICA8SXRlbTEgUmVmPSI3IiBDb250cm9sVHlwZT0iWFJMYWJlbCIgTmFtZT0ibGFiZWwxIiBUZXh0PSJDbGllbnQgUmVwb3J0cyIgU2l6ZUY9IjY1MCwyNC4xOTQzMzQiIExvY2F0aW9uRmxvYXQ9IjAsMCIgU3R5bGVOYW1lPSJUaXRsZSIgLz4NCiAgICAgIDwvQ29udHJvbHM+DQogICAgPC9JdGVtMz4NCiAgICA8SXRlbTQgUmVmPSI4IiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsIiBIZWlnaHRGPSIwIiAvPg0KICAgIDxJdGVtNSBSZWY9IjkiIENvbnRyb2xUeXBlPSJEZXRhaWxSZXBvcnRCYW5kIiBOYW1lPSJEZXRhaWxSZXBvcnQiIExldmVsPSIwIiBEYXRhTWVtYmVyPSJjbGllbnRzIiBEYXRhU291cmNlPSIjUmVmLTAiPg0KICAgICAgPEJhbmRzPg0KICAgICAgICA8SXRlbTEgUmVmPSIxMCIgQ29udHJvbFR5cGU9Ikdyb3VwSGVhZGVyQmFuZCIgTmFtZT0iR3JvdXBIZWFkZXIxIiBHcm91cFVuaW9uPSJXaXRoRmlyc3REZXRhaWwiIExldmVsPSIxIiBIZWlnaHRGPSIyNyI+DQogICAgICAgICAgPEdyb3VwRmllbGRzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTEiIEZpZWxkTmFtZT0iZW1haWwiIC8+DQogICAgICAgICAgPC9Hcm91cEZpZWxkcz4NCiAgICAgICAgICA8Q29udHJvbHM+DQogICAgICAgICAgICA8SXRlbTEgUmVmPSIxMiIgQ29udHJvbFR5cGU9IlhSVGFibGUiIE5hbWU9InRhYmxlMSIgU2l6ZUY9IjY1MCwyNSIgTG9jYXRpb25GbG9hdD0iMCwyIj4NCiAgICAgICAgICAgICAgPFJvd3M+DQogICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTMiIENvbnRyb2xUeXBlPSJYUlRhYmxlUm93IiBOYW1lPSJ0YWJsZVJvdzEiIFdlaWdodD0iMSI+DQogICAgICAgICAgICAgICAgICA8Q2VsbHM+DQogICAgICAgICAgICAgICAgICAgIDxJdGVtMSBSZWY9IjE0IiBDb250cm9sVHlwZT0iWFJUYWJsZUNlbGwiIE5hbWU9InRhYmxlQ2VsbDEiIFdlaWdodD0iMC4wNjcxNDY3MTc5NTE4NDc5NTYiIFRleHQ9IkVNQUlMIiBTdHlsZU5hbWU9Ikdyb3VwQ2FwdGlvbjIiIC8+DQogICAgICAgICAgICAgICAgICAgIDxJdGVtMiBSZWY9IjE1IiBDb250cm9sVHlwZT0iWFJUYWJsZUNlbGwiIE5hbWU9InRhYmxlQ2VsbDIiIFdlaWdodD0iMC45MzI4NTMzNDY2MDQ1NjczMSIgU3R5bGVOYW1lPSJHcm91cERhdGEyIj4NCiAgICAgICAgICAgICAgICAgICAgICA8RXhwcmVzc2lvbkJpbmRpbmdzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTYiIEV2ZW50TmFtZT0iQmVmb3JlUHJpbnQiIFByb3BlcnR5TmFtZT0iVGV4dCIgRXhwcmVzc2lvbj0iW2VtYWlsXSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICA8L0V4cHJlc3Npb25CaW5kaW5ncz4NCiAgICAgICAgICAgICAgICAgICAgPC9JdGVtMj4NCiAgICAgICAgICAgICAgICAgIDwvQ2VsbHM+DQogICAgICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICAgICAgPC9Sb3dzPg0KICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICA8L0NvbnRyb2xzPg0KICAgICAgICA8L0l0ZW0xPg0KICAgICAgICA8SXRlbTIgUmVmPSIxNyIgQ29udHJvbFR5cGU9Ikdyb3VwSGVhZGVyQmFuZCIgTmFtZT0iR3JvdXBIZWFkZXIyIiBHcm91cFVuaW9uPSJXaXRoRmlyc3REZXRhaWwiIExldmVsPSIyIiBIZWlnaHRGPSIyNyI+DQogICAgICAgICAgPEdyb3VwRmllbGRzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTgiIEZpZWxkTmFtZT0ibGFzdF9uYW1lIiAvPg0KICAgICAgICAgIDwvR3JvdXBGaWVsZHM+DQogICAgICAgICAgPENvbnRyb2xzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMTkiIENvbnRyb2xUeXBlPSJYUlRhYmxlIiBOYW1lPSJ0YWJsZTIiIFNpemVGPSI2NTAsMjUiIExvY2F0aW9uRmxvYXQ9IjAsMiI+DQogICAgICAgICAgICAgIDxSb3dzPg0KICAgICAgICAgICAgICAgIDxJdGVtMSBSZWY9IjIwIiBDb250cm9sVHlwZT0iWFJUYWJsZVJvdyIgTmFtZT0idGFibGVSb3cyIiBXZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgPENlbGxzPg0KICAgICAgICAgICAgICAgICAgICA8SXRlbTEgUmVmPSIyMSIgQ29udHJvbFR5cGU9IlhSVGFibGVDZWxsIiBOYW1lPSJ0YWJsZUNlbGwzIiBXZWlnaHQ9IjEyMjYxMjcuMzc1IiBUZXh0PSJMQVNUIE5BTUUiIFN0eWxlTmFtZT0iR3JvdXBDYXB0aW9uMiIgLz4NCiAgICAgICAgICAgICAgICAgICAgPEl0ZW0yIFJlZj0iMjIiIENvbnRyb2xUeXBlPSJYUlRhYmxlQ2VsbCIgTmFtZT0idGFibGVDZWxsNCIgV2VpZ2h0PSI5NDIzNDcyIiBTdHlsZU5hbWU9Ikdyb3VwRGF0YTIiPg0KICAgICAgICAgICAgICAgICAgICAgIDxFeHByZXNzaW9uQmluZGluZ3M+DQogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbTEgUmVmPSIyMyIgRXZlbnROYW1lPSJCZWZvcmVQcmludCIgUHJvcGVydHlOYW1lPSJUZXh0IiBFeHByZXNzaW9uPSJbbGFzdF9uYW1lXSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICA8L0V4cHJlc3Npb25CaW5kaW5ncz4NCiAgICAgICAgICAgICAgICAgICAgPC9JdGVtMj4NCiAgICAgICAgICAgICAgICAgIDwvQ2VsbHM+DQogICAgICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICAgICAgPC9Sb3dzPg0KICAgICAgICAgICAgPC9JdGVtMT4NCiAgICAgICAgICA8L0NvbnRyb2xzPg0KICAgICAgICA8L0l0ZW0yPg0KICAgICAgICA8SXRlbTMgUmVmPSIyNCIgQ29udHJvbFR5cGU9Ikdyb3VwSGVhZGVyQmFuZCIgTmFtZT0iR3JvdXBIZWFkZXIzIiBHcm91cFVuaW9uPSJXaXRoRmlyc3REZXRhaWwiIExldmVsPSIzIiBIZWlnaHRGPSIyNyI+DQogICAgICAgICAgPEdyb3VwRmllbGRzPg0KICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMjUiIEZpZWxkTmFtZT0iZmlyc3RfbmFtZSIgLz4NCiAgICAgICAgICA8L0dyb3VwRmllbGRzPg0KICAgICAgICAgIDxDb250cm9scz4NCiAgICAgICAgICAgIDxJdGVtMSBSZWY9IjI2IiBDb250cm9sVHlwZT0iWFJUYWJsZSIgTmFtZT0idGFibGUzIiBTaXplRj0iNjUwLDI1IiBMb2NhdGlvbkZsb2F0PSIwLDIiPg0KICAgICAgICAgICAgICA8Um93cz4NCiAgICAgICAgICAgICAgICA8SXRlbTEgUmVmPSIyNyIgQ29udHJvbFR5cGU9IlhSVGFibGVSb3ciIE5hbWU9InRhYmxlUm93MyIgV2VpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDxDZWxscz4NCiAgICAgICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMjgiIENvbnRyb2xUeXBlPSJYUlRhYmxlQ2VsbCIgTmFtZT0idGFibGVDZWxsNSIgV2VpZ2h0PSIwLjEyMDAzMTMyNzQ2NzY5ODMyIiBUZXh0PSJGSVJTVCBOQU1FIiBTdHlsZU5hbWU9Ikdyb3VwQ2FwdGlvbjIiIC8+DQogICAgICAgICAgICAgICAgICAgIDxJdGVtMiBSZWY9IjI5IiBDb250cm9sVHlwZT0iWFJUYWJsZUNlbGwiIE5hbWU9InRhYmxlQ2VsbDYiIFdlaWdodD0iMC44Nzk5Njg3MzEyMTk5NTE4OSIgU3R5bGVOYW1lPSJHcm91cERhdGEyIj4NCiAgICAgICAgICAgICAgICAgICAgICA8RXhwcmVzc2lvbkJpbmRpbmdzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0xIFJlZj0iMzAiIEV2ZW50TmFtZT0iQmVmb3JlUHJpbnQiIFByb3BlcnR5TmFtZT0iVGV4dCIgRXhwcmVzc2lvbj0iW2ZpcnN0X25hbWVdIiAvPg0KICAgICAgICAgICAgICAgICAgICAgIDwvRXhwcmVzc2lvbkJpbmRpbmdzPg0KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0yPg0KICAgICAgICAgICAgICAgICAgPC9DZWxscz4NCiAgICAgICAgICAgICAgICA8L0l0ZW0xPg0KICAgICAgICAgICAgICA8L1Jvd3M+DQogICAgICAgICAgICA8L0l0ZW0xPg0KICAgICAgICAgIDwvQ29udHJvbHM+DQogICAgICAgIDwvSXRlbTM+DQogICAgICAgIDxJdGVtNCBSZWY9IjMxIiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsMSIgSGVpZ2h0Rj0iMCIgLz4NCiAgICAgICAgPEl0ZW01IFJlZj0iMzIiIENvbnRyb2xUeXBlPSJHcm91cEZvb3RlckJhbmQiIE5hbWU9Ikdyb3VwRm9vdGVyMSIgR3JvdXBVbmlvbj0iV2l0aExhc3REZXRhaWwiIEhlaWdodEY9IjYiPg0KICAgICAgICAgIDxDb250cm9scz4NCiAgICAgICAgICAgIDxJdGVtMSBSZWY9IjMzIiBDb250cm9sVHlwZT0iWFJMYWJlbCIgTmFtZT0ibGFiZWwyIiBTaXplRj0iNjUwLDIuMDgiIExvY2F0aW9uRmxvYXQ9IjAsMCIgU3R5bGVOYW1lPSJHcm91cEZvb3RlckJhY2tncm91bmQzIiBCb3JkZXJzPSJOb25lIj4NCiAgICAgICAgICAgICAgPFN0eWxlUHJpb3JpdHkgUmVmPSIzNCIgVXNlQm9yZGVycz0iZmFsc2UiIC8+DQogICAgICAgICAgICA8L0l0ZW0xPg0KICAgICAgICAgIDwvQ29udHJvbHM+DQogICAgICAgIDwvSXRlbTU+DQogICAgICA8L0JhbmRzPg0KICAgIDwvSXRlbTU+DQogICAgPEl0ZW02IFJlZj0iMzUiIENvbnRyb2xUeXBlPSJEZXRhaWxSZXBvcnRCYW5kIiBOYW1lPSJEZXRhaWxSZXBvcnQxIiBMZXZlbD0iMSIgRGF0YU1lbWJlcj0ib3JkZXJfaXRlbXMiIERhdGFTb3VyY2U9IiNSZWYtMCI+DQogICAgICA8QmFuZHM+DQogICAgICAgIDxJdGVtMSBSZWY9IjM2IiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsMiIgSGVpZ2h0Rj0iMCIgLz4NCiAgICAgIDwvQmFuZHM+DQogICAgPC9JdGVtNj4NCiAgICA8SXRlbTcgUmVmPSIzNyIgQ29udHJvbFR5cGU9IkRldGFpbFJlcG9ydEJhbmQiIE5hbWU9IkRldGFpbFJlcG9ydDIiIExldmVsPSIyIiBEYXRhTWVtYmVyPSJvcmRlcnMiIERhdGFTb3VyY2U9IiNSZWYtMCI+DQogICAgICA8QmFuZHM+DQogICAgICAgIDxJdGVtMSBSZWY9IjM4IiBDb250cm9sVHlwZT0iRGV0YWlsQmFuZCIgTmFtZT0iRGV0YWlsMyIgSGVpZ2h0Rj0iMCIgLz4NCiAgICAgIDwvQmFuZHM+DQogICAgPC9JdGVtNz4NCiAgICA8SXRlbTggUmVmPSIzOSIgQ29udHJvbFR5cGU9IkRldGFpbFJlcG9ydEJhbmQiIE5hbWU9IkRldGFpbFJlcG9ydDMiIExldmVsPSIzIiBEYXRhTWVtYmVyPSJwcm9kdWN0cyIgRGF0YVNvdXJjZT0iI1JlZi0wIj4NCiAgICAgIDxCYW5kcz4NCiAgICAgICAgPEl0ZW0xIFJlZj0iNDAiIENvbnRyb2xUeXBlPSJEZXRhaWxCYW5kIiBOYW1lPSJEZXRhaWw0IiBIZWlnaHRGPSIwIiAvPg0KICAgICAgPC9CYW5kcz4NCiAgICA8L0l0ZW04Pg0KICA8L0JhbmRzPg0KICA8U3R5bGVTaGVldD4NCiAgICA8SXRlbTEgUmVmPSI0MSIgTmFtZT0iVGl0bGUiIEJvcmRlclN0eWxlPSJJbnNldCIgUGFkZGluZz0iNiw2LDAsMCwxMDAiIEZvbnQ9IkFyaWFsLCAxNC4yNXB0IiBGb3JlQ29sb3I9IjI1NSw3NSw3NSw3NSIgQmFja0NvbG9yPSJUcmFuc3BhcmVudCIgQm9yZGVyQ29sb3I9IkJsYWNrIiBTaWRlcz0iTm9uZSIgU3RyaW5nRm9ybWF0PSJOZWFyO05lYXI7MDtOb25lO0NoYXJhY3RlcjtHZW5lcmljRGVmYXVsdCIgQm9yZGVyV2lkdGhTZXJpYWxpemFibGU9IjEiIC8+DQogICAgPEl0ZW0yIFJlZj0iNDIiIE5hbWU9Ikdyb3VwQ2FwdGlvbjIiIEJvcmRlclN0eWxlPSJJbnNldCIgUGFkZGluZz0iNiwyLDAsMCwxMDAiIEZvbnQ9IkFyaWFsLCA4LjI1cHQsIHN0eWxlPUJvbGQiIEZvcmVDb2xvcj0iMjU1LDIyOCwyMjgsMjI4IiBCYWNrQ29sb3I9IjI1NSwxMTEsMTExLDExMSIgQm9yZGVyQ29sb3I9IldoaXRlIiBTaWRlcz0iQm90dG9tIiBTdHJpbmdGb3JtYXQ9Ik5lYXI7Q2VudGVyOzA7Tm9uZTtDaGFyYWN0ZXI7R2VuZXJpY0RlZmF1bHQiIFRleHRBbGlnbm1lbnQ9Ik1pZGRsZUxlZnQiIEJvcmRlcldpZHRoU2VyaWFsaXphYmxlPSIyIiAvPg0KICAgIDxJdGVtMyBSZWY9IjQzIiBOYW1lPSJHcm91cERhdGEyIiBCb3JkZXJTdHlsZT0iSW5zZXQiIFBhZGRpbmc9IjYsMiwwLDAsMTAwIiBGb250PSJBcmlhbCwgOC4yNXB0LCBzdHlsZT1Cb2xkIiBGb3JlQ29sb3I9IldoaXRlIiBCYWNrQ29sb3I9IjI1NSwxMTEsMTExLDExMSIgQm9yZGVyQ29sb3I9IldoaXRlIiBTaWRlcz0iQm90dG9tIiBTdHJpbmdGb3JtYXQ9Ik5lYXI7Q2VudGVyOzA7Tm9uZTtDaGFyYWN0ZXI7R2VuZXJpY0RlZmF1bHQiIFRleHRBbGlnbm1lbnQ9Ik1pZGRsZUxlZnQiIEJvcmRlcldpZHRoU2VyaWFsaXphYmxlPSIyIiAvPg0KICAgIDxJdGVtNCBSZWY9IjQ0IiBOYW1lPSJHcm91cEZvb3RlckJhY2tncm91bmQzIiBCb3JkZXJTdHlsZT0iSW5zZXQiIFBhZGRpbmc9IjYsMiwwLDAsMTAwIiBGb250PSJBcmlhbCwgOC4yNXB0LCBzdHlsZT1Cb2xkIiBGb3JlQ29sb3I9IjI1NSwyMjgsMjI4LDIyOCIgQmFja0NvbG9yPSIyNTUsMTMxLDEzMSwxMzEiIEJvcmRlckNvbG9yPSJXaGl0ZSIgU2lkZXM9IkJvdHRvbSIgU3RyaW5nRm9ybWF0PSJOZWFyO0NlbnRlcjswO05vbmU7Q2hhcmFjdGVyO0dlbmVyaWNEZWZhdWx0IiBUZXh0QWxpZ25tZW50PSJNaWRkbGVMZWZ0IiBCb3JkZXJXaWR0aFNlcmlhbGl6YWJsZT0iMiIgLz4NCiAgICA8SXRlbTUgUmVmPSI0NSIgTmFtZT0iUGFnZUluZm8iIEJvcmRlclN0eWxlPSJJbnNldCIgUGFkZGluZz0iNiw2LDAsMCwxMDAiIEZvbnQ9IkFyaWFsLCA4LjI1cHQsIHN0eWxlPUJvbGQiIEZvcmVDb2xvcj0iMjU1LDc1LDc1LDc1IiBTdHJpbmdGb3JtYXQ9Ik5lYXI7TmVhcjswO05vbmU7Q2hhcmFjdGVyO0dlbmVyaWNEZWZhdWx0IiAvPg0KICA8L1N0eWxlU2hlZXQ+DQogIDxDb21wb25lbnRTdG9yYWdlPg0KICAgIDxJdGVtMSBSZWY9IjAiIE9iamVjdFR5cGU9IkRldkV4cHJlc3MuRGF0YUFjY2Vzcy5TcWwuU3FsRGF0YVNvdXJjZSxEZXZFeHByZXNzLkRhdGFBY2Nlc3MudjIzLjEiIE5hbWU9InNxbERhdGFTb3VyY2UiIEJhc2U2ND0iUEZOeGJFUmhkR0ZUYjNWeVkyVWdUbUZ0WlQwaWMzRnNSR0YwWVZOdmRYSmpaU0krUEVOdmJtNWxZM1JwYjI0Z1RtRnRaVDBpWTJ4cFpXNTBjeUlnVUhKdmRtbGtaWEpMWlhrOUlsTlJUR2wwWlNJK1BGQmhjbUZ0WlhSbGNuTStQRkJoY21GdFpYUmxjaUJPWVcxbFBTSmtZWFJoWW1GelpTSWdWbUZzZFdVOUlrTTZYRlZ6WlhKelhGY3dNREF6T0RZek1WeEVaWE5yZEc5d1hHTnNhV1Z1ZEhNdVpHSWlJQzgrUEZCaGNtRnRaWFJsY2lCT1lXMWxQU0p5WldGa0lHOXViSGtpSUZaaGJIVmxQU0l4SWlBdlBqeFFZWEpoYldWMFpYSWdUbUZ0WlQwaVoyVnVaWEpoZEdWRGIyNXVaV04wYVc5dVNHVnNjR1Z5SWlCV1lXeDFaVDBpWm1Gc2MyVWlJQzgrUEM5UVlYSmhiV1YwWlhKelBqd3ZRMjl1Ym1WamRHbHZiajQ4VVhWbGNua2dWSGx3WlQwaVUyVnNaV04wVVhWbGNua2lJRTVoYldVOUltTnNhV1Z1ZEhNaVBqeFVZV0pzWlhNK1BGUmhZbXhsSUU1aGJXVTlJbU5zYVdWdWRITWlJQzgrUEM5VVlXSnNaWE0rUEVOdmJIVnRibk0rUEVOdmJIVnRiaUJVWVdKc1pUMGlZMnhwWlc1MGN5SWdUbUZ0WlQwaVkyeHBaVzUwWDJsa0lpQXZQanhEYjJ4MWJXNGdWR0ZpYkdVOUltTnNhV1Z1ZEhNaUlFNWhiV1U5SW1acGNuTjBYMjVoYldVaUlDOCtQRU52YkhWdGJpQlVZV0pzWlQwaVkyeHBaVzUwY3lJZ1RtRnRaVDBpYkdGemRGOXVZVzFsSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW1Oc2FXVnVkSE1pSUU1aGJXVTlJbVZ0WVdsc0lpQXZQand2UTI5c2RXMXVjejQ4TDFGMVpYSjVQanhSZFdWeWVTQlVlWEJsUFNKVFpXeGxZM1JSZFdWeWVTSWdUbUZ0WlQwaWIzSmtaWEpmYVhSbGJYTWlQanhVWVdKc1pYTStQRlJoWW14bElFNWhiV1U5SW05eVpHVnlYMmwwWlcxeklpQXZQand2VkdGaWJHVnpQanhEYjJ4MWJXNXpQanhEYjJ4MWJXNGdWR0ZpYkdVOUltOXlaR1Z5WDJsMFpXMXpJaUJPWVcxbFBTSnZjbVJsY2w5cGRHVnRYMmxrSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW05eVpHVnlYMmwwWlcxeklpQk9ZVzFsUFNKdmNtUmxjbDlwWkNJZ0x6NDhRMjlzZFcxdUlGUmhZbXhsUFNKdmNtUmxjbDlwZEdWdGN5SWdUbUZ0WlQwaWNISnZaSFZqZEY5cFpDSWdMejQ4UTI5c2RXMXVJRlJoWW14bFBTSnZjbVJsY2w5cGRHVnRjeUlnVG1GdFpUMGljWFZoYm5ScGRIa2lJQzgrUEM5RGIyeDFiVzV6UGp3dlVYVmxjbmsrUEZGMVpYSjVJRlI1Y0dVOUlsTmxiR1ZqZEZGMVpYSjVJaUJPWVcxbFBTSnZjbVJsY25NaVBqeFVZV0pzWlhNK1BGUmhZbXhsSUU1aGJXVTlJbTl5WkdWeWN5SWdMejQ4TDFSaFlteGxjejQ4UTI5c2RXMXVjejQ4UTI5c2RXMXVJRlJoWW14bFBTSnZjbVJsY25NaUlFNWhiV1U5SW05eVpHVnlYMmxrSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW05eVpHVnljeUlnVG1GdFpUMGlZMnhwWlc1MFgybGtJaUF2UGp3dlEyOXNkVzF1Y3o0OEwxRjFaWEo1UGp4UmRXVnllU0JVZVhCbFBTSlRaV3hsWTNSUmRXVnllU0lnVG1GdFpUMGljSEp2WkhWamRITWlQanhVWVdKc1pYTStQRlJoWW14bElFNWhiV1U5SW5CeWIyUjFZM1J6SWlBdlBqd3ZWR0ZpYkdWelBqeERiMngxYlc1elBqeERiMngxYlc0Z1ZHRmliR1U5SW5CeWIyUjFZM1J6SWlCT1lXMWxQU0p3Y205a2RXTjBYMmxrSWlBdlBqeERiMngxYlc0Z1ZHRmliR1U5SW5CeWIyUjFZM1J6SWlCT1lXMWxQU0p1WVcxbElpQXZQanhEYjJ4MWJXNGdWR0ZpYkdVOUluQnliMlIxWTNSeklpQk9ZVzFsUFNKd2NtbGpaU0lnTHo0OEwwTnZiSFZ0Ym5NK1BDOVJkV1Z5ZVQ0OFVtVnpkV3gwVTJOb1pXMWhQanhFWVhSaFUyVjBJRTVoYldVOUluTnhiRVJoZEdGVGIzVnlZMlVpUGp4V2FXVjNJRTVoYldVOUltTnNhV1Z1ZEhNaVBqeEdhV1ZzWkNCT1lXMWxQU0pqYkdsbGJuUmZhV1FpSUZSNWNHVTlJa2x1ZERZMElpQXZQanhHYVdWc1pDQk9ZVzFsUFNKbWFYSnpkRjl1WVcxbElpQlVlWEJsUFNKVGRISnBibWNpSUM4K1BFWnBaV3hrSUU1aGJXVTlJbXhoYzNSZmJtRnRaU0lnVkhsd1pUMGlVM1J5YVc1bklpQXZQanhHYVdWc1pDQk9ZVzFsUFNKbGJXRnBiQ0lnVkhsd1pUMGlVM1J5YVc1bklpQXZQand2Vm1sbGR6NDhWbWxsZHlCT1lXMWxQU0p2Y21SbGNsOXBkR1Z0Y3lJK1BFWnBaV3hrSUU1aGJXVTlJbTl5WkdWeVgybDBaVzFmYVdRaUlGUjVjR1U5SWtsdWREWTBJaUF2UGp4R2FXVnNaQ0JPWVcxbFBTSnZjbVJsY2w5cFpDSWdWSGx3WlQwaVNXNTBOalFpSUM4K1BFWnBaV3hrSUU1aGJXVTlJbkJ5YjJSMVkzUmZhV1FpSUZSNWNHVTlJa2x1ZERZMElpQXZQanhHYVdWc1pDQk9ZVzFsUFNKeGRXRnVkR2wwZVNJZ1ZIbHdaVDBpU1c1ME5qUWlJQzgrUEM5V2FXVjNQanhXYVdWM0lFNWhiV1U5SW05eVpHVnljeUkrUEVacFpXeGtJRTVoYldVOUltOXlaR1Z5WDJsa0lpQlVlWEJsUFNKSmJuUTJOQ0lnTHo0OFJtbGxiR1FnVG1GdFpUMGlZMnhwWlc1MFgybGtJaUJVZVhCbFBTSkpiblEyTkNJZ0x6NDhMMVpwWlhjK1BGWnBaWGNnVG1GdFpUMGljSEp2WkhWamRITWlQanhHYVdWc1pDQk9ZVzFsUFNKd2NtOWtkV04wWDJsa0lpQlVlWEJsUFNKSmJuUTJOQ0lnTHo0OFJtbGxiR1FnVG1GdFpUMGlibUZ0WlNJZ1ZIbHdaVDBpVTNSeWFXNW5JaUF2UGp4R2FXVnNaQ0JPWVcxbFBTSndjbWxqWlNJZ1ZIbHdaVDBpUkc5MVlteGxJaUF2UGp3dlZtbGxkejQ4TDBSaGRHRlRaWFErUEM5U1pYTjFiSFJUWTJobGJXRStQRU52Ym01bFkzUnBiMjVQY0hScGIyNXpJRU5zYjNObFEyOXVibVZqZEdsdmJqMGlkSEoxWlNJZ0x6NDhMMU54YkVSaGRHRlRiM1Z5WTJVKyIgLz4NCiAgPC9Db21wb25lbnRTdG9yYWdlPg0KPC9YdHJhUmVwb3J0c0xheW91dFNlcmlhbGl6ZXI+ --extension ".repx"
defVar --name databaseConnection --type DbConnection --output
defVar --name hasResult --type Boolean
defVar --name path --type String
defVar --name result --type String
defVar --name connectionString --type String
getSpecialFolder --folder "Desktop" path=value
setVar --name "${connectionString}" --value "Server=(localdb)\\mssqllocaldb;Database=automation;User Id=<user>;Password=<pass>"
sqlServerConnect --connectionstring "${connectionString}"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS clients (client_id INTEGER PRIMARY KEY AUTOINCREMENT,first_name TEXT NOT NULL,last_name TEXT NOT NULL,email TEXT NOT NULL);"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS products (product_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,price REAL NOT NULL);"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS orders (order_id INTEGER PRIMARY KEY AUTOINCREMENT,client_id INTEGER,FOREIGN KEY(client_id) REFERENCES clients(client_id));"
sqlExecute --connection ${databaseConnection} --statement "CREATE TABLE IF NOT EXISTS order_items (order_item_id INTEGER PRIMARY KEY AUTOINCREMENT,order_id INTEGER,product_id INTEGER NOT NULL,quantity INTEGER NOT NULL,FOREIGN KEY(order_id) REFERENCES orders(order_id),FOREIGN KEY(product_id) REFERENCES products(product_id));"
sqlExecuteScalar --connection ${databaseConnection} --statement "SELECT COUNT(*) FROM orders;" result=value hasResult=hasresult
if --left "${hasResult}" --operator "Is_True" --negate
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO clients (first_name, last_name, email)\r\nVALUES\r\n(\'John\', \'Doe\', \'john.doe@example.com\'),\r\n(\'Jane\', \'Doe\', \'jane.doe@example.com\'),\r\n(\'Peter\', \'Parker\', \'peter.parker@example.com\'),\r\n(\'Bruce\', \'Wayne\', \'bruce.wayne@example.com\'),\r\n(\'Clark\', \'Kent\', \'clark.kent@example.com\');"
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO products (name, price)\r\nVALUES\r\n(\'Espresso\', 3.99),\r\n(\'Latte\', 4.99),\r\n(\'Capuccino\', 5.99),\r\n(\'Macchiato\', 4.50),\r\n(\'Americano\', 3.50),\r\n(\'Iced coffee\', 4.50),\r\n(\'Cold brew coffee\', 5.00),\r\n(\'Frappuccino\', 6.00),\r\n(\'Mocha\', 5.50),\r\n(\'White chocolate mocha\', 6.00);"
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO orders (client_id)\r\nVALUES\r\n(1),\r\n(2),\r\n(3),\r\n(4),\r\n(5);"
sqlExecute --connection ${databaseConnection} --statement "INSERT INTO order_items (order_id, product_id, quantity)\r\nVALUES\r\n(1, 1, 2),\r\n(1, 2, 1),\r\n(2, 3, 3),\r\n(2, 4, 1),\r\n(3, 5, 2),\r\n(3, 6, 1),\r\n(4, 7, 3),\r\n(4, 8, 1),\r\n(5, 9, 2),\r\n(5, 10, 1);"
endIf
printReport --usedefaultprinter --asset "${asset.report}" --mappings "{\"sqlDataSource\":\"${databaseConnection}\"}" --watermark "None"