45
Views
5
Comments
Solved
Dynamic Report creation from the screen
Question


Hi All,

Do you think is possible to create the new report from the screen without using Outsystems server studio? which mean every time need report, can just use the create to create, enter report name, sql, and filter. Save. that's it without any Outsystems server studio and compile and publish.

Any idea or sample proejct to guide me?


Users can create the report tru the screen.


For example:

in the "Report create page"

Name: <<Enter your new report name>>

SQL: <<paste your SQL>>

Filter: <<what is the filter>>

Activate to show in the report list: YES or NOT



When user enter

NAME: Movie Order Report

SQL: select a.name, b,location, b.price, b.contact, c.buyer, c.buyerage from

Customer a, Order b, Buyer C

where XXXX=XXXXX and CCCCC=CCCCC and ddddd=ddddd;

Filter: XXXXX="$sssss"

Filter: CCCCC<>"$ddddd"

Filter: ddddd in ('$vvvv')

Active : YES


Then SAVE <--- click to save


Then in the report list will show.


Movie Order Report <--click for the report


After the click, it will ask the user to enter $ssssss,$dddddd,$vvvv

after entering. The user will click Search.

The data will show on the screen and allow the user to click to get the excel report.


If you need another report again,

then do to "Report create page" to create a new report.

The user can amend the report too.


The report is pulled from the external DB.




mvp_badge
MVP
Rank: #2
Solution

Hi Jing,

In your first post, you refer to "pasting SQL", so no matter what permission you give, people can execute SQL on the database.

If you really want to go this route, take a look at the Advance Query Forge component, and perhaps also the Dynamic Sql Query Screen that uses this component.

mvp_badge
MVP
Rank: #19

Hi Jing,

Most likely what you want is possible with OutSystems. But you have to ask yourself if that is what you should try given the fact that there are off the shelf applications that exactly do that and allow you to connect to multiple data sources.

Another approach would be to expose your data in APIs and use a reporting tool to generate the reporting.

In the OutSystems Forge there is a component that lets you integrate OutSystems with Stimulsoft Reports.

https://www.outsystems.com/forge/component-overview/4840/stimulsoft-reportmanager

And here is the English version of the application with a short video explaining the features:

https://reqware.jp/english/stimulsoft-reportmanager

Regards,

Daniel

Rank: #10870

Hi Daniel,

Thanks for your information.

The system will run in our internal network. but the data is call from other database because it is from other system. it is safe before all run in our own network only.

I will go tru the link.


Regards,

Ryan

mvp_badge
MVP
Rank: #2

Hi Jing,

You would never ever ever allow users to execute random SQL statements on your database. Ever. If you are thinking "but I have a good case for this", then no, you're wrong. Allowing users to execute random SQL will allow them to view all data, whether they have the priviliges or not, it will allow them to alter the data, delete data, and so and so forth.

Secondly, this means users will have to have intricate knowledge of the data model. In general, that's also not something you want to burden users with. As a developer, you must be free to change the data model, and you can't if users rely on it.

Like Daniël said, to allow users to query data, use a reporting tool, or make custom reports.

Rank: #10870

Hi Killian Hekhuis,


Thanks for your concern. I am the IT who manage to create the new report.

And those use to view the report will given by permission. the role only able to get certain of report only.

I am the one give the role permission to access the report.

Thats y, i am really need it.

I am looking for the solution how to build it.


mvp_badge
MVP
Rank: #2
Solution

Hi Jing,

In your first post, you refer to "pasting SQL", so no matter what permission you give, people can execute SQL on the database.

If you really want to go this route, take a look at the Advance Query Forge component, and perhaps also the Dynamic Sql Query Screen that uses this component.